Alterando as configurações do fail2ban para bloquear com pf
Olá, sou um incompetente. Hoje é um artigo de incompetência suprema.
O quê!? Há uns logs estranhos no fail2ban.log!
Bem, bem, estava a dar uma vista de olhos no que foi banido pelo fail2ban... e então vi isto:
2024-07-24 20:52:43,027 fail2ban.utils [39963]: INFO HINT on 127: "Command not found". Make sure that all commands
in "{ iptables -w -C f2b-sshd -j RETURN >/dev/null 2>&1; } || { iptables -w -N f2b-sshd || true; iptables -w -A f2b-sshd -j RE
TURN; }
for proto in $(echo 'tcp' | sed 's/,/ /g'); do
{ iptables -w -C INPUT -p $proto -m multiport --dports ssh -j f2b-sshd
>/dev/null 2>&1; } || { iptables -w -I INPUT -p $proto -m multiport --dports ssh -j f2b-sshd; }
done" are in the PATH of fail
2ban-server process (grep -a PATH= /proc/pidof -x fail2ban-server/environ). You may want to start "fail2ban-server -f" separa
tely, initiate it with "fail2ban-client reload" in another shell session and observe if additional informative error messages a
ppear in the terminals.
Ah, parece que um comando não foi encontrado... Tinha-me esquecido completamente!!!
No caso do FreeBSD, é controlado por pf... No GNU/Linux, iptables funciona bem, mas eu tinha-me esquecido completamente disso, mesmo a usar BSD... Então, vou reconfigurar, usando este site como referência... https://dbdemon.com/pf_and_fail2ban Como o meu próprio servidor é $exsrv1, então
# Fail2Ban
table <f2b> persist
anchor "f2b/*"
block drop in log quick on $exsrv1 from <f2b> to any
Com isto, a configuração está feita. Ou seja, é possível usar expressões regulares como f2b/*...? E então, reconfigurei o jail.conf. Simplesmente o coloquei na seção Default.
[DEFAULT]
banaction = pf[actiontype=<allports>]
banaction_allports = pf[actiontype=<allports>]
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
bantime = 1w
findtime = 1d
maxretry = 5
[postfix]
enabled = true
port = smtp,ssmtp,submission
logpath = /var/log/maillog
bantime = 1w
findtime = 1d
maxretry = 10
[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps,submission
logpath = /var/log/maillog
bantime = 1w
findtime = 1d
maxretry = 10
Em termos de ficheiro de configuração, já está configurado por padrão em action.d/pf.conf, e ao verificar, parece que

não parece ser necessário fazer alterações na chamada do comando desta forma. E então, depois de reiniciar o fail2ban e o pf e verificar os logs do fail2ban, parece que os IPs que tinham sido banidos até então são mantidos.
# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 1
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 37
|- Total banned: 37
`- Banned IP list: *
Vou observar como as coisas correm com isto.
Até à próxima. Conto com a vossa ajuda novamente.