IPv6 な環境で blacklistd(8) を動かしてみる
軽く web を dig ってみるとお手本となる設定例が 100% IPv4 しか出て来ん(執筆時点)
ここでは、単刀直入にお手本を書いておく所謂忘備録✌
rc.conf.local なトコ
blacklistd_enable=YES
blacklistd_flags=-f
firewall_enable=YES
firewall_type=OPEN
sshd_enable=YES
sshd_flags="-oport=3389 -oUseDNS=no -oUseBlocklist=yes"
言わずもがな、基本的な設定の例
一番上から今回の題材となる blacklistd を有効にして、daemon の再起動時にフィルタの記載されるデータベースを flash するスイッチを指定している
必要であれば真逆の動作する -r でもお好みに
次は ipfw(8) の設定で、試験をするから開けっ広げの設定をしておく🤫
勿論、最終的には firewall_type=OPEN よりも個別に好みのルールに従ったスクリプトを書く事が望ましいけど、それは他を当たってくださいw
今回は sshd(8) をターゲットにしています
しかもポートも標準の 22 から MS 方面で攻撃の的になりそうなポート 3389 を指定しているので、ある意味色んなログが取れるかも😱
sendmail とか postfix にも使えるが、その辺りも他を当たってくださいw
ipfw の小技
blacklistd には二つの firewall のカラクリに対応しているそうで、今回は古のリリースから使える ipfw(8) が使えるようにします
<ぼそ>ipf(8) は苦手な筆者</ぼそ>
ipfw_offset=2000
ファイルの存在を /usr/libexec/blacklistd-helper が見に行って、有ったらそのファイルを実行しに行くので、その中になにも無ければ ipfw のルールが標準の 2000 番台から登録されるそうで、オリジナルのルールに適応させるなら、環境変数 ipfw_offset に足されるルールの番号を書いておく事
#
# Blacklist rule
# adr/mask:port type proto owner name nfail disable
[local]
ssh stream * * * 3 24h
ftp stream * * * 3 24h
smtp stream * * * 3 24h
submission stream * * * 3 24h
#6161 stream tcp6 christos * 2 10m
3389 stream tcp6 * * 2 10m
* * * * * 3 60
# adr/mask:port type proto owner name nfail disable
[remote]
#129.168.0.0/16 * * * = * *
#6161 = = = =/24 = =
#* stream tcp * = = =
#3389 stream tcp * = = =
[2001:db8:aa55:e800::]/56:3389 * tcp6 * = * *
tcp port の 3389 に対する記述と IPv6 のネットワークに対するホワイトリストを書いておく
お手本じゃと address 2001:db8:aa55:e800:: netmask ffff:ffff:ffff:ff00:: としてます
後は良しなにw
OS の再起動するなり、各々の daemon の再起動で、試験が出来る環境になるので、適宜頑張りまっしょい✌