Aceptar Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información.

Blog

Seguridad en Apache: 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.

No podíamos irnos sin recordarte que puedes acceder a algunos de nuestros cursos de forma 100% gratuita para que consigas formarte y crecer como un profesional IT.

¿Quieres aprender más sobre Seguridad Linux ?

Regístrate Gratis