OSSECでSlackへのアラート通知を行わせる

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通知をするのならこれでもいいだろう。 他の実装方法もあるようだけど、公式でスクリプトも用意されてたので、ひとまずはこれで。