Executando no Ubuntu 14.04 Server.
Portanto, tenho o fail2ban configurado corretamente para processar /var/log/auth.log
tentativas de logon SSH.
Após três tentativas com falha, vejo isso no log fail2ban:
2014-11-19 15:22:56,822 fail2ban.actions: WARNING [ssh] Ban BANNED_IP_ADDY
iptables -L
mostra esta cadeia:
Chain fail2ban-ssh (1 references)
target prot opt source destination
REJECT all -- BANNED_IP_ADDY anywhere reject-with icmp-port-unreachable
RETURN all -- anywhere anywhere
No entanto, a partir desse IP, ainda posso entrar via SSH sem problemas.
A mesma história se aplica a todas as minhas cadeias fail2ban. No Apache, por exemplo, posso ver o fail2ban detectar corretamente o log e afirmar que ele proíbe um IP. O IP acaba em uma cadeia de iptables, mas na verdade não está sendo REJEITADO.
Sinto que, nesses casos, é porque o SSH não está na porta padrão. Está em uma porta diferente.
Portanto, se eu forçar a regra da cadeia ssh a usar a nova porta:
[ssh]
enabled = true
port = 32323
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
Então eu vejo este erro:
2014-11-19 15:30:06,775 fail2ban.actions.action: ERROR iptables -D INPUT -p tcp -m multiport --dports 32323 -j fail2ban-ssh
iptables -F fail2ban-ssh
iptables -X fail2ban-ssh returned 400
2014-11-19 15:30:06,778 fail2ban.actions.action: ERROR iptables -N fail2ban-ssh
iptables -A fail2ban-ssh -j RETURN
iptables -I INPUT -p tcp -m multiport --dports 32323 -j fail2ban-ssh returned 400
2014-11-19 15:30:06,779 fail2ban.actions.action: ERROR iptables -n -L INPUT | grep -q 'fail2ban-ssh[ \t]' returned 100
2014-11-19 15:30:06,780 fail2ban.actions.action: CRITICAL Unable to restore environment
Se eu deixar como
port = ssh
Em seguida, ele entra no iptables corretamente, mas a cadeia não está funcionando para o REJECT
tráfego (como mencionado acima).
ATUALIZAR:
Se eu mudar:
banaction = iptables-multiport
Para:
banaction = iptables-allports
Então parece funcionar. Quais são as repercussões dessa mudança?
Parece que, fail2ban
ao proibir um IP por causa do SSH, allports
ele baniu TODAS as portas para esse IP. Foi propositadamente banido devido a falhas repetidas de login no ssh. Também foi banido em todos os outros serviços.
/etc/fail2ban/actions.d
, ele tem um arquivo correspondente a cada uma dessas ações de proibição. Dentro, você verá quais comandos são usados para banir, desbanir, iniciar e parar o fail2ban. Você pode tentar executar os comandos actionban manualmente e ver o que acontece. I
iptables -L -n -v
(redigindo endereços IP, quando necessário). Em particular, observe o -v
, que fornecerá contadores de bytes e pacotes para cada cadeia e regra, facilitando a depuração.