Failed password for root from 24.117.88.143 port 3443 ssh2だの
Illegal user test from 65.37.37.15 Illegal user admin from 216.55.154.32 Illegal user mysql from 213.199.101.181だののログがうざい。
どうやら片っ端からsshdに対してログインするスクリプトがあるようだ。
そこでお手軽にswatchを使って/var/log/auth.logを監視して、ipfilterで該当IPを自動的にblockするように設定する。
portinstall security/swatchなどでインストールする。
/usr/local/sbin/ipfilter.sh
#!/bin/sh /bin/echo "block in on ng0 from `/bin/echo $2 | /usr/bin/cut -d' ' -f$1`/32 to a ny" | /sbin/ipf -f -/root/.swatchrc
watchfor /Failed password for root from/
mail=root,subject=Failed_password_for_root_from
exec /usr/local/sbin/ipfilter.sh 12 $*
#
watchfor /Illegal user/
mail=root,subject=Illegal_user
exec /usr/local/sbin/ipfilter.sh 11 $*
mailは動作確認が出来た後に、うるさければコメントアウトしてもいいかも。外向けインターフェースはnet/mpdを使っているからng0だけど、pppを使っていたりする場合はtun0など適切に変える。
またipfilterではなくてipfwを使うときはipfilter.shを
#!/bin/sh /sbin/ipfw add 1 deny all from `/bin/echo $2 | /usr/bin/cut -d' ' -f$1`:255.255.255.255 to anyなどと変える。
そして/etc/newsyslog.confを1日1回ローテートするように設定。
/var/log/auth.log 600 99 * @T00 Zswatchを起動する。rc.dで起動スクリプトを書いても良いが、rootでcrontab -eを実行して下記のように@rebootを指定してもよい。
@reboot /usr/local/bin/swatch --config-file=/root/.swatchauthrc --tail-file=/var /log/auth.log -r 00:01 > /dev/null &-rは再起動する時刻を指定。newsyslogでログがローテートする時間に合わせる。



[ コメントする ]