Melhorando a segurança do Apache (dica)

Uma dica básica e rápida que melhora e muito a segurança dos servdores web com apache2 é o uso do mod_security, esse módulo que é altamente configurável é já vem com algumas regras padrão que são úteis para quem não quer ter trabalho de criar as suas. 😉

Vamos instalar o módulo:

root # apt-get install libapache2-modsecurity

Entre no diretório /etc/modsecurity:

root # cd /etc/modsecurity

Copie o arquivo modsecurity.conf-recommended para modsecurity.conf

root # cp modsecurity.conf-recommended modsecurity.conf

Algumas regras deste arquivo:
SecFilterEngine (on|off)habilita ou desabilita o sistema de filtro.
SecFilterCheckURLEncoding (on|off)Essa funcionalidade permite verificar se os parametros passados na url estão formatados utilizando o encoding correto, utilizando hexadecimais para representar caracteres como espaços, letras acentuadas e outros(tudo que foge ao US-ASCII). Algumas vezes os ataques são planejados utlizando valores incorretos de hexadecimais na tentativa de causar uma falha.
SecFilterScanPost (of|off)Habilita o filtro a agir não somente nos dados enviados via GET mas também nos enviados via POST.

Essas são configurações gerais da ferramenta. Feito isso podemos adicionar os filtros especificos utilizando a diretiva SecFilter, abaixo coloco alguns exemplos retirados do arquivo default de configuração:

SecFilter “\.\./” – filtra requisições que tentem navegar nos diretorios da aplicação como http://meuhost.com.br/../../config.php

SecFilter “<( |\n)*script” – filtra requisições que tentam implementar algum tipo de XSS usando tags script

SecFilter “delete[[:space:]]+from” – filtra tentativas de sql injection na tentativa de apagar dados passando o comando delete pela URL.

SecFilter “insert[[:space:]]+into” – filtra tentativas de sql injection na tentativa de inserir dados passando o comando insert pela URL.

SecFilter “select.+from” – filtra tentativas de sql injection na tentativa de visualizar dados passando o comando select pela URL.

SecFilterSelective “HTTP_USER_AGENT|HTTP_HOST” “^$” – Filtra requisições que não tenham user agent e host, duas informações que muitas vezes não existe nos ataques feitos utilizando CURL.

Espero que isso ajude a melhorar a segurança do seu servidor web, lembrando que há muitas regras que podem ser criadas e extendidas as configurações.

Não esqueça de comentar, votar no TopBlog e curtir nossa página no Facebook.

Fonte de consulta: http://ianntech.com.br/2010/11/17/seguranca-php-apache/

  • My Master!!!

    Pode acrescentar também nessa história aí, lá no httpd.conf ou apache2.conf (dependendo da distro)…

    ServerSignature Off
    ServerTokens Prod

    Options -Indexes -FollowSymLinks -Includes -ExecCGI
    AllowOverride None
    Order deny,allow
    Deny from all

    Depois disso desabilitar os módulos que não estão sendo utilizados e além de habilitar o mod_security, habilitar também o mod_evasive