ファイルの改ざん検知といえばTripwireやAIDEが有名だが、これらの場合リアルタイム(オンアクセス)での検知が行えない(厳密にはTripwireの場合Enterpriseプランなら可能)。 で、OSSECであればリアルタイムでの検知が行えるようなので、今回はその設定を行う。 OSSECについては、事前にこちらの内容でサーバ・エージェント方式でのインストールが完了している状態とする。

設定自体は簡単で、対象のOSSECサーバの設定ファイル(/var/ossec/etc/ossec.conf)で、「<syscheck><directories>」に以下のように「realtime="yes"」を追記してやる。 対象ディレクトリを増やす場合は、「<directories>」にカンマ区切りで記述してやればよい。 無視するファイルやディレクトリについては、「<ignore>」で指定してやる。

/var/ossec/etc/ossec.conf
<syscheck> <!-- Frequency that syscheck is executed -- default every 20 hours --> <frequency>72000</frequency> <!-- Directories to check (perform all possible verifications) --> <directories check_all="yes" realtime="yes">/etc,/usr/bin,/usr/sbin</directories> <directories check_all="yes" realtime="yes">/bin,/sbin</directories> <!-- Files/directories to ignore --> <ignore>/etc/mtab</ignore> <ignore>/etc/hosts.deny</ignore> <ignore>/etc/mail/statistics</ignore> <ignore>/etc/random-seed</ignore> <ignore>/etc/adjtime</ignore> <ignore>/etc/httpd/logs</ignore> </syscheck>

変更完了後、OSSECの再起動を行う。

systemctl restart ossec-hids

OSSEC再起動後、ログ(/var/ossec/logs/ossec.log)に「ossec-syscheckd: INFO: Real time file monitoring started.」と表示されてからリアルタイムでのファイル監視が始まる。 プロセス起動時のスキャンが行われてからリアルタイムファイル監視が始まるので、ファイル数が多かったりすると相応に時間がかかるので注意。

ファイルの変更については、初期状態では「/var/ossec/logs/alerts/YYYY/Month/ossec-alerts-XX.log」に出力される。

[root@BS-PUB-SEC ~]# tail -F /var/ossec/logs/alerts/2017/Jan/ossec-alerts-05.log
New md5sum is : 'c772dbc4eac725769598bbaa8f9b9f28'
Old sha1sum was: '7335999eb54c15c67566186bdfc46f64e0d5a1aa'
New sha1sum is : '1f34db6d0eb6518134b71d465aaf6f8a8cdfc873'

** Alert 1483574667.361700: mail  - ossec,syscheck,
2017 Jan 05 09:04:27 BS-PUB-SEC->syscheck
Rule: 553 (level 7) -> 'File deleted. Unable to retrieve checksum.'
File '/etc/hosts' was deleted. Unable to retrieve checksum.