Está bloqueando endereços IP não resolvidos uma boa ideia?

1

Eu tenho um site onde:

  • Atualmente, temos muitos bots tentando pegar nosso conteúdo (é um directório de empresas) da China, Ucrânia, etc ...
  • 5% dos endereços IP são "não resolvidos", de acordo com AWStats

Então, minha ideia é limitar o número de solicitações HTTP por IPs (exceto para bots conhecidos, como o Google Bot):

  • Isso resolveria meu problema número 1 (os bots)
  • Mas isso também bloquearia todo o tráfego "IP não resolvido"

- > é uma boa ideia bloquear todos os IPs "não resolvidos"? Vou bloquear algum tráfego legítimo?

    
por Julien Dubois 15.05.2012 / 11:56

3 respostas

4

Apenas limitar o número de solicitações HTTP por endereço não resultaria no bloqueio de endereços IP "não resolvidos".

Descobrir qual endereço é "não resolvido" em tempo real forçaria pesquisas reversas de DNS para todos os visitantes pelo menos uma vez. Isso aumentaria seus tempos de resposta HTTP iniciais na melhor das hipóteses e criaria uma condição near-DoS quando os servidores de nomes estiverem indisponíveis e o tempo limite - você realmente não deseja isso.

Em geral, tentar proteger o conteúdo disponível publicamente de ser agarrado por bots é uma tarefa Sísifo - você certamente não permitiria que todo visitante passasse por um teste de Turing antes de admiti-lo em seu site. Qualquer uma das abordagens disponíveis só seria capaz de diminuir a carga em seus servidores da web, não impedindo que ela seja completamente capturada. Além disso, como com todas as abordagens baseadas em estatísticas para diferenciação, reduzir o número de bots que podem acessar seu conteúdo inevitavelmente aumentaria o número de usuários humanos comuns incomodados por suas regras de bloqueio.

    
por 15.05.2012 / 12:17
1

Eu não conheço o awstats em detalhes, mas acho que o status "não resolvido" se aplica a todos os endereços IP sem um registro DNS reverso. Bloquear todo o tráfego de endereços IP sem registro reverso irá matar muitos visitantes normais.

Tente bloquear os bots seletivamente inspecionando os registros do seu site. Você pode usar o fail2ban para bloquear esse tráfego de maneira automatizada. O fail2ban é baseado na análise do arquivo de log, portanto, você só precisa encontrar um padrão em seu access.log e configurar o fail2ban de acordo.

    
por 15.05.2012 / 12:03
1

Sua proposta é baseada nos 5% de endereços que são os mesmos endereços que estão roubando seu conteúdo, mas você não diz se é esse o caso. Certamente eu esperaria que você estaria bloqueando muito tráfego legítimo.

Eu concordo com a maioria do que syneticon-dj diz, no entanto, existem maneiras mais eficazes de anti-leeching (tente googling para esse termo). Verificar o referenciador, exigindo um ID de sessão, usando a proteção CSRF, mas passando o token em um cookie em vez de um campo de formulário. Isso fornece um mecanismo para identificar os leechers - em termos de bloqueá-los, então você realmente quer fazer isso o mais cedo possível, ou seja, quando você obtém um pacote SYN de um IP. Isso significa bloqueá-los no firewall. O Fail2ban fornece um método para reconfigurar seu firewall instantaneamente com base nas entradas de log. Mas tome cuidado, pois longas cadeias de regras do iptables afetarão a latência e, portanto, a taxa de transferência .

    
por 15.05.2012 / 12:27