Fail2Ban tenta corretamente banir o IP, mas o IP não é banido - a cadeia iptables existe, mas não está funcionando

12

Executando no Ubuntu 14.04 Server.

Portanto, tenho o fail2ban configurado corretamente para processar /var/log/auth.logtentativas 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 REJECTtrá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, fail2banao proibir um IP por causa do SSH, allportsele 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.

Halsafar
fonte
Eu nunca tive esse problema com o fail2ban. Se você deseja voltar a bloquear a porta única, tente esta solução: oschgan.com/drupal/index.php?q=node/52 . Como alternativa, o fail2ban pode usar outros mecanismos, como hosts.deny ou rotas nulas, se o iptables estiver causando sofrimento.
digitaladdictions
Confira /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
Michael
1
O que mais há no seu iptables? Forneça a saída completa de 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.
Jplitza #
Eu tive o mesmo problema. Fail2Ban proíbe IP, posso ver o endereço na cadeia fail2ban, recebi o email que foi banido, mas o endereço IP ainda tem acesso. Mudar as transações para allports funcionou, mas não faço ideia do porquê!
Ergec 20/03/19

Respostas:

2

As cadeias fail2ban não estão corretamente vinculadas às cadeias INPUT e OUTPUT. Edite sua pergunta e forneça resultados de:

iptables -n -L INPUT
iptables -n -L OUTPUT

e todas as cadeias fail2ban também, e poderei ser mais preciso.

Marco
fonte
0
INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
Zareh Kasparian
fonte