FreeBSD+ipfw+blacklistdを設定する

PC&FreeBSD

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アドレスがダンプ出来る。

ブログランキング・にほんブログ村へ

コメント

  1. Yamada,Kaz より:

    firewall_type=”open”

    ですが、”OPEN”としないと(小文字NG)機能しないようです。
    いきなり全パケット遮断されてsshのセッションが切れたので、コンソールから作業するような事になりました。

タイトルとURLをコピーしました