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

11

Decidi recentemente fazer alguma manutenção de segurança. Eu vi meus logs e houve algumas tentativas no meu servidor SSH. No começo, afastei a porta SSH do padrão 22. Depois disso, li algo sobre Fail2ban , BlockHosts e DenyHosts .

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

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

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
  • Tabelas IP 1.4.2-6
  • Fail2ban 0.8.3-2sid1
  • openssh-server 1: 5.1p1-5

Teste # 1 passo a passo:

  1. Configure Fail2ban para baixo tempo de espera. 60 segundos. Então recarregue.
  2. Tente fazer login (com SSH) diretamente com a senha incorreta.
  3. Pela sexta vez, digite a senha correta (o número 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 -Lme mostrou como mencionado acima. Portanto, a proibição estava ativa, quando eu conectei, comandou meu servidor.

Teste nº 2 passo a passo:

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

Não vejo a solução, o que devo fazer para que meu banimento de tabelas de IP (feito por Fail2ban) funcione?

antivirtel
fonte
Pergunta editada! Alguma ideia?
Antivirtel

Respostas:

8

Encontrei o problema, o que fiz, antes de instalar o fail2ban. Desculpe pelo seu tempo.

Por motivos de segurança, mudei meu sshd da porta 22 para outra. A referência em iptablesrefere-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ê afastou o daemon da porta original):

  1. Abra jail.local (ou .conf).
  2. Encontre seu serviço (entre chaves).
  3. Corrija a portseção a todos . Exemplo:port = all
  4. Adicione ou edite uma banactionlinha existente após a linha da 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 port sshdiretiva ou escrevi um número lá. Se você tem uma solução que não seja de todas as portas, eu vou ouvir!

antivirtel
fonte
1
Tudo que você precisa fazer é fornecer o número da porta em vez do nome.
Julian Knight
Observe também que o nome do seu iptable deve ter menos de 32 caracteres para ser adicionado com êxito.
Adrian Lopez
2

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

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

port = ssh 

para dentro

port = 12345

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

John
fonte
0

As configurações para 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.confpara jail.local, para que você tenha os dois arquivos /etc/fail2ban/. Edite jail.local, vá para a linha que contém [ssh]e ative-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, eu configurei assim e funciona.

enedene
fonte
Eu acho que você não entendeu minha pergunta! O Fail2ban faz, o que eu quero: assistir logs e banir os atacantes. Mas essa proibição, o que as tabelas de IP devem fazer, não funciona. Ainda posso acessar o servidor, com a configuração de regra acima mencionada.
Antivirtel
Desculpe, eu estava com pressa, então eu entendi errado e, como tinha o mesmo problema, resolvi adicionando jail.local, achei que iria ajudar. Infelizmente, se você tiver tudo definido corretamente, não sei qual é o problema, mas espero que alguém o faça.
enedene
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 corro o Debian 6 (Squeeze), que foi atualizado a partir do Lenny, em uma VM especificamente como um servidor SSH para minha casa. Eu também uso fail2ban. Realizei o seu Teste 1 e tudo funcionou como deveria. Falha no login para obter o número máximo de tentativas e, em seguida, meus pedidos de login foram interrompidos 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
James Sumners
fonte
Não, eu tenho o pacote certo. packages.debian.org/search?suite=lenny&keywords=fail2ban
antivirtel
Nesse caso, eu recomendo fazer uma atualização dist.
James Sumners
okok, não é muito fácil, mas vou conseguir fazê-lo de alguma forma ... - talvez uma reinstalação limpa
antivirtel
sed -i 's/lenny/squeeze/' /etc/apt/sources.list && apt-get update && apt-get dist-upgrade. É bem simples
James Sumners
sim, mas existe alguma chance de não inicializar da próxima vez ... as notas de lançamento escreveram, que novo kenel + novo sistema udev ... - foi bem-sucedido com sua máquina?
Antivirtel