Redes y Sistemas

Seguridad en Apache: modSecurity

Aprende a mejorar la seguridad en Apache con el uso de modSecuritymodSecurity, un firewall de aplicaciones Web.

Publicado el 18 de Septiembre de 2013
Compartir

Qué es modSecurity

modSecurity es un firewall de aplicaciones Web embebible bajo licencia GNU que se ejecuta como módulo del servidor web Apache, provee protección contra diversos ataques hacia aplicaciones Web y permite monitorizar tráfico HTTP, así como realizar análisis en tiempo real sin necesidad de hacer cambios a la infraestructura existente. modSecurity filtra ataques por XSS, SQL Injection, comportamientos anómalos en protocolos, robots, troyanos, LFI... incorporando además reglas específicas para algunos de los gestores de contenido más populares como Joomla o Wordpress.

Soporta integración con ModProxy por lo que podemos proteger aplicaciones desplegadas en otros servidores gracias a esta integración. Además modSecurity cuenta con una consola de administración que permite recopilar registros de monitorización y alertas en tiempo real así como de opciones automatizadas de mantenimiento, entre otras características.

mod_security

Instalación de modSecurity

A continuación vamos a describir el proceso de instalación de modSecurity 2.7 en Debian, en Ubuntu está disponible en los repositorios. Las descargas necesarias podemos realizar desde la web oficial del proyecto http://www.modsecurity.org/

1.- Descargamos las fuentes y descomprimimos:

wget https://www.modsecurity.org/tarball/2.7.5/modsecurity-apache_2.7.5.tar.gz
tar -zxvf modsecurity-apache_2.7.5.tar.gz

2.- Instalamos algunas dependencias necesarias:

apt-get install apache2-threaded-dev libxml2-dev libcurl4-gnutls-dev -y

3- Compilamos e instalamos:

cd modsecurity-apache_2.7.5
./configure
make
make install

4.- Cargamos el módulo: Creamos el siguiente fichero

vim /etc/apache2/mods-available/mod-security2.load

con el siguiente contenido:

LoadFile /usr/lib/libxml2.so
LoadFile /usr/lib/liblua5.1.so.0
LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so

5.- Activamos modSecurity: Antes de activar modSecurity debemos activar unique_id

a2enmod unique_id

y activamos modSecurity ahora:

a2enmod mod-security2

6.-Configuramos las reglas: Una vez hemos instalado modSecurity es necesario establecer las reglas que establecerán las condiciones del filtrado de métodos. Descargamos las reglas de filtrado en /etc/apache2:

cd /etc/apache2
apt-get install git
git clone https://github.com/SpiderLabs/owasp-modsecurity-crs

Una vez descargado veremos varios directorios además de diversas utilidades. Para una primera aproximación renombraremos modsecurity_crs_10_config.conf.example a modsecurity_crs_10_config.conf:

cp modsecurity_crs_10_config.conf.example modsecurity_crs_10_config.conf

Para finalizar editamos apache2.conf con el siguiente contenido: vim /etc/apache2/apache2.conf

   
   SecRuleEngine On
   SecRequestBodyAccess On
   SecResponseBodyAccess Off
   SecDebugLog /var/log/apache2/modsec_debug.log
   SecDebugLogLevel 1
   SecAuditEngine RelevantOnly
   SecAuditLogRelevantStatus ^5
   SecAuditLogParts ABIFHZ
   SecAuditLogType Serial
   SecAuditLog /var/log/apache2/modsec_audit.log
   SecRequestBodyLimit 131072
   SecRequestBodyInMemoryLimit 131072
   SecResponseBodyLimit 524288
   SecDataDir  /tmp/
   SecUploadDir /tmp/
   SecTmpDir /tmp/
   Include owasp-modsecurity-crs/modsecurity_crs_10_config.conf
   Include owasp-modsecurity-crs/base_rules/*.conf
   Include owasp-modsecurity-crs/optional_rules/*.conf
   Include owasp-modsecurity-crs/slr_rules/*.conf

Hay que ser cuidadoso con SecDataDir, SecUploadDir y SecTmpDir ya que las aplicaciones que suban ficheros y usen temporales no van a funcionar. De forma similar, hay que prestar atención a posibles configuraciones de los atributos SecRequestBodyLimit, SecRequestBodyInMemoryLimit, SecResponseBodyLimit que se suelen definir en el archivo apache2.conf. Estas configuraciones nos va determinar las características de subida de archivos a través de nuestras aplicaciones web. Si todo ha ido bien, pronto comenzaremos a ver en nuestro archivo de logs de Apache, decenas por no decir centenares de logs de este tipo:

[client 192.168.1.154] ModSecurity: Access denied with code 403 (phase 2). 
Pattern match "^[\\\\d.:]+$" at REQUEST_HEADERS:Host. 
[file "owasp-modsecurity-crsbase_rules/modsecurity_crs_21_protocol_anomalies.conf"] 
[line "98"] [id "960017"]

Si queremos ampliar el potencial de filtrado de nuestro módulo podemos acudir a http://www.gotroot.com/mod_security+rules y descargarnos libremente sus colecciones de reglas propias. Espero que esta primera introducción a modSecurity les sirva para reforzar la seguridad de sus servidores web Apache, tarea primordial en estos tiempos. Como siempre, gracias por leernos, y le invitamos a dejar un comentario si tiene alguna pregunta.


Compartir este post

También te puede interesar...

Tecnología

8 Consejos de seguridad servidores Apache

02 Marzo 2016 Esaú Abril Nuñez
Servidor Web Apache

Servidor Web Apache 2.4

6 horas y 11 minutos · Curso

Estudia las distintas funcionales que nos ofrece el servidor web Apache 2.4. Aprenderemos su instalación, configuraciones habituales y muchas de sus funcionalidades en detalle.

  • Servidores Web
Artículos
Ver todos