Brute Force Attack対策
SSHのみならず、最近はFTPでも侵入を試みてる痕跡があるので両方とも対策
【環境】
- RedHat Linux 8.0
- ssh
- ProFTPD
- tcpsever (ucspiのやつ)
約2年前に気になって ssh については対策を施していたのですけど、 init.d で自動起動させてなかったからか対策するのを今までてっきり忘れてましたw ログを見るとFTPに対しての痕跡も残っていたのでこの機会(?)に両方対策します。
sshに対する対策
ヲレ鯖では ssh を tcpserver から起動させているので、ベースは2年前の対策と同様に、電脳趣味 さんのところにあるスクリプト(shutout_ssh.pl)を使用させていただきます。
【捕捉】 この shutout_ssh.pl は、sshのログを監視して、Brute Force Attack の痕跡を発見したら、tcpserver の tcprules を使ってそのIPを未来永劫アクセス拒否にちゃうというもので、正にヲレ環境にはぴったりなものなのデス。
・・・で、自動起動スクリプトはというと、kill 関係をどーやったらいいのか分からないので作ってません。てかヲレにはムリ(;´Д`)
ftpに対する対策
これも ProFTPD を tcpserver 経由で起動しているので、ssh の対策と同様に。ただし、Brute Force Attack と判断するログ内容が違う(当たり前)のでその辺をちょこっと改造。引っかけるキーワードは以下の3つにしてみました。
- Maximum login attempts
- no such user found from
- SECURITY VIOLATION
参照するFTPのログファイルは、/var/log/secure (syslogのやつ)。
IPホイホイ作成w
んで、攻撃してきたヴァカIPに対してささやかな報復処置として作成してみたのがこのIPホイホイ。んまぁ、そんな大それたものではなくてアクセス拒否したらそのIPをヲレWebで晒してみようかと思った次第でww
この辺から Plone ちっくなお話になるんですけど、拒否IPが追加する都度手動で更新なんてアフォらしいので、COREBlog2 用(なのかな?)の moblog スクリプト群をヒントに IP が追加されたら自動で晒してくれるようなものを作ってみた訳で。
そのリストはこちらでございます。つ IPホイホイ このリストにあるIPへ田代hうわなにをすqあwせdrftgyふじこlp;@:「」
今回作ったファイルとか設置方法とか
作った・・・というと些か語弊があると思いますが「対策に使用してるファイル」と言うべきなのかなぅ。
-
shutout_ssh.pl <perl script> (ssh用)
shutout_ftp.pl <perl script> (ftp用) -
設置場所:/usr/local/sbin (まあどこでもいいんですが)
パーミッション:実行権を与えといてくだしい
ssh(or ftp)のログを解析して、攻撃してきたIPに対するアクセス拒否とかIPホイホイ登録用スクリプトを実行するスクリプト。使用するばやいは以下の箇所を適宜変更してくだしい。
$g_cdbfile = "/etc/tcpserver.d/tcp.sshd.cdb";
$g_rulefile = "/etc/tcpserver.d/tcp.sshd";
$g_exec = "/usr/local/bin/tcprules $g_cdbfile $g_cdbfile.tmp < $g_rulefile";
$g_exec_py = "/opt/python2.4.4/bin/python /var/zope/bin/update_bl_ssh.py"; -
update_bl_ssh.py <python script> (ssh用)
update_bl_ftp.py <python script> (ftp用) -
設置場所:/var/zope/bin
shutout_*.pl から実行されて、IPホイホイ自動更新のアクションを掛けるスクリプト。例の如く、以下のところを適宜変更してくださいな。
tgt = 'blacklist_ssh' ←更新するページid
urlbase='http://username:pass@www.maruz.net/server_admin/' + tgt + '/'
↑ ↑ ↑
ploneのuser password ページへのURL -
auto_update_iplist.py <python script> (ssh,ftp共通)
-
設置場所:[ZMI]/portal_skin/custom/auto_update_list
実際にページを更新するすくりぷと。結構強引に内容を更新してるところもあるので変わらなかったらてきとーに変えて下さいw
あとは以下のコマンドを叩いて、各 shutout_*.pl を動かすと。
[root@ns1 sbin]# tail -F /service/sshd/log/main/current | /usr/local/sbin/shutout_ssh.pl >> /var/log/shutout_ssh.log &
[root@ns1 sbin]# tail -F /var/log/secure | /usr/local/sbin/shutout_ftp.pl >> /var/log/shutout_ftp.log &
参照させていただいたサイト
- セキュリティ用語事典[ブルートフォースアタック]
- 電脳趣味: sshの不正ログインの試みをシャットアウトしたい 〜その2〜
- 電脳趣味: sshの不正ログインの試みをシャットアウトしたい 〜その3〜
- COREBlog2 0.8bをリリース