ファイル改ざん検知ツールを導入するTipsです。
改竄検知がシステム要件に入る場合があります。複数の検知ツールを組み合わせるとより効果的です。プラグイン等の脆弱性で変なファイルが混入されてしまった場合などすぐに異常を検知できます。
AIDEのインストール
1 |
# yum install aide |
1 2 3 4 5 6 7 8 |
vi /etc/aide.conf #追加設定 対象除去 !/var/log/.*~ !/dev !/tmp !/proc !/sys |
データファイル作成 ※初期インストール状態で 1~2分程度かかる
1 2 3 4 5 |
# aide -i AIDE, version 0.15.1 ### AIDE database at /var/lib/aide/aide.db.new.gz initialized. |
リネーム
1 |
# mv -f /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz |
改竄チェック
1 |
# touch aidetest.txt |
改ざんチェック!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# aide -C AIDE 0.15.1 found differences between database and filesystem!! Start timestamp: 2017-09-26 15:55:16 Summary: Total number of files: 51192 Added files: 2 Removed files: 0 Changed files: 1 --------------------------------------------------- Added files: --------------------------------------------------- added: /root/aidetest.txt added: /var/log/lastlog --------------------------------------------------- Changed files: --------------------------------------------------- changed: /root/aidetest.txt --------------------------------------------------- Detailed information about changes: --------------------------------------------------- |
aideに-uオプションをつけると、
ファイルの改ざんチェックとDBの更新を行ってくれます。
1 |
# aide -u |
定期実行設定
メールコマンドをインストール
1 |
# yum install mailx |
定期チェックスクリプト作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# vi /root/aidechecker.sh #!/bin/bash MAILTO_1=hoge1@example.net #MAILTO_2=hoge2@example.net MAILFROM=AIDE@`hostname` LOGFILE=/var/log/aide/aide.log AIDEDIR=/var/lib/aide /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 echo "All Systems Look OK" | /bin/mail -s "AIDE OK" $MAILTO_1 $MAILTO_2 else echo "$(egrep "added|changed|removed" $LOGFILE)" | /bin/mail -s "AIDE DETECTED CHANGES" -r $MAILFROM $MAILTO_1 $MAILTO_2 fi exit |
正常時はメールさせないなど、細かな挙動についてはスクリプトをカスタマイズして下さいね!
権限の付与を行います。
1 |
# chmod +x /root/aidechecker.sh |
Crontabの設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# vi /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin #MAILTO=root MAILTO='' # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed ## 4時20分にAIDEにより改ざんチェックを行う 20 4 * * * root /root/aidechecker.sh > /dev/null 2>&1 |
反映を行います。
1 2 |
# systemctl enable crond # systemctl restart crond |
ファイルが増えたり、変更されている場合はレポートに出ます。
お疲れ様です。