ニフティというか、infoweb配下のIPアドレスなので、さくらVPSほどの攻撃は受けない。しかし、しばらくipアドレスが変わらなかったりすると、sshとかsmtp-authのポートめがけて、アタックが来ることがある。
そこで、Fail2banを構成することとした。
pkg update && pkg install py38-fail2ban
Debianでは定番通りiptable にNGアドレスが蓄積されるようにしたが、FreeBSDに対してはpfで制御するようにした。
まずは/etc/pf.confの設定;
見通しが悪いのでファイル全体を下記;
cat /etc/pf.conf
# define macros for each network interface
ext_if = "ue0"
icmp_types = "echoreq"
allproto = "{ tcp, udp, ipv6, icmp, esp, ipencap }"
privnets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"
set loginterface $ext_if
scrub in on $ext_if no-df random-id
# Anchor for fail2ban
anchor "f2b/*"
イーサデバイス名はrpi3では"ue0"。rpi4では"genet0"とする。(amd64ではハード構成に応じて) また、anchor "f2b/*" として、Fail2banで検知したホストをpfに連携するオマジナイを仕込む。
ウマく動くかテスト。
/etc/rc.d/pf start
ウマく動くようであれば、Fail2banのインストールと設定に移る。
root@fbsd:~ # pkg search fail2ban
pkg install py311-fail2ban-1.1.0Scans log files and bans IP that makes too many password failures
root@fbsd:~ # pkg install -y pkg install py311-fail2ban-1.1.0
として"py38-fail2ban"をインストールする。続いて/usr/local/etc/fail2ban/jail.d 以下に、下記3つのファイルを作成する。
root@fbsd:/usr/local/etc/fail2ban/jail.d # ls -al
total 16
drwxr-xr-x 2 root wheel 512 May 11 13:49 .
drwxr-xr-x 6 root wheel 1024 May 11 13:16 ..
-rw-r--r-- 1 root wheel 162 May 11 13:51 postfix-pf.conf
-rw-r--r-- 1 root wheel 157 May 11 13:38 ssh-pf.conf
root@fbsd:/usr/local/etc/fail2ban/jail.d # cat ssh-pf.conf
[sshd]
mode = aggressive
enabled = true
action = %(action_mw)s
filter = sshd
logpath = /var/log/auth.log
findtime = 600
maxretry = 3
bantime = 86400root@fbsd:/usr/local/etc/fail2ban/jail.d # cat postfix-pf.conf
[postfix]
mode = aggressive
enabled = true
action = %(action_mw)s
backend = %(postfix_backend)s
logpath = %(postfix_log)s
findtime = 3600
maxretry = 3
bantime = 2d
root@fbsd:/usr/local/etc/fail2ban/jail.d # cat dovecot-pf.conf
[dovecot]
mode = aggressive
enabled = true
action = %(action_mw)s
backend = %(dovecot_backend)s
logpath = %(dovecot_log)s
findtime = 3600
maxretry = 3
bantime = 2d
root@fbsd:/usr/local/etc/fail2ban/jail.d #
1つはsshd用、もう一つはpostfix用だ。動作試験は
/usr/local/etc/rc.d/fail2ban start
になる。最後に/etc/rc.confの末尾に追加。
# pf and fail2ban
pf_enable="YES"
pf_flags=""
pflog_enable="YES"
pf_rules="/etc/pf.conf"
fail2ban_enable="YES"
こんな感じ。
ちゃんと動いているようだ。
2025年2月19日 追記
jail.d以下のファイルで、actionの部分が変わった。
action = %(action_mw)s
と定義する。
コメント