Pesquisar este blog

sexta-feira, 15 de outubro de 2010

Mod Secure

Segue um tutorial que preparamos para nossos clientes dedicados (não gerenciados) que acho interessante para todos: sobre atualização e instalação de regras do mod_secure.

Acessando via root execute:
cd /usr/local/apache/conf/
mkdir modsec_rules
cd modsec_rules
wget http://downloads.prometheus-group.com/delayed/rules/modsec-201002051427.tar.gz
tar zvxf modsec-201002051427.tar.gz
rm -fr zvxf modsec-201002051427.tar.gz
Mais info sobre o PG acesse: http://prometheus-group.com

Crie os diretórios abaixo, eles são necessários para gravação e leitura de arquivos temporários do ASL:
mkdir /var/asl
mkdir /var/asl/tmp
mkdir /var/asl/data
mkdir /var/asl/data/msa
mkdir /var/asl/data/audit
mkdir /var/asl/data/suspicious
mkdir /etc/asl
Corrija as permissões :
chown nobody.nobody /var/asl/data/msa
chown nobody.nobody /var/asl/data/audit
chown nobody.nobody /var/asl/data/suspicious
chmod o-rx -R /var/asl/data/*
chmod ug+rwx -R /var/asl/data/*
e crie o arquivo "lista branca":
touch /etc/asl/whitelist
Agora acesse o WHM e clique no "Mod Security", detetando as regras atuais e no lugar delas adicione:
SecComponentSignature 201002051427
SecRequestBodyAccess On
SecResponseBodyAccess On
SecResponseBodyMimeType (null) text/html text/plain text/xml
SecResponseBodyLimit 2621440
SecServerSignature Apache
SecUploadDir /var/asl/data/suspicious
SecUploadKeepFiles Off
SecAuditLogParts ABIFHZ
SecArgumentSeparator '&'
SecCookieFormat 0
SecRequestBodyInMemoryLimit 131072
SecDataDir /var/asl/data/msa
SecTmpDir /tmp
SecAuditLogStorageDir /var/asl/data/audit
SecResponseBodyLimitAction ProcessPartial

# ConfigServer ModSecurity - descomente caso vc use o ConfigServer CMC.
Include /usr/local/apache/conf/modsec2.whitelist.conf

#ASL Rules
Include /usr/local/apache/conf/modsec_rules/99_asl_jitp.conf
Include /usr/local/apache/conf/modsec_rules/50_asl_rootkits.conf
#Include /usr/local/apache/conf/modsec_rules/00_asl_rbl.conf
Include /usr/local/apache/conf/modsec_rules/00_asl_whitelist.conf
Include /usr/local/apache/conf/modsec_rules/05_asl_scanner.conf
Include /usr/local/apache/conf/modsec_rules/20_asl_useragents.conf
Caso você use o ConfigServer CMC (http://www.configserver.com/cp/cmc.html) deixe a linha "Include /usr/local/apache/conf/modsec2.whitelist.conf" liberada, caso não use, comente-a com um # no início.

Existem vários arquivos de regras específicas no /usr/local/apache/conf/modsec_rules/ - estas acima são sugestões.

Tome cuidado com o load do servidor - quanto mais regras forem adicionadas ao modulo mais o apache demorará a carrega-las em cada processo aberto. O que sugiro neste caso para usar são:
Include /usr/local/apache/conf/modsec_rules/99_asl_jitp.conf
Include /usr/local/apache/conf/modsec_rules/50_asl_rootkits.conf
Include /usr/local/apache/conf/modsec_rules/20_asl_useragents.conf
Após tudo isso salve e reinicie o apache. Acompanhe os logs do mo_secure para ver que tipo de tentativa de acesso indevido ocorre, em quais scripts e domínios de seu servidor.