blacklistdはFreeBSD11から実装されたものである。
OSの機能として働くので、特別なインストールは必要が無い。
blacklistdは/var/log/messagesなどを見て攻撃を判定し、ipfwにその情報を渡す。
ipfwはその情報により当該IPアドレスをブロックする。
ipfwもblacklistdもインストールは不要なので、/etc/rc.comfに起動設定を行う。
firewall_enable="YES" firewall_type="OPEN" firewall_logging="YES" sshd_enable="YES" sshd_flags="-o UseBlacklist=yes" blacklistd_enable="YES" blacklistd_flags="-f" #blacklistd_flags="-r"
※firewall_type=”open” → firewall_type=”OPEN” に訂正しました
firewall_系がipfwの設定で、firewall_type=”open”は全解放状態で起動させる命令だ。
全解放でスタートさせないと、外部からログインが出来ない。
blacklistd_flagsは-fで再起動時に初期化、-rを付けると再起動時にもブロック情報を保持する。
blacklistdで監視が出来るのはSSH/FTP/SMTPである。
これらとipfwをインタフェースするためのソケットを作る。
# touch /etc/ipfw-blacklist.rc
SSHに関しての設定は、rc.confにsshd_flags=”-o UseBlacklist=yes“を追加すれば良い。
FTPは/etc/inetd.confに-Bオプションを付ける。
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l -B
これで設定は完了である。
inetdをリスタートすればblacklistdの監視が開始される。
# service inetd restart
postfixはFreeBSD本体のソフトではないので、連携させる作業が必要になる。
portsから入れている場合は、make confでBLACKLISTDのオプションをEnableにする。
make deinstall → make install として入れ替える。
動作確認は、ブロックされても影響のないIPアドレス(スマートフォンなど)からFTPあるいはSSHへの不正アクセスを繰り返せば良い。
なお25番および587番ポートへの攻撃が非常に多い。
02025 86563 5149178 deny tcp from table(port25) to any 25 02587 793096 47582654 deny tcp from table(port587) to any 587
ipfw -a list で上記リストが、ipfw table
ipfw table all list でテーブル内のIPアドレスがダンプ出来る。
コメント
firewall_type=”open”
ですが、”OPEN”としないと(小文字NG)機能しないようです。
いきなり全パケット遮断されてsshのセッションが切れたので、コンソールから作業するような事になりました。
ありがとうございます。
修正します。