Olá pessoal,
O mod_security é um módulo muito importante no apache na questão de segurança.
Com ele é possível filtrar o que é passado na URL, ou enviado por post ou get.
Um dos roblemas que podem ser reoslvidos com esse módulo é a vulnerabilidade em scripts de clientes. No meu caso o principal problema era os formulários de clientes que aceitavam código bcc:…. e um monte de endereços de e-mail. Com isso o spammer enviava e-mail para a lista toda dele, através de uma vulnerabilidade de código de um cliente.
Agora vamos bloquear o espertinho!
– Download
Faça o download do mod_security no site http://www.modsecurity.org. Lembro que para o apache1 baixe versão do mod_security 1.9.x.
– Compilando:
* Faça um backup or segurança de seu arquivo httpd.conf
tar -xzpf modsecurity-apache_1.9.5.tar.gz
cd modsecurity-apache_1.9.5/apache1/
apxs -cia mod_security.c
mkdir /usr/logs
touch /usr/logs/audit_log
O que fizemos agora foi compilar o mod_security e criar o local onde serão guardados os logs suspeitos.
– Adicionando regras:
Edite o arquivo httpd.conf e verifique se existem essas 2 linhas sobre o mod_securuty:
LoadModule security_module libexec/mod_security.so
Mais embaixo agora….
AddModule mod_security.c
Inclua as regras de filtro.
<IfModule mod_security.c>
# Turn the filtering engine On or Off
SecFilterEngine On
## Change Server: string
SecServerSignature “Apache”
SecFilterCheckUnicodeEncoding Off
SecAuditEngine RelevantOnly
SecFilterScanPOST On
SecFilterDefaultAction “deny,log,status:403”
SecFilterSelective REQUEST_METHOD “^POST$” chain
SecFilterSelective HTTP_Content-Length “^$”
SecFilterSelective ARG_PHPSESSID “!^[0-9a-z]*$”
SecFilterSelective COOKIE_PHPSESSID “!^[0-9a-z]*$”
SecFilter “viewtopic\.php\?” chain
SecFilter “chr\(([0-9]{1,3})\)” “deny,log”
# Aqui são é possível incluir e retirar linhas de acordo com suas necessidades. Para bloqueio de spam por bcc utilize:
SecFilter “bcc:”
SecFilter “bcc\x3a”
SecFilter “cc:”
SecFilter “cc\x3a”
SecFilter “bcc:|Bcc:|BCC:” chain
SecFilter “[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}\,\x20[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}”
SecFilterSelective POST_PAYLOAD “Bcc:”
SecFilterSelective POST_PAYLOAD “Bcc:\x20”
SecFilterSelective POST_PAYLOAD “cc:”
SecFilterSelective POST_PAYLOAD “cc:\x20”
SecFilterSelective POST_PAYLOAD “bcc:”
SecFilterSelective POST_PAYLOAD “bcc:\x20”
SecFilterSelective POST_PAYLOAD “bcc: ”
SecFilterSelective THE_REQUEST “Bcc:”
SecFilterSelective THE_REQUEST “Bcc:\x20”
SecFilterSelective THE_REQUEST “cc:”
SecFilterSelective THE_REQUEST “cc:\x20”
SecFilterSelective THE_REQUEST “bcc:”
SecFilterSelective THE_REQUEST “bcc:\x20”
SecFilterSelective THE_REQUEST “bcc: ”
SecFilterSelective “POST_PAYLOAD” “Content-Type: multipart/mixed; boundary=” “deny,log,status:404”
</IfModule>
Abraços!