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/