Apache Mod_Evasive :: Uma camada de proteção contra Ataques DoS e DDoS

Share:

O Mod_Evasive é um módulo do Apache que nos facilita trabalhar com proteções contra DoS e DDoS e ataques de força bruta em requisições HTTP para o Apache.

Ele cria tabelas no firewall com os IP's requisitantes e as URI's que o mesmo estão tentando floodar, e se ele cair em alguma regra, ele ficará banido por x segundos até que possa fazer requisições novamente para o servidor.

Ele é um modulo que pode ser usado com o Modsecurity para melhor a segurança do seu web server. Aqui você pode conhecer um pouco mais sobre o ModSecurity.


Instalando o Mod_Evasive

O modulo é um pacote simples que pode ser instalado via APT
 # sudo apt-get update ; sudo apt-get install libapache2-mod-evasive  

Agora vamos verificar se deu tudo certinho:
 root@servidor:~# sudo apachectl -M | grep evasive  
  evasive20_module (shared)  
 root@servidor:~#   


Agora vamos editar o arquivo de configurações do Mod_Evasive para definir alguns parâmetros de comportamento do módulo
 # vim /etc/apache2/mods-enabled/evasive.conf  
 <IfModule mod_evasive20.c>  
   DOSHashTableSize  3097  
   DOSPageCount    5  
   DOSSiteCount    50  
   DOSPageInterval   1  
   DOSSiteInterval   1  
   DOSBlockingPeriod  30  
   
   DOSEmailNotify   teste@admin.com  
   DOSLogDir      "/var/log/apache2/"  
   #DOSSystemCommand  "su - someuser -c '/sbin/... %s ...'"  
 </IfModule>  
   

  • DOSPageCount : Contador de requisições de uma só página 
  • DOSSiteCount: Contador de requisições feitas para todo o site
  • DOSPageInterval: Intervalo aceitável entre as requisições feitas em páginas específicas 
  • DOSSiteInterval:  Intervalo aceitável entre as requisições feitas em todo o site 
  • DOSBlockingPeriod: Período de bloqueio do IP em segundos
Agora vamos reiniciar o apache com as novas configurações e testar nossa configuração com o arquivo de negação de serviço nativo do próprio Mod_Evasive
 # service apache2 restart  

Esse arquivo escrito em perl, faz requisições HTTP para o localhost. Caso esteja utilizando cache ou load balance, o correto seria apontar para o IP dele, ou qualquer coisa utilize o Hydra.
 sudo perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl  


:)



Um comentário: