Instalação do mod_security e mod_evasive
Atualize o servidor:
sudo yum update
Instalação dos pré-requisitos:
sudo yum install httpd epel-release git wget
Instalação do mod_security e mod_evasive
sudo yum install mod_security mod_evasive
Para testar se o mod_security está instalado e carregado, rode:
sudo httpd -M | grep security
Deve aparecer a seguinte linha:
security2_module (shared)
Para testar se o mod_evasive está instalado e carregado, rode:
sudo httpd -M | grep evasive
Deve aparecer a seguinte linha:
evasive20_module (shared)
Configuração do mod_security
Instalação das regras OWASP:
cd /etc/httpd/modsecurity.d
rm -rf activated_rules/
sudo git clone https://github.com/SpiderLabs/owasp-modsecurity-crs
cd owasp-modsecurity-crs/
cp crs-setup.conf.example crs-setup.conf
Altere a linha 4 do arquivo /etc/httpd/conf.d/mod_security.conf para:
IncludeOptional modsecurity.d/rules/*.conf
Ainda no arquivo
/etc/httpd/modsecurity.d/mod_security.conf verifique se os seguintes parâmetros estão com os mesmos valores do exemplo abaixo:
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess On
SecResponseBodyMimeType text/plain text/html text/xml application/octet-stream
SecAuditLog /var/log/httpd/modsec_audit.log
SecTmpDir /var/lib/mod_security
SecDataDir /var/lib/mod_security</IfModule>
Adicione as seguintes linhas no fim do arquivo /etc/httpd/conf/httpd.conf:
<IfModule security2_module>
Include modsecurity.d/owasp-modsecurity-crs/crs-setup.conf
Include modsecurity.d/owasp-modsecurity-crs/rules/*.conf
</IfModule>
Reinicie o Apache:
sudo systemctl restart httpd
Configuração do mod_evasive
Abra o arquivo
/etc/httpd/modsecurity.d/mod_evasive.conf e verifique se os seguintes parâmetros estão com os mesmos valores do exemplo abaixo:
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
Testando o mod_security
Abra um terminal e execute o seguinte comando, inserindo o endereço da sua aplicação:
curl -s -o /dev/null -w '%{http_code}' www.sistema.com?username=1'%20or%20'1'%20=%20'
Abra o arquivo de log do mod_security e veja o alerta que foi gerado:
sudo tail -f /var/log/httpd/modsec_audit.log
Testando mod_evasive
Abra o arquivo /usr/share/doc/mod_evasive-1.10.1/test.pl
sudo vi /usr/share/doc/mod_evasive-1.10.1/test.pl
Encontre a linha "for(0..100)" e substitua 100 por 200.
Encontre a linha 'PeerAddr=>"127.0.0.1:80"' e substitua 127.0.0.1 com o IP do seu servidor.
Feche o script e o execute:
sudo perl /usr/share/doc/mod_evasive-1.10.1/test.pl
Devem aparecer várias linhas com a mensagem "HTTP/1.1 403 Forbidden" na tela.