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:
- Configure Fail2ban para baixo tempo de espera. 60 segundos. Então recarregue.
- Tente fazer login (com SSH) diretamente com a senha incorreta.
- 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.
iptables -L
me mostrou como mencionado acima. Portanto, a proibição estava ativa, quando eu conectei, comandou meu servidor.
Teste nº 2 passo a passo:
- Pare Fail2ban. Crie um
at
script para remover a regra de proibição escrita abaixo no futuro. (iptables -D INPUT 1
) - Crie uma regra de proibição:
iptables -I INPUT 1 -s 84.x.y.z -j DROP
- 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.
- Após o
at
script, 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?
Respostas:
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
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ê afastou o daemon da porta original):
port
seção a todos . Exemplo:port = all
banaction
linha existente após a linha da porta, com o valor iptables-allports . Exemplo:banaction = iptables-allports
.# service fail2ban restart
.Não encontrei solução para alterar a
port ssh
diretiva ou escrevi um número lá. Se você tem uma solução que não seja de todas as portas, eu vou ouvir!fonte
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
.para dentro
Presumo que uma abordagem semelhante funcionaria para outros serviços em portas não padrão.
fonte
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 é copiarjail.conf
parajail.local
, para que você tenha os dois arquivos/etc/fail2ban/
. Editejail.local
, vá para a linha que contém[ssh]
e ative-a assim:Depois disso, reinicie o fail2ban:
É possível que funcione agora, eu configurei assim e funciona.
fonte
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:
fonte
sed -i 's/lenny/squeeze/' /etc/apt/sources.list && apt-get update && apt-get dist-upgrade
. É bem simples