【CentOS】侵入検知したらSlack通知する


■環境

CentOS 7.4
AIDE 0.15.1


AIDEという侵入検知ツールを導入し、検査結果をSlackに通知するようにします。

AIDEインストール

yum install -y aide  

AIDE設定

vim /etc/aide.conf  

95行目辺りより監視対象ディレクトリの設定があります。
設定値の記載方法は以下の通り。

/{DIR_PATH}/ {CHECK_METHOD} #監視対象に含める  
!/{DIR_PATH}/ #監視対象から除外する

上記の『DIR_PATH』の部分に対象のディレクトリパスを記載し、
『CHECK_METHOD』に監視方法を記載します。

監視方法については本設定ファイルの95行目以前に記載があるので、そちらを参照してください。
とりあえずAIDE 0.15.1では「CONTENT_EX」にしておくのが無難そうです。

監視対象の設定が完了したら、AIDEのデータベースを初期化します。
※以下コマンド実行後、結構待ちます。

aide -i  

自動監視設定

AIDEでスキャンを実行し、結果をSlack通知するスクリプトを作成します。
仮に、/opt/aide_scan.shという名前で作るとします。

vim /opt/aide_scan.sh  

シェルスクリプトの中身は以下のようにします。

#!/bin/bash  
set +e  
  
##### Settings  
## AIDE  
LOGFILE="/var/log/aide/aide.log"  
AIDEDIR="/var/lib/aide"  
## Slack  
URL="https://hooks.slack.com/services/AAAAAAAA/BBBBBBBB/CCCCCCCC"  
TO="#aide"  
EMOJI=":cop:"  
NAME="AIDE-COP"  
  
##### Run AIDE Scan  
/usr/sbin/aide  -u > $LOGFILE  
cp $AIDEDIR/aide.db.new.gz $AIDEDIR/aide.db.gz  
x=$(grep "Looks okay" $LOGFILE | wc -l)  
if [ $x -eq 1 ]; then  
    MSG="OKだよ"  
else  
    MSG="侵入検知!詳細は[${LOGFILE}]を見てね"  
fi  
  
##### Send To Slack  
payload="payload={\"channel\": \"${TO//\"/\\\"}\", \"username\": \"${NAME//\"/\\\"}\", \"text\": \"${MSG//\"/\\\"}\", \"icon_emoji\": \"${EMOJI}\"}"  
curl -m 30 --data-urlencode "${payload}" $URL -A 'zabbix-slack-alertscript / https://github.com/ericoc/zabbix-slack-alertscript'  

スクリプトの設定項目は以下の通りです。

項目 内容
LOGFILE AIDEの検査結果を出力するログファイルです。
AIDEDIR AIDE本体のディレクトリです。aide.confの設定に合わせてください。
URL Slackの『Incoming WebHooks』のURLです。詳細はコチラ
TO メッセージを送るSlackのチャンネル
EMOJI Slack上で表示される絵文字
NAME Slack上で表示される名前

作成したスクリプトを1日1回cronで回します。
以下はcronの設定例です。

0 10 * * * /bin/sh /opt/aide_scan.sh > /dev/null 2>&1  

これで1日1回AIDEが侵入検知してくれるようになります。