先に投稿したiLogScannerを使ったApacheのログ分析について機能を追加しました。
異常があった場合メールで知らせるのは良いとして、いつもすぐチェックできるわけではないので
メール送信と同時に、該当IPからのアクセスを遮断する設定を追加してみました。
必要なことは
1.解析結果のログから、IPアドレス部を取り出す。
/usr/bin/nkf -w $LOGFILE | grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' | awk '{print $4}'
ログファイルを文字変換してIPアドレス表記にマッチさせ第4項目(IPアドレス部分)を取り出す。
2.取り出したIPアドレスをファイルに保存する。
前項を > 保存ファイル名
で保存する。
3.保存したファイルから1行ずつIPアドレスを取り出し、アクセス遮断処理をする。(件数分繰り返し)
while read line
do
変数 $lineを使って、アクセス遮断処理を記述する
done < 保存ファイル名
の手順となります。
具体的な処理内容は環境に合わせます。
例えば、UbuntuのUFWを使うなら
sudo ufw insert 1 deny from $line to any
というような内容になります。
※コメント投稿者のブログIDはブログ作成者のみに通知されます