ModSecurity é um engine de detecção e prevenção contra intrusos para aplicações web. Operando como um módulo do Apache, se propõe a incrementar a segurança nas aplicações web, protegendo-as de ataques conhecidos e desconhecidos.
Após ter ele instalado entre no diretório do mod_security, lá você vai encontrar vários exemplos de httpd.conf que são as configurações do módulo. Aqui vamos usar a configuração simples:
Nisso a configuração vai pro final do arquivo httpd.conf do Apache. Segue abaixo o que vai ser colado lá:
<IfModule mod_security.c>
# Only inspect dynamic requests
# (YOU MUST TEST TO MAKE SURE IT WORKS AS EXPECTED)
SecFilterEngine DynamicOnly
# Reject requests with status 403
SecFilterDefaultAction "deny,log,status:403"
# Some sane defaults
SecFilterScanPOST On
SecFilterCheckURLEncoding On
SecFilterCheckCookieFormat On
SecFilterCheckUnicodeEncoding Off
# Accept almost all byte values
SecFilterForceByteRange 1 255
# Server masking is optional
SecServerSignature "GNU Microsoft-IIS/0.9Beta"
SecUploadDir /tmp
SecUploadKeepFiles Off
# Only record the interesting stuff
SecAuditEngine RelevantOnly
SecAuditLog logs/audit_log
# You normally won't need debug logging
SecFilterDebugLevel 0
SecFilterDebugLog logs/modsec_debug_log
# Only accept request encodings we know how to handle
# we exclude GET requests from this because some (automated)
# clients supply "text/html" as Content-Type
SecFilterSelective REQUEST_METHOD "!^GET$" chain
SecFilterSelective HTTP_Content-Type "!(^$|^application/x-www-form-urlencoded$|^multipart/form-data)"
# Require Content-Length to be provided with
# every POST request
SecFilterSelective REQUEST_METHOD "^POST$" chain
SecFilterSelective HTTP_Content-Length "^$"
# Don't accept transfer encodings we know we don't handle
# (and you don't need it anyway)
SecFilterSelective HTTP_Transfer-Encoding "!^$"
</IfModule>
Não vou entrar em detalhes, isso fica pra um próximo artigo, mas feito isso e editado da forma que preferir, reinicie o Apache e rode o seguinte comando:
# lynx -dump -head http://localhost/
E você vai obter a seguinte resposta
HTTP/1.1 200 OK
Date: Tue, 07 Sep 2004 16:01:01 GMT
Server: GNU Microsoft-IIS/0.9Beta
Connection: close
Content-Type: text/html; charset=ISO-8859-1
Perceba que o "Server:" ficou diferente do normal, não está informando a versão do Apache que se esta usando e isso pode ajudar um pouco, mas não resolver totalmente o problema de segurança. Isso devido a edição da diretiva "SecServerSignature", onde você pode colocar o que desejar.
[4] Comentário enviado por y2h4ck em 11/12/2004 - 12:24h
CVS testou usar outras configurações sem ser a minimal ?
http.conf-reversing-1, me pareceu muito atraente, pois protege contra CSS ( Cross Site Scripting ), caso haja alguma falha em aplicativos como scripts PHP.
ele vai gerar alertas:)