今回は携帯のメール受信ブロックの監視でも
少し書きましたログ監視ツール『swatch』を使って
携帯メールの受信ブロックの監視を行なう方法を紹介したいと思います。
swatchはperlで書かれており、perlを先にインストールしておく必要があります。
インストール準備
swatchの最新版(3.2.3)は以下のURLからダウンロード。
http://sourceforge.net/projects/swatch/
swatchをインストールするにはモジュールとして以下の4つが必要になりますのでこちらもインストール。
Time::HiRes
File::Tail
Date::Parse
Date::Calc
Time::HiRes
http://search.cpan.org/~jhi/Time-HiRes-1.9715/HiRes.pm
File::Tail
http://search.cpan.org/~mgrabnar/File-Tail-0.99.3/Tail.pm
Date::Parse
http://search.cpan.org/~gbarr/TimeDate-1.16/lib/Date/Parse.pm
Date::Calc
http://search.cpan.org/~stbey/Date-Calc-5.4/Calc.pod
のURLからダウンロードするかCPANコマンドでインストールしてください。
# CPAN cpan> install Time::HiRes cpan> install File::Tail cpan> install Date::Parse cpan> install Date::Calc
swatchのインストール
# tar xvfz swatch-3.2.3.tar.gz # cd swatch-3.0.8 # perl Makefile.PL # make # make install
受信ブロックログ検知用の設定
設定の例はソースを展開した ./swatch-3.0.8/examples にありますが
今回はキャリアブロック用の設定を行ないます。
/root/swatch/conf/swatch.conf のファイルを新規作成、下記設定を記述。
watchfor /Connected_to_210\.153\.85\.241_but_connection_died/i pipe "/usr/local/bin/php -q /root/swatch/alert.php" watchfor /Connected_to_203\.138\.(180|181)\.([0-9]{1,3})_but_greeting_failed\.\/Remote_host_said:_421/i pipe "/usr/local/bin/php -q /root/swatch/alert.php" watchfor /Connected_to_222\.15\.69\.195_but_connection_died/i pipe "/usr/local/bin/php -q /root/swatch/alert.php" watchfor /Connected_to_123\.108\.236\.\d{1,3}_but_greeting_failed\.\/Remote_host_said:_421/i pipe "/usr/local/bin/php -q /root/swatch/alert.php" watchfor /Connected_to_202\.179\.203\.\d{1,3}_but_greeting_failed\.\/Remote_host_said:_421/i pipe "/usr/local/bin/php -q /root/swatch/alert.php" watchfor /Connected_to_202\.179\.204\.\d{1,3}_but_greeting_failed\.\/Remote_host_said:_421/i pipe "/usr/local/bin/php -q /root/swatch/alert.php" watchfor /Connected_to_210\.169\.171\.\d{1,3}_but_greeting_failed\.\/Remote_host_said:_421/i pipe "/usr/local/bin/php -q /root/swatch/alert.php" watchfor /Connected_to_210\.169\.176\.\d{1,3}_but_greeting_failed\.\/Remote_host_said:_421/i pipe "/usr/local/bin/php -q /root/swatch/alert.php" watchfor /Connected_to_210\.228\.189\.\d{1,3}_but_greeting_failed\.\/Remote_host_said:_421/i pipe "/usr/local/bin/php -q /root/swatch/alert.php" watchfor /Connected_to_210\.175\.1\.128_but_greeting_failed\.\/Remote_host_said:_421/i pipe "/usr/local/bin/php -q /root/swatch/alert.php" watchfor /Connected_to_210\.146\.60\.128_but_greeting_failed\.\/Remote_host_said:_421/i pipe "/usr/local/bin/php -q /root/swatch/alert.php"
watchfor がログにその文字列が現れた時、pipe に記述されたコマンドを実行表します。
watchfor /Connected_to_210\.153\.85\.241_but_connection_died/i pipe "/usr/local/bin/php -q /root/swatch/alert.php"
上の記述ですと 『Connected_to_210.153.85.241_but_connection_died』 という文字列が現れた時、
『/usr/local/bin/php -q /root/swatch/alert.php』というコマンドにパイプさせています。
わざわざPHPのプログラムに処理を渡していますがアラートメールを送信するだけで良ければ
watchfor /Connected_to_210\.153\.85\.241_but_connection_died/i mail=alert@hogehoge.com,subject=Swatch Carrier Block throttle 00:03:00
という書き方も出来ます。
ログが現れた場合、swatchで実行出来る内容は下記URLを参考にして下さい。
http://www.hope-net.jp/pukiwiki/index.php?Swatch
http://safe-linux.homeip.net/security/linux-swatch-02.html
swatch の起動ファイル
#! /bin/sh # # description: mail log monitor . /etc/rc.d/init.d/functions RETVAL=0 # See how we were called. case "$1" in start) echo -n "Starting Swatch: " /usr/bin/swatch -c /root/swatch/conf/swatch.conf -t /var/log/maillog >/dev/null 2>&1 & RETVAL=$? echo ;; stop) echo -n "Stopping Swatch: " killproc tail RETVAL=$? echo ;; restart) $0 stop $0 start RETVAL=$? ;; *) echo "Usage: swatch {start|stop|restart}" exit 1 esac exit $RETVAL
運用注意点
ログローテートされるログを監視対象にしている場合、ログローテートされた後も新しく生成されたログではなく、
古いログを読みにいくようです。
参考:http://www.marronkun.net/linux/security/swatch_1.html
ログローテート時に /etc/rc.d/init.d/swatch もrestart する必要があります。
/etc/logrotate.d/syslog を編集
/var/log/message { postrotate /etc/rc.d/init.d/swatch restart endscript }