Evitar ataques SSH

9

Estou tentando configurar as regras do iptables para permitir apenas 3 tentativas por um IP por minuto para conectar-se ao serviço via SSH e largar todas as conexões depois para evitar ataques SSH; mas parece que estou fazendo algo errado!

-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

obrigado

MGP
fonte

Respostas:

10

Eu acho que é melhor você usar fail2ban, porque as regras do seu ipfilter também bloqueiam conexões legítimas. fail2bansó bloqueará IPs após falhas nas conexões.

Em seguida, uma prática comum é banir IPs quando eles tentam se conectar à porta 22 e vincular seu servidor ssh a outra porta. Você enfrenta apenas algumas conexões ilegítimas por semana, se o seu computador não for um alvo bem conhecido.

Para a pergunta exata que você fez:

iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
Gregory MOUSSAT
fonte
1
Como o servidor é um vps de baixo custo, estou tentando reduzir ao mínimo o consumo de recursos, mantendo-o o mais seguro possível. Eu já mudei a porta do servidor ssh. Devo manter essas regras (acima) na nova porta e banir a padrão (22)?
MGP
O Fail2ban é, de fato, a melhor solução, mesmo para VPS baixo
MGP
7

Você pode implementar o que deseja com as 2 regras a seguir

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 -j DROP

Observe que o uso de -Aregras que adiciona regras ao final da cadeia pode prejudicar a maneira como as regras do iptables são processadas, ou seja, para que, se houver uma regra geral de DROP ou de permissão antes que a sua seja alcançada, elas nunca serão acionadas.

Dito isto, você também pode encontrar o fail2ban é a melhor maneira de implementar esse tipo de bloco.

user9517
fonte
Quando tento adicionar essas regras, recebo uma mensagem de erro: iptables: Nenhuma cadeia / destino / correspondência com esse nome.
MGP
Voto positivo para fail2ban.
Michael B
4

Você pode tentar o módulo LIMIT.

iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute -j ACCEPT
Magalhães
fonte