ModSecurity é um firewall de aplicação web (WAF) open source, mantido pela Trustwave Labs. Ele aumenta consideravelmente a segurança do ambiente Web, protegendo o ambiente contra ataques mais comuns, como SQL Injection, XSS, entre outros. Nesse post iremos abordar a instalação do ModSecurity no CentOS 7 com Apache/
Pré-requisitos:
# yum install httpd epel-release git wget
Instalação do ModSecurity
# yum install mod_security mod_evasive
Instalação das regras:
# cd /etc/httpd/modsecurity.d
# rm -rf activated_rules/
# git clone https://github.com/SpiderLabs/owasp-modsecurity-crs .
# mv crs-setup.conf.example crs-setup.conf
# vi /etc/httpd/conf.d/mod_security.conf
Altere a linha 4 para:
IncludeOptional modsecurity.d/rules/*.conf
# vi /etc/httpd/modsecurity.d/rules/REQUEST-941-APPLICATION-ATTACK-XSS.conf
Comente (coloque # no inicio da linha) da linha 37 (SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/…) até a linha 64( setvar:tx.%{rule.id}…), e depois comente da linha 751 até a 779.
# vi /etc/httpd/modsecurity.d/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf
Comente da linha 43 até a 68
Reinicie o Apache:
# systemctl restart httpd
Observação: A configuração padrão vem com o nível “paranoico” 1, ou seja, irá fornecer uma proteção básica porém irá gerar muito pouco ou quase nenhum falso positivo. Em minha opinião, o nível “paranoico” 2 tem uma relação custo-benefício melhor, uma vez que oferece um nível maior de proteção com uma quantidade aceitável de falso positivo. Para alterar para o nível paranoico 2, faça a seguinte alteração:
# vi /etc/httpd/modsecurity.d/crs-setup.conf
(linha 171)
SecAction \
“id:900000,\
phase:1,\
nolog,\
pass,\
t:none,\
setvar:tx.paranoia_level=2”
Agora reinicie o serviço:
# systemctl restart httpd