アンチ ブルート・フォースアタック

sshのbrute force attackに対して,今までカスタマイズのしやすさから,linuxでblocksshd
BlockSSHD download | SourceForge.net
を使っていましたが,pfをオフにしたFreeBSDでブルート・フォースに対抗したくなったので,PAMのレベルでIPアドレスベースでチェックするpam_afモジュールを入れてみました.
あらかじめ,ipfwをオンにしておく必要があります.

# sysctl -a | grep fw.enable
net.inet.ip.fw.enable: 1

となっているかとか,

# ipfw list

とやってエラーが出ないかどうか確認しておいて下さい.

ipfwが入っていれば,以下のようにしてインストールします.
http://mbsd.msk.ru/stas/pam_af.html

# wget http://mbsd.msk.ru/stas/pam_af-1.0alpha.tar.bz2
# tar xvf pam_af-1.0alpha.tar.bz2
# cd pam_af-1.0alpha
# make; make install
# pam_af_tool ruleadd -h '*' -a 5 -t 1y

そして/etc/pam.d/sshdにREADMEにもある,次の行を加えるとインストール終了です.

auth            requisite       /usr/local/lib/security/pam_af.so

わざとパスワードを間違えてsshでログインしようとすると,次のようにロックされます.

# pam_af_tool statlist
<hoststat>
        <host hostname='192.168.0.3'>
                <attempts>5</attempts>
                <last_attempt>Sat Sep  5 23:22:51 2009</last_attempt>
                <status>locked</status>
        </host>
</hoststat>

このattempsが5回というのは,pam_af_tool ruleaddの-aオプションで指定した値です.

丸一日置いておくと,こんな感じになりました.

# pam_af_tool statlist | grep status | sort | uniq -c
  53            <status>locked</status>
 598            <status>unlocked</status>

アタックのうち,一割はブロックしてくれたみたいです.

なお,ipfwをオンにしたらネットの通信が不可能になってあせった場合は,次のようにオールOKにしてみて下さい.
セキュリティ的にはもっとチューニングした方が良いですが.

# ipfw add 100 allow all from any to any