Posso usar a limitação de taxa do iptables para bloquear temporariamente as tentativas de força bruta do servidor FTP?

2

Esta é uma linha semelhante a outras postagens sobre ataques de força bruta, mas um pouco mais específica:

Nós somos capazes de impor senhas decentes, geralmente, e a política de nome de usuário também evita presas a 99,9% das coisas de força bruta que o FTP está tentando ... mas não vejo razão para permitir milhares de tentativas infinitamente, e Às vezes, eles podem preencher os arquivos de log com muito barulho, o que dificulta a localização de itens potencialmente mais segmentados.

Assim, para FTP passivo, seria razoável a limitação da taxa de iptables para o TCP 21 de entrada ser razoavelmente eficaz em cortar o grande número de tentativas fracassadas, sem nunca atrapalhar o uso normal? Eu presumo que isso seria feito através de conexões limitadoras de taxas do mesmo IP para o TCP 21 ... isso está correto? Há problemas em que não estou pensando?

Próximo, então; o que você sugeriria para um comando simples do iptables em um firewall / roteador de bastiões para apenas colocar alguma proteção contra os ataques de força bruta mais difíceis / mais rápidos? Meu pensamento seria algo ao longo das linhas de um gatilho de 25 conexões (com base no princípio de que um login bem-sucedido seria apenas uma conexão única com o TCP 21) dentro de um minuto ou mais, e depois um bloco por meia hora. Esses números parecem razoáveis?

(outras informações: isso é para um firewall / roteador debian que protege uma DMZ de SOs mistos)

    
por Andrew Barber 10.11.2010 / 22:41

3 respostas

5
iptables -A INPUT -p tcp -m state --state NEW --dport 21 -m recent --name ftpattack --set
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -m recent --name ftpattack --rcheck --seconds 60 --hitcount 4 -j LOG --log-prefix 'FTP REJECT: '
iptables -A INPUT -p tcp --dport 21 -m state --state NEW -m recent --name ftpattack --rcheck --seconds 60 --hitcount 4 -j REJECT --reject-with tcp-reset

estas regras próximas ou no topo do seu conjunto de regras permitem apenas três ligações à porta 21, a partir de qualquer endereço IP, numa janela contínua de 60 segundos. Para permitir n, use --hitcount n+1 ; para usar uma janela maior que 60 segundos, aumente --seconds 60 .

    
por 10.11.2010 / 23:14
1

Como MadHatter mencionou, o módulo recente é o que você deseja usar, mas também é necessário limitar o número de tentativas de login que um usuário pode tentar em uma única conexão TCP. Se o usuário puder tentar 1000 tentativas antes de ser forçado a desconectar e reconectar, limitar as conexões através do módulo recente é bastante infrutífero. Você precisaria dizer (através da configuração do daemon FTP - veja os documentos para isso) que o usuário só tem permissão para tentar fazer login digamos 5 vezes por cada conexão e então usar uma regra recente para dizer se eles se conectam mais e depois 5 vezes dentro de um minuto, em seguida, bloqueá-los. Sim, permitir 25 tentativas soa alto, mas não o suficiente para força bruta, e ajuda a evitar muitos falsos positivos. Eu uso regras semelhantes a isso com o SSH e a opção MaxAuthTries do servidor OpenSSH. Espero que isso ajude.

    
por 28.12.2011 / 13:05
0

Use o Denyhosts ... 3 ataques! Sua saída!

Funciona como um encanto ...

Ou .. mais hardcore .. um firewall dedicado com Snort / IDS

Espero que isso ajude

    
por 10.11.2010 / 22:55