O jeito certo de bloquear automaticamente os ip's

3

O problema:

Eu gerencio um site com muitas páginas geradas dinamicamente. Todos os dias bots do Google, Yahoo e outros motores de busca baixam como 100K + de páginas. E às vezes eu tenho problemas com "hackers" tentando baixar massivamente todo o site.

Eu gostaria de bloquear endereços IP de "hackers", mantendo os bots dos mecanismos de busca rastreando as páginas. Qual é a melhor maneira de fazer isso?

Nota:
Agora eu estou resolvendo o problema da seguinte forma. Salvei ip de cada solicitação de página em um arquivo a cada X segundos. E eu tenho um script crontab que conta ip repetitivo a cada 30 minutos. Para os ip's que são repetidos muitas vezes, o script verifica um nome de host - se ele não pertence ao Google / Yahoo / Bing / etc, então temos um candidato para banimento. Mas eu realmente não gosto da minha solução e acho que o auto banimento poderia ser feito melhor ou usar alguma solução pronta para uso.

    
por Termos 27.09.2010 / 18:16

3 respostas

4

Você não informou o seu SO, então eu ficarei feliz em lhe dizer a versão do OpenBSD: em pf.conf coloque algo como o seguinte no seu conjunto de regras (para 100 conns por 10 segundos no máximo):

table <bad_hosts> persist
block quick from <bad_hosts>
pass in on $ext_if proto tcp to $webserver port www keep state \
                 (max-src-conn-rate 100/10, overload <bad_hosts> flush global)

você pode adicionar uma lista de desbloqueio e uma tarefa do cron chutando endereços de bad_hosts depois de um dia ou dois.

    
por 28.09.2010 / 00:39
0

Eu teria pensado que o fail2ban é a resposta.

Você pode usar a lista branca para impedir o bloqueio dos mecanismos de pesquisa.

    
por 28.09.2010 / 00:16
0

Dê uma olhada no Correlator de eventos simples . Ele pode executar comandos automaticamente (isto é, adicionar um bloco a iptables ) depois que uma certa quantidade de linhas correspondentes a uma expressão regular for vista dentro de uma janela de tempo. Também pode definir um "contexto" que expira. Quando um contexto expira, você pode desbloquear o IP em questão (ou seja, remover de iptables ).

    
por 12.04.2011 / 11:12