Webサーバで特定ファイルへのアクセスを監視し、メールで知らせる

#!/bin/sh

# Monitoring the specific access to the web server and send notification mail.

logfile=/path/to/your/server_log

if [ ! -f $logfile ]; then
echo "$logfile: File does not exist"
exit 1
fi

grep -i "/cgi-bin/php" $logfile | awk '$6 == "\"POST" {print $0}' > /tmp/access.log
cat /tmp/access.log | mail -s access_detected your@mail.com



Webサーバの特定ファイルへのアクセスを監視し、メールで知らせるスクリプトです。いちいちサーバにログインしてログを確認するのが面倒なときに使えるかもです。
例に挙げたのはCVE-2012-1823, CVE-2012-2311の脆弱性を利用した不正アクセスを検知するためのスクリプトです。

リクエストURLに「/cgi-bin/php」を含み、かつPOSTメソッドでのアクセスを検知したら、/tmp/access.logに該当のアクセスログを記述します。
awkコマンドの"$0"「すべてのカラム」を意味します。この場合はアクセスログに載っている送信元IPやアクセス先のファイル名、ステータスコード、リファラーなどのすべてのフィールドを出力します。
そして、/tmp/access.logの内容をmailコマンドに渡してメールを送信しています。
grepコマンドで i オプションを指定してリクエストのファイル名の大文字・小文字の区別を無効化してますが、これは無くてもいいかもしれません。
あとはスクリプトをcronで定期実行させれば、通知メールが定期的に届きます。

※スクリプトの最初の方で監視対象のログファイルを指定して、指定したログファイルが存在しなかったらエラーメッセージを表示して終了します。

以上。

2015年4月19日追記
以下のように地味に改良。

#!/bin/sh

# Monitoring the specific access to the web server and send notification mail.

logfile=/path/to/log
file=/path/to/file
old_logline=0
keyword=pattern
mailsubject=subject of mail

while true
do
if [ ! -f $logfile ]; then
echo "$logfile: File does not exist"
exit 1
fi

current_logline=$(grep $keyword $logfile | wc -l)

while [ $current_logline -ne $old_logline ]
do
grep $keyword $logfile | awk '{print $0}' >> $file
cat $file | mail -s $mailsubject example@mail.com
old_logline=$current_logline

done
done



変更点
while文で常にスクリプトを回すことによってログ監視のリアルタイム性をあげた。

この記事へのComments:

http://elnablong.blog.fc2.com/blog-category-0.html : 2017/07/31 (月) 08:08:51

It's actually a great and useful piece of info. I am happy that you shared this helpful information with
us. Please stay us up to date like this. Thanks
for sharing.

管理人のみ通知 :

Trackbacks:


プロフィール

トニヒコ

Author:トニヒコ
趣味は旅行と読書とマンガ。
将来の夢はコスモポリタン!

リンク・フリーです。

My hobby is traveling and reading(include manga).
My dream is to become cosmopolitan!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
スポンサード リンク
マクロミルへ登録
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR