Blog 28 de maio de 2012 Nenhum comentário

O mod_security é um filtro bastante famoso que ajuda a prevenir certos tipos de ataques, como SQL Injection, XSS, Remote Include, Directory Transversal entre outros. Assumindo que seu servidor dedicado utilize o cPanel, segue abaixo o passo-a-passo para que você possa instalá-lo sem dor de cabeça! Vamos utilizar as regras gratuitas da Atomic, pois tem uma efetividade maior e com menor quantidade de falso-positivos.

Acesse o seu servidor por SSH e crie os seguintes diretórios (lembro-lhes que todos os comandos precisam ser executados como root):

mkdir /etc/httpd/modsecurity.d
mkdir /var/asl
mkdir /var/asl/tmp
mkdir /var/asl/data
mkdir /var/asl/data/msa
mkdir /var/asl/data/audit
mkdir /var/asl/data/suspicious

Modifique as permissões dos diretórios:
chown nobody.nobody /var/asl/data/msa
chown nobody.nobody /var/asl/data/audit
chown nobody.nobody /var/asl/data/suspicious
chmod o-rx -R /var/asl/data/*
chmod ug+rwx -R /var/asl/data/*

Baixe as regras (aqui estamos utilizando as gratuitas, que possuem um delay de 90 dias) através do endereço http://updates.atomicorp.com/channels/rules/delayed/modsec-2.5-free-latest.tar.gz e descompacte-as em um diretório de sua preferência.

Mova os arquivos abaixo para o diretório /etc/httpd/modsecurity.d/:
05_asl_exclude.conf
10_asl_antimalware.conf
10_asl_rules.conf
11_asl_data_loss.conf
20_asl_useragents.conf
30_asl_antispam.conf
30_asl_antispam_referrer.conf
50_asl_rootkits.conf
60_asl_recons.conf
61_asl_recons_dlp.conf
99_asl_jitp.conf
domain-blacklist-local.txt
domain-blacklist.txt
domain-spam-whitelist.conf
domain-spam-whitelist.txt
malware-blacklist-high.txt
malware-blacklist-local.txt
malware-blacklist-low.txt
malware-blacklist.txt
sql.txt
trusted-domains.conf
trusted-domains.txt
whitelist.txt

Agora edite o arquivo /usr/local/apache/conf/modsec2.user.conf e insira as linhas abaixo:
SecRequestBodyAccess On
SecResponseBodyAccess On
SecResponseBodyMimeType (null) text/html text/plain text/xml
SecResponseBodyLimit 2621440
SecAuditLogRelevantStatus "^(?:5|4(?!04))"
SecServerSignature Apache
SecUploadDir /var/asl/data/suspicious
SecUploadKeepFiles Off
SecAuditLogParts ABIFHZ
SecArgumentSeparator "&"
SecCookieFormat 0
SecRequestBodyInMemoryLimit 131072
SecDataDir /var/asl/data/msa
SecTmpDir /tmp
SecAuditLogStorageDir /var/asl/data/audit
SecResponseBodyLimitAction ProcessPartial
SecPcreMatchLimit 50000
SecPcreMatchLimitRecursion 50000
Include /etc/httpd/modsecurity.d/*asl*.conf

Abra o arquivo /usr/local/lib/php.ini e insira as linhas abaixo no final dele:
pcre.backtrack_limit = 50000
pcre.recursion_limit = 50000

Digite o comando /etc/init.d/httpd configtest. Se o resultado for “Syntax OK”, está tudo certo e você pode reiniciar seu Apache através do WHM ou através do script /scripts/restartsrv_httpd.

Deixe um comentário