Arquivo

Textos com Etiquetas ‘EPEL’

CentOS: Instalando mod_security

15, dezembro, 2009 2 comentários

Opa,

Nesse post iremos instalar e ativar o suporte a mod_security no CentOS 5.4, o mod_security é útil para proteger o Apache contra diversos tipos de ataques a aplicações web, agindo como uma camada de proteção.

Para realizar a instalação do mod_security no CentOS existem duas formas, compilar o código-fonte ou instalar o pacote binário do repositório EPEL (Extra Packages for Enterprise Linux). Como já possuo o repositório EPEL (e por preguiça também lógico) escolhi instalar o pacote binário, segue abaixo os procedimentos utilizados.

Caso não possua o repositório EPEL ativado no seu sistema, instale-o com o comando abaixo:

Versão 32 bits
# rpm −Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel−release−5−3.noarch.rpm

Versão 64 bits
# rpm −Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel−release−5−3.noarch.rpm

Antes de instalar o pacote do mod_security no meu ambiente, CentOS 5.4 64 bits, foi necessário instalar o pacote lua (dica que encontrei no comentário do Zigzacom na fonte), portanto, caso encontre erros de dependência da biblioteca liblua-5.1.so durante a instalação execute o comando abaixo:

# rpm −ivh http://mirrors.kernel.org/fedora−epel/5Server/x86_64/lua−5.1.2−1.el5.x86_64.rpm

Instale o pacote do mod_security com o comando abaixo:

# yum install mod_security

O arquivo de configuração principal do mod_security encontra-se em /etc/httpd/conf.d/mod_security.conf, no diretório /etc/httpd/modsecurity.d/ encontram-se todos os outros arquivos de configuração do mod_security incluindo o arquivo /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf que deve ser ajustado de acordo com as suas necessidades. Os arquivos de log encontram-se em /var/log/httpd/modsec_debug.log e em /var/log/httpd/modsec_audit.log.

Após a instalação verifique no arquivo /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf se a opção SecRuleEngine está configurada para On:

# vim /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf

SecRuleEngine On

Agora basta reiniciar o serviço com o comando abaixo:

# service httpd restart

Nos logs do Apache pode ser verificado se o módulo foi devidamente carregado:

# tail -f /var/log/httpd/error_log

[Tue Dec 15 20:34:35 2009] [notice] caught SIGTERM, shutting down
[Tue Dec 15 20:34:44 2009] [notice] SELinux policy enabled; httpd running as context root:system_r:httpd_t
[Tue Dec 15 20:34:45 2009] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Tue Dec 15 20:34:46 2009] [notice] ModSecurity for Apache/2.5.9 (http://www.modsecurity.org/) configured.
[Tue Dec 15 20:34:46 2009] [notice] Original server signature: Apache/2.2.3 (CentOS)
[Tue Dec 15 20:34:46 2009] [notice] Digest: generating secret for digest authentication ...
[Tue Dec 15 20:34:46 2009] [notice] Digest: done
[Tue Dec 15 20:34:47 2009] [notice] Apache/2.2.0 (Fedora) configured -- resuming normal operations

E após algumas tentativas segue um exemplo do mod_security em ação:

# tail -f /var/log/httpd/error_log

[Tue Dec 15 18:29:21 2009] [error] [client XX.XX.XX.XX] ModSecurity: Warning. Match of "rx ModSecurity" against "WEBSERVER_ERROR_LOG" required. [ile "/etc/httpd/modsecurity.d/modsecurity_crs_21_protocol_anomalies.conf"] [line "65"] [id "960913"] [msg "Invalid request"] [severity "CRITICAL"] [hostname "meu.site.com"]

Abraço!

Fonte: http://www.cyberciti.biz/faq/rhel-fedora-centos-httpd-mod_security-configuration/