Amazon Linux2にインストールしたOSSECの動作確認をしてみた

# はじめに
[前回の記事](https://qiita.com/Diavolo/items/7a5391578abe5ca67536)では、Amazon Linux2にOSSECをLocalインストールしました。今回はOSSECの動作を確認してみたいと思います。OSSECのインストール手順にご興味のある方は以下の記事を参照ください。
- [Amazon Linux2にOSSECをインストールした（OSSEC-Serverインストール）](https://qiita.com/Diavolo/items/81ce9ecdfca2a7c6b1a4)
- [Amazon Linux2にOSSECをインストールした（OSSEC-Agentインストール）](https://qiita.com/Diavolo/items/2bab537c36203049188d)
- [Amazon Linux2にOSSECをインストールした（OSSEC-Localインストール）](https://qiita.com/Diavolo/items/7a5391578abe5ca67536)

# まずはOSSECの起動状態を確認
```
# /var/ossec/bin/ossec-control status
ossec-monitord is running...
ossec-logcollector is running...
ossec-syscheckd is running...
ossec-analysisd is running...
ossec-maild is running...
ossec-execd is running...
```
is runningですので、OSSECは起動しています。

# 動作確認方法について
OSSECは異常を検知すると、/var/ossec/logs/alerts/alerts.log にアラートを出力します。今回は、このファイルにアラートが出力されることを確認します。

# 事前準備について
今回は存在しないページにアクセスがあった場合にOSSECがアラートを出力するかを確認したいので、Apacheをインストールします。
```
# yum install httpd
# systemctl start httpd
# systemctl status httpd
# systemctl enable httpd
```

また、OSSECがApacheのアクセスログを監視するように、OSSECのコンフィグを設定します。具体的には、以下を/var/ossec/etc/ossec.confに追加します。
```
# cd /var/ossec/etc
# vi ossec.conf
  <localfile>
  <log_format>apache</log_format>
  <location>/var/log/httpd/access_log</location>
  </localfile>

  <localfile>
  <log_format>apache</log_format>
  <location>/var/log/nginx/access.log</location>
  </localfile>

  <localfile>
  <log_format>apache</log_format>
  <location>/var/log/nginx/error.log</location>
  </localfile>
```

# OSSECを再起動します。
```
# /var/ossec/bin/ossec-control restart
```

# 動作確認の手順と確認結果について
### 存在しないページにブラウザからアクセスする
- ブラウザのアドレスバーにEC2のIPアドレス/aaaaaaa.htmlを入力する。
- /var/ossec/logs/alerts/alerts.logを確認する。
```/var/ossec/logs/alerts/alerts.log
** Alert 1646126262.7129: - web,accesslog,
2022 Mar 01 09:17:42 ip-EC2のIPアドレス->/var/log/httpd/access_log
Rule: 31101 (level 5) -> 'Web server 400 error code.'
Src IP: ブラウザを起動したPCのIPアドレス
ブラウザを起動したPCのIPアドレス - - [01/Mar/2022:09:17:41 +0000] "GET /aaaaaa.html HTTP/1.1" 404 196 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"
```
### EC2のSSH接続に失敗する
- SSH接続に失敗させます。今回はTeratermログインマクロのpemを別マシンのpemを参照するように編集します。（すいません、詳細な手順は省きます。）
- /var/ossec/logs/alerts/alerts.logを確認する。
```/var/ossec/logs/alerts/alerts.log
** Alert 1646128574.11627: mail  - syslog,errors,
2022 Mar 01 09:56:14 ip-EC2のIPアドレス->/var/log/secure
Rule: 1002 (level 2) -> 'Unknown problem somewhere in the system.'
Mar  1 09:56:13 ip-EC2のIPアドレス sshd[5292]: error: AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys ec2-user SHA256:hogehogehogehogehogehogehogehoge/fugafuga failed, status 22
```

### その他 /etc/postfix/main.cfを変更したとき
- /var/ossec/logs/alerts/alerts.logを確認する。
```/var/ossec/logs/alerts/alerts.log
** Alert 1646125562.2090: mail  - ossec,syscheck,
2022 Mar 01 09:06:02 ip-EC2のIPアドレス->syscheck
Rule: 550 (level 7) -> 'Integrity checksum changed.'
Integrity checksum changed for: '/etc/postfix/main.cf'
Size changed from '27176' to '27437'
Old md5sum was: 'hogehogehogehogehogehogehogehogehogehogehogehoge'
New md5sum is : 'fugafugafugafugafugafugafugafugafugafugafugafuga'
Old sha1sum was: 'hogehogehogehogehogehogehogehogehogehoge'
New sha1sum is : 'fugafugafugafugafugafugafugafugafugafuga'
```

### その他 Apacheをインストールしたとき
- /var/ossec/logs/alerts/alerts.logを確認する。
```/var/ossec/logs/alerts/alerts.log
** Alert 1646125961.3335: mail  - syslog,yum,config_changed,
2022 Mar 01 09:12:41 ip-EC2のIPアドレス->/var/log/messages
Rule: 2932 (level 7) -> 'New Yum package installed.'
Mar  1 09:12:40 ip-EC2のIPアドレス yum[3481]: Installed: httpd-tools-2.4.52-1.amzn2.x86_64
```
他にもいろいろ関連したアラートが出ていましたが、一部のみ掲載します。
Apacheのグループとユーザ追加のアラート等も出ていました。
- /var/ossec/logs/alerts/alerts.logを確認する。
```/var/ossec/logs/alerts/alerts.log
** Alert 1646125961.4652: mail  - syslog,adduser
2022 Mar 01 09:12:41 ip-EC2のIPアドレス->/var/log/secure
Rule: 5901 (level 8) -> 'New group added to the system'
Mar  1 09:12:41 ip-EC2のIPアドレス groupadd[3496]: new group: name=apache, GID=48

** Alert 1646125961.4893: mail  - syslog,adduser
2022 Mar 01 09:12:41 ip-EC2のIPアドレス->/var/log/secure
Rule: 5902 (level 8) -> 'New user added to the system'
Mar  1 09:12:41 ip-EC2のIPアドレス useradd[3501]: new user: name=apache, UID=48, GID=48, home=/usr/share/httpd, shell=/sbin/nologin
```

他にこんなのも出ていました。
```/var/ossec/logs/alerts/alerts.log
** Alert 1646128672.11989: mail  - syslog,sshd,authentication_failed,
2022 Mar 01 09:57:52 ip-EC2のIPアドレス->/var/log/secure
Rule: 5758 (level 8) -> 'Maximum authentication attempts exceeded.'
Src IP: xxx.xxx.xxx.xxx
Src Port: 57055
User: root
Mar  1 09:57:50 ip-EC2のIPアドレス sshd[5313]: error: maximum authentication attempts exceeded for root from xxx.xxx.xxx.xxx port 57055 ssh2 [preauth]
```
who is で　Src IPを調べたら、どこの国のサーバーからのアクセスか分かります。

```/var/ossec/logs/alerts/alerts.log
** Alert 1646128672.12381: - syslog,access_control,authentication_failed,
2022 Mar 01 09:57:52 ip-EC2のIPアドレス->/var/log/secure
Rule: 2501 (level 5) -> 'User authentication failure.'
Mar  1 09:57:50 ip-EC2のIPアドレス sshd[5313]: Disconnecting: Too many authentication failures [preauth]
```

```/var/ossec/logs/alerts/alerts.log
** Alert 1646129521.12669: - web,accesslog,
2022 Mar 01 10:12:01 ip-EC2のIPアドレス->/var/log/httpd/access_log
Rule: 31101 (level 5) -> 'Web server 400 error code.'
Src IP: xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx - - [01/Mar/2022:10:11:59 +0000] "GET /.env HTTP/1.1" 404 196 "-" "Mozilla/5.0 (Linux; U; Android 4.4.2; en-US; HM NOTE 1W Build/KOT49H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/11.0.5.850 U3/0.8.0 Mobile Safari/534.30"

** Alert 1646129521.13107: - web,accesslog,
2022 Mar 01 10:12:01 ip-EC2のIPアドレス->/var/log/httpd/access_log
Rule: 31101 (level 5) -> 'Web server 400 error code.'
Src IP: xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx - - [01/Mar/2022:10:11:59 +0000] "POST / HTTP/1.1" 404 196 "-" "Mozilla/5.0 (Linux; U; Android 4.4.2; en-US; HM NOTE 1W Build/KOT49H) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/11.0.5.850 U3/0.8.0 Mobile Safari/534.30"
```
UCBrowserって、スマホのブラウザのようですね。私はEC2にスマホからアクセスしていないです。

### ポートのオープン/クローズもアラート検知するようです。
```/var/ossec/logs/alerts/alerts.log
** Alert 1646125987.5438: mail  - ossec,
2022 Mar 01 09:13:07 ip-EC2のIPアドレス->netstat -tan |grep LISTEN |egrep -v '(127.0.0.1| \\1)' | sort
Rule: 533 (level 7) -> 'Listened ports status (netstat) changed (new port opened or closed).'
ossec: output: 'netstat -tan |grep LISTEN |egrep -v '(127.0.0.1| \\1)' | sort':
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::111                  :::*                    LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 :::80                   :::*                    LISTEN
Previous output:
ossec: output: 'netstat -tan |grep LISTEN |egrep -v '(127.0.0.1| \\1)' | sort':
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::111                  :::*                    LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
```

# おわりに
今回、OSSECの動作確認をしましたが、自分の動作確認以外でも、アラートを検知していることに、少し驚きました。（戸惑いました。）
個人利用のEC2にもセキュリティ対策は必要なのか、、、と改めて認識しました。では、また。