IPAが配布しているiLogScannerを使ってApacheのログを分析してみました。
実際の攻撃を想定して自動化したいと思います。
ツール自体の使い方も、自動実行のスクリプトをcronに登録することもできたが問題があります。
Apacheのログは時間ごとに大きくなりますし、自動実行でその都度丸ごとログを読み込んだのでは、前に検出した異常も再度検出されて報告されてしまいます。
無駄は省きたいと思います。
そこで、仮に1時間ごとに分析を行うとして(この時間間隔が適切かどうかはさておき)
1時間ごとのログを抽出して、これを読みに行くようにします。
異常がある場合はメールで内容を知らせます>
そこで、1時間ごと(処理を実行した現在時間から1時間前)のログを抽出するスクリプトを作成します。
前に、時間別のアクセス集計用に作成したスクリプトを応用してみました。
シェルスクリプトを示します。
1hour agoのところを変えれば、何時間でも、何分でも自分の環境に合わせた運用が可能です。
ただし、分析用自動実行のスクリプトのcronもそれに合わせて変更しないといけません。
当然ですが・・・。
#!/bin/bash
LANG=C
TMPTIME=`date --date "1hour ago" "+%d/%b/%Y:%H:%M:%S"`
grep -F " " /var/log/apache2/access.log | awk '{print $0}' |
awk --assign awk_time1="$TMPTIME" 'substr($4,2,21)>awk_time1' |
awk '{print $0}' > /var/share/LastHour.log
ログを保存するパス名やファイル名は各自で変更してください。
iLogScanner解析結果レポートは、長々と説明が続きますので、異常があった場合のメール送信には最後の20行程度を本文とすれば十分です。
(もちろん、検出される異常が多い場合はこの限りではありません。実際の運用状況に合わせてください。)