FreeBSD blacklistd ipfw

blacklistd(8)の保持しているルールはblacklistclt(8)コマンドで次のように確認できます。システムを再起動した段階では次のようになんのルールも入っているはずです。

図 まだ何も検出していない状態のblacklistd(8)

# blacklistctl dump -a
        address/ma:port id      nfail   last access
#

blacklistd(8)の設定は/etc/blacklistd.confです。このファイルはデフォルトでは次のようになっています。この場合、sshにおける認証が3回失敗すると以後24時間はアクセスできない状態になります。

リスト blacklistd(8)の設定ファイルである/etc/blacklistd.conf

# $FreeBSD: releng/11.1/etc/blacklistd.conf 301226 2016-06-02 19:06:04Z lidl $
#
# Blacklist rule
# adr/mask:porttype	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
*		*	*	*		*	3	60

# adr/mask:port	type	proto	owner		name	nfail	disable
[remote]
#129.168.0.0/16	*	*	*		=	*	*
#6161		=	=	=		=/24	=	=
#*		stream	tcp	*		=	=	=

第113回 blacklistd(8)を使ってsshd DoS攻撃を防止する方法 | gihyo.jp

デフォルト 3回失敗→disable無効期間 60(s)

「ポート」はポート番号ないしはポート名。ポート名は /etc/services をもってポート番号を解釈する。
blacklistd 始めました - Qiita 2020

sshのポートを22222に変更した場合

22222		stream	*	*		*	3	24h

を追加すると。3回失敗で24h無効

sudo ipfw table port22 list

Create the sentinal file detected by the blacklistd-helper daemon to enable ipfw packet filtering commands. Use a non-default offset value, as the default rules for the "workstation" configuration end above rule 2000.

echo "ifpw_offset=4000" > /etc/ipfw-blacklist.rc

FreeBSD 11.0 Blacklistd Notes

see /usr/libexec/blacklistd-helper
デフォルトのipfw_offset=2000の場合ssh 22だと2000+22で2022

# Allow TCP through if setup succeeded
ipfw -q add pass tcp from any to any established
のルールを入れる場合は2022以降になるようにする
ipfw -q add 10000 pass tcp from any to any established

ブロックリストに登録されたIPを接続可にする

確認
sudo blacklistctl dump -a

blacklistd.confのホワイトリストに追加

sudo vi etc/blacklistd.conf

# adr/mask:port type    proto   owner           name    nfail   disable
[remote]
xxx.xxx.xxx.xxx       *       *       *               =       *       *

sudo /etc/rc.d/blacklistd restart

sudo ipfw table port22 delete xxx.xxx.xxx.xxx/32

ただ単にホワイトリストをつくって /etc/blacklistd.conf に入れておけば終わりです。
FreeBSD/blacklistd 運用について - Qiita

Q.やっべ、自分の接続元IPアドレスがブロックリストに登録されてしまった!
A.大丈夫だ。問題無い。現在 blocklistctl に解除する機能が無いので ipfw table port22 delete XXX.XXX.XXX.XXX/32 とコマンドを打って消そう!
なお拒否期限が残ってる間は blacklistd を再起動する度に登録されるのでよろしく!

blacklistd 始めました - Qiita