O bloco Fail2ban com IPtables não funciona no Debian Lenny. [movido porta ssh]

11

Eu recentemente decidi fazer alguma manutenção de segurança. Eu vi meus logs, e houve algumas tentativas contra o meu servidor SSH. No início, eu mudei a porta SSH do padrão 22. Depois disso, eu li algo sobre Fail2ban , BlockHosts e DenyHosts .

Eu dei uma olhada no primeiro: é simples de configurar, tudo é compreensível; mas quando tentei "testar sua proteção", os testes falharam . Tudo parece ser bom, mas ainda posso acessar o servidor.

Eu também testei o IPtables: # iptables -I INPUT -j DROP - depois disso minha conexão SSH foi perdida (então, o que eu queria). Então # iptables -I INPUT -s 84.x.y.z -j DROP , que funcionou também.

Mas, quais regras o Fail2ban fez, isso não funciona: ( $ sudo iptables -L )

Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
fail2ban-apache  tcp  --  anywhere             anywhere            multiport dports www,https
fail2ban-ssh  tcp  --  anywhere             anywhere            multiport dports ssh
fail2ban-ssh-ddos  tcp  --  anywhere             anywhere            multiport dports ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        

Chain fail2ban-apache (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh (1 references)
target     prot opt source               destination        
DROP       all  --  84.x.y.z           anywhere            
RETURN     all  --  anywhere             anywhere            

Chain fail2ban-ssh-ddos (1 references)
target     prot opt source               destination        
RETURN     all  --  anywhere             anywhere

Módulos do kernel carregados: ( $ lsmod | grep ip )

iptable_nat             4680  0
nf_nat                 15576  1 iptable_nat
nf_conntrack_ipv4      12268  3 iptable_nat,nf_nat
nf_conntrack           55540  4 xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4
xt_multiport            2816  2
iptable_filter          2624  1
ip_tables              10160  2 iptable_nat,iptable_filter
x_tables               13284  5 xt_state,xt_tcpudp,iptable_nat,xt_multiport,ip_tables
ipv6                  235396  24

Versões:

  • Debian Lenny 5.06, kernel 2.6.26-2-686
  • IPtables 1.4.2-6
  • Fail2ban 0.8.3-2sid1
  • openssh-server 1: 5.1p1-5

Teste nº 1 passo a passo:

  1. Configure o Fail2ban como bantime baixo. 60 segundos Então recarregue.
  2. Tentativa de login (com SSH), diretamente com passwd errado.
  3. Pela 6ª vez, digite a senha correta (o máximo de tentativas é de apenas 4 aqui). Eu entrei. Também posso acessar a página da web hospedada por esse servidor.
  4. iptables -L me mostrou como mencionado acima. Então a proibição estava ativa, quando me conectei, comandei meu servidor.

Teste nº 2 passo a passo:

  1. Pare o Fail2ban. Crie um script at para remover a regra de proibição de gravação abaixo no futuro. ( iptables -D INPUT 1 )
  2. Crie uma regra de banimento: iptables -I INPUT 1 -s 84.x.y.z -j DROP
  3. Eu não consegui digitar nada, a conexão SSH está inutilizável. Não consegui acessar a página da web. Então, o que eu queria do iptables.
  4. Após o script at , posso acessar meu servidor.

Eu não vejo a solução, o que devo fazer para impedir que minha proibição de IPtables (feita pelo Fail2ban) funcione?

    
por antivirtel 12.06.2011 / 00:41

4 respostas

8

Eu encontrei o problema, o que eu fiz, antes de instalar o fail2ban. Desculpe pelo seu tempo.

Por motivos de segurança, mudei meu sshd do porto 22 para outro. A referência em iptables refere-se apenas à porta 22. Eu pensei, que é uma variável, o que sempre se refere à porta sshd atual. Mas NÃO .

A solução exata (se você removeu seu daemon da porta original):

  1. Abra jail.local (ou .conf).
  2. Encontre seu serviço (entre chaves).
  3. Corrija a seção port para todos . Exemplo: port = all
  4. Adicione ou edite uma linha banaction existente após a linha de porta, com o valor iptables-allports . Exemplo: banaction = iptables-allports .
  5. Reinicie o daemon. Exemplo: # service fail2ban restart .

Não encontrei solução para alterar a diretiva port ssh ou escrever um número. Se você tiver uma solução que não seja de todas as portas, eu a escuto!

    
por 18.07.2011 / 14:29
2

Eu tive o mesmo problema com o fail2ban não banindo depois que eu mudei meu servidor ssh para a porta não padrão 12345 (digamos).

Para que o fail2ban produza as regras corretas após várias tentativas de autenticação com falha, eu editei /etc/fail2ban/jail.conf .

port = ssh 

em

port = 12345

Assumo que uma abordagem semelhante funcionaria para outros serviços em portas não padrão.

    
por 14.02.2012 / 23:05
0

As configurações do fail2ban estão em /etc/fail2ban/jail.local . Em uma instalação padrão, não tenho certeza se está lá. Então, o que você faz é copiar jail.conf para jail.local , então você tem os dois arquivos em /etc/fail2ban/ . Edite jail.local , vá para a linha que contém [ssh] e habilite-a assim:

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

Depois disso, reinicie o fail2ban:

sudo /etc/init.d/fail2ban restart

É possível que funcione agora, configurei-o assim e funciona.

    
por 12.06.2011 / 19:23
0

Você listou "Fail2ban 0.8.3-2sid1" como sendo instalado. Esta é uma configuração não suportada. Os pacotes Sid não devem ser instalados em um ambiente estável.

Eu rodei o Debian 6 (Squeeze), que foi atualizado do Lenny, em uma VM especificamente como um servidor SSH para minha casa. Eu também uso o fail2ban. Eu realizei seu teste nº 1 e tudo funcionou como deveria. Não consegui fazer o login para o número máximo de tentativas e, em seguida, minhas solicitações de login foram interrompidas por 60 segundos.

Minha lista de versões:

  • / etc / debian_version = 6.0.1
  • fail2ban = 08..4-3
  • iptables = 1.4.8
  • openssh-server = 1: 5.5p1-6
por 15.07.2011 / 22:07