OSSECでは、アラート発生と同時に任意のコマンドを実行させることが可能だ。 これを利用して、リアルタイムでのファイル改ざんを検知したらSlackに通知させるよう設定することもできる。 この際、公式ですでにSlack用のスクリプトがすでに作成されているので、今回はこれを利用してやる。 バージョンによっては配置されていないかもしれないので、その場合は事前にwgetなりで取得しておこう。 (+スクリプト内で直接WebHookのURLとかユーザを変数で指定してるので、その辺も設定しておく。「SITE」がWebHookのURL。)
wget https://raw.githubusercontent.com/ossec/ossec-hids/master/active-response/ossec-slack.sh -P /var/ossec/active-response/bin/ossec-slack.sh
chmod 750 /var/ossec/active-response/bin/ossec-slack.sh
OSSECの設定ファイル(/var/ossec/etc/ossec.conf)にて、「<command></command>
」および「<active-response></active-response>
」の設定を追記してやる。
<ossec_config>
....
<command>
<name>ossec-slack</name>
<executable>ossec-slack.sh</executable>
<expect></expect> <!-- no expect args required -->
<timeout_allowed>no</timeout_allowed>
</command>
....
<active-response>
<command>ossec-slack</command>
<location>local</location>
<level>3</level>
</active-response>
....
</ossec_config>
設定ファイル編集後、OSSECを再起動する。
/var/ossec/bin/ossec-control restart
ファイル改ざんのリアルタイム検知開始後、ファイルをいじった結果が以下。
プロセス再起動直後に結構ログが流れるので、その辺は注意したほうがいいかも? 個人的にはGraylogあたりにログを流して、そこでStreamの設定してSlackに通知させる方が好身なのだけど、単体のサーバでSlack通知をするのならこれでもいいだろう。 他の実装方法もあるようだけど、公式でスクリプトも用意されてたので、ひとまずはこれで。