Tutoriais/Apache/mod security-web
De UnderLinux Wiki
Protegendo aplicações Web com mod_security
O ModSecurity é uma ferramenta de detecção e prevenção de intrusos para aplicações web (ou um firewall de aplicações). Pode ser utilizado como um módulo para o Apache ou como standalone, o propósito do ModSecurity é aumentar a segurança das aplicações web, as protegendos de ataques conhecidos e até mesmo de desconhecidos. Mas como isso? Ele se baseia em padrões de ataques. Neste exemplo vamos utilizá-lo como módulo do Apache, em primeiro lugar devemos fazer o download do pacote:
wget -c http://www.modsecurity.org/download/modsecurity-1.8.7.tar.gz
Também existem binários prontos para Debian, FreeBSD, Gentoo e Mandrake, para fazer seu download acesse: http://www.modsecurity.org/download/index.html.
Instalação
Vamos compilar e instalar o pacote:
root@under:~/recieved# tar -zxvf modsecurity-1.8.7.tar.gz root@under:~/recieved# cd modsecurity-1.8.7 root@under:~/recieved/modsecurity-1.8.7# apxs -cia mod_security.c
Esta opção de compilação funciona para o Apache linkado dinâmicamente (DSO), se seu Apache for linkado estaticamente, leia o arquivo INSTALL que está na raiz do diretório modsecurity-1.8.7 para instruções de como proceder.
Agora precisamos criar as regras, recomento a utilização das regras disponíveis pelo site http://www.gotroot.com/tiki-index.php?page=mod_security+rules. Eles atualizam estas regras quase que diariamente com novos ataques que são descobertos.
A configuração é relativamente simples, adicione a seguinte opção em seu httpd.conf:
LoadModule security_module /usr/lib/apache/modules/mod_security.so
Entre na da pasta de configurações do Apache, e faça o download das regras:
root@under:~# cd /var/www/conf/ root@under:/var/www/conf# mkdir modsecurity root@under:/var/www/conf# cd modsecurity root@under:/var/www/conf/modsecurity# wget http://www.gotroot.com/downloads/ftp/mod_security/rules.conf root@under:/var/www/conf/modsecurity# wget http://www.gotroot.com/downloads/ftp/mod_security/blacklist.conf
Agora que temos todos os arquivos necessários vamos habilitar o mod_security, edite o httpd.conf e ao final adicione:
<IfModule mod_security.c>
# Only inspect dynamic requests
# (YOU MUST TEST TO MAKE SURE IT WORKS AS EXPECTED)
#SecFilterEngine DynamicOnly
SecFilterEngine On
# Reject requests with status 500
SecFilterDefaultAction "deny,log,status:403"
# Some sane defaults
SecFilterScanPOST On
SecFilterCheckURLEncoding On
SecFilterCheckCookieFormat On
SecFilterCheckUnicodeEncoding Off
SecServerResponseToken Off
#If you want to scan the output, uncomment these
#SecFilterScanOutput On
#SecFilterOutputMimeTypes "(null) text/html text/plain"
# Accept almost all byte values
SecFilterForceByteRange 1 255
# Server masking is optional
#fake server banner - NOYB used - no one needs to know what we are using
SecServerSignature "NOYB"
#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
#And now, the rules
#Remove any of these Include lines you do not use or have rules for.
#Application protection rules
Include /var/www/conf/modsecurity/rules.conf
#Comment spam rules
Include /var/www/conf/modsecurity/blacklist.conf
</IfModule>Para terminar reinice o apache, os logs do mod_security serão todos gravados na pasta de logs de seu apache com o nome audit_log. Um exemplo do log dele é o seguinte:
HTTP/1.0 403 Forbidden Connection: close Content-Type: text/html; charset=iso-8859-1 ======================================== Request: 59.112.162.193 - - [11/Jun/2005:16:59:59 -0300] "CONNECT 168.95.4.211:25 HTTP/1.1" 403 210 Handler: (null) ---------------------------------------- CONNECT 168.95.4.211:25 HTTP/1.1 Host: 168.95.4.211:25 mod_security-message: Access denied with code 403. Pattern match "^CONNECT " at THE_REQUEST. mod_security-action: 403 HTTP/1.1 403 Forbidden Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1
Pode acontecer dele bloquear muito mais do que deveria, para isso você terá que editar as regras manualmente para melhor se adequar ao seu servidor. Caso você deseje desabilitar o mod_security em apenas uma pasta, você deve adicionar o seguinte ao seu httpd.conf:
<Location "/var/www/suapasta"> SecFilterEngine Off </Location>
Não se esqueça de reiniciar o apache após realizar as alterações necessárias.
Referências: http://www.modsecurity.com http://www.gotroot.com
Rafael M. Capovilla - 1c3_m4n - iceman NOSPAM underlinux com br


