Instalación y configuración de la aplicación mod_security en Apache
Actualizado el 31 de agosto, 2016. Por OpenCloud.
ModSecurity es una aplicación web de firewall para el servidor web Apache. Además de proporcionar capacidades de registro, ModSecurity puede monitorizar el tráfico HTTP en tiempo real con el fin de detectar y evitar ataques. ModSecurity también opera como una herramienta web para la detección de intrusos, permitiéndole reaccionar a eventos sospechosos que ocurren en sus sistemas web. En este tutorial explicamos cómo instalar, configurar y usar ModSecurity.
Instalar ModSecurity
Antes de instalar ModSecurity, querrá tener una infraestructura LAMP configurada en su servidor OpenCloud. Para más instrucciones puede ver nuestra guía de instalación y configuración de LAMP en CentOS.
Ubuntu/Debian
Para instalar ModSecurity en un servidor con Ubuntu o Debian, ingrese los siguientes comandos, uno por uno:
sudo apt-get install libxml2 libxml2-dev libxml2-utils
sudo apt-get install libaprutil1 libaprutil1-dev
sudo apt-get install libapache-mod-security
Una vez ejecutados, ya tendrá ModSecurity instalado en su servidor.
CentOS / Fedora
Para instalar ModSecurity en un servidor en el cual ejecute una distribución CentOS o Fedora, lleve a cabo los siguientes pasos:
-
Instale el compilador GCC y las dependencias ingresando los siguientes comando uno a uno:
sudo yum install mod_security
-
Reinicie Apache ejecutando el siguiente comando:
sudo /etc/init.d/httpd restart
¡Ya ha completado la instalación de ModSecurity!
Conjunto de reglas principales para ModSecurity OWASP
Usaremos una configuración base de referencia, en este caso el conjunto de reglas principales OWASP. Las instrucciones para la instalación están en el GitHub del proyecto SpiderLabs:
- https://github.com/SpiderLabs/owasp-modsecurity-crs/blob/master/INSTALL.
- Contenido del archivo modsecurity_crs_10_setup.conf.example.
Configurar ModSecurity
Debe usar la información de modsecurity_10_crs_config
, así que copiemos el contenido del ejemplo:
cp modsecurity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf
Hay cinco directorios de reglas:
activated_rules
base_rules
experimental_rules
optional_rules
slr_rules
Nota:
El directorio activated_rules
estará vacío en caso de que quisiera hacer un enlace simbólico con los archivos de configuración para las reglas que desea usar en ese directorio.
Hay dos formas en las cuales puede configurar ModSecurity: usar un conjunto de reglas básicas, o usar enlaces simbólicos. Las siguientes secciones explican ambas.
Usando un conjunto de reglas básicas
Si quieres comenzar con un conjunto de reglas básicas y no preocuparse por enlazar simbólicamente los archivos de configuración, siga los siguientes pasos:
-
Modifique el módulo
<IfModule>
en su archivohttpd.conf
tal como se muestra abajo:
/etc/apache2/httpd.conf (Debian o Ubuntu)<IfModule security2_module> Include modsecurity-crs/.conf Include modsecurity-crs/base_rules/.conf </IfModule>
/etc/httpd/conf/httpd.conf (CentOS o Fedora)
<IfModule security2_module> Include modsecurity-crs/.conf Include modsecurity-crs/base_rules/.conf </IfModule>
-
En el archivo
modsecurity_crs_20_protocol_violations.conf
cambie el nombre de la variableREQBODY_ERROR
porREQBODY_PROCESSOR_ERROR
. - Reinicie Apache para que los cambios surtan efecto:
Debian / Ubuntu:/etc/init.d/apache2 restart
CentOS/Fedora:
/etc/init.d/httpd restart
Una vez terminado, habrá configurado ModSecurity para que utilice un conjunto de reglas básicas.
Usando enlaces simbólicos
Si prefiere enlazar simbólicamente los archivos de configuración al directorio activated_rules
, siga los siguientes pasos:
-
Edite el archivo de configuración de Apache de modo que el módulo
<IfModule>
luzca así:
/etc/apache2/httpd.conf (Debian o Ubuntu)<IfModule security2_module> Include modsecurity-crs/modsecurity_crs_10_config.conf Include modsecurity-crs/activated_rules/*.conf </IfModule>
/etc/httpd/conf/httpd.conf (CentOS o Fedora)
<IfModule security2_module> Include modsecurity-crs/modsecurity_crs_10_config.conf Include modsecurity-crs/activated_rules/*.conf </IfModule>
-
Cree los enlaces simbólicos antes de reiniciar Apache. Algunos ejemplos a continuación:
-
Para copiar todas las reglas base en
base_rules
al directorioactivated_rules
:> > for f in ls base_rules/ ; do ln -s /usr/local/apache/conf/crs/base_rules/$f activated_rules/$f ; done >
-
Para copiar las reglas de comentarios de spam desde el directorio
optional_rules
al directorioactivated_rules
:> > for f in ls optional_rules/ | grep comment_spam ; do sudo ln -s /usr/local/apache/conf/crs/optional_rules/$f activated_rules/$f ; done >
-
-
Reinicie Apache para que los cambios surtan efecto:
Debian / Ubuntu:/etc/init.d/apache2 restart
CentOS/Fedora:
/etc/init.d/httpd restart
¡Ha configurado exitosamente ModSecurity con enlaces simbólicos!
Recursos adicionales
Este tutorial no incluye detalles sobre el uso de ModSecurity. Para complementar la información aquí presentada puede consultar los siguientes recursos. Aunque este material es provisto esperando que sea útil, tome en cuenta que no podemos dar fe de la actualidad o precisión de los contenidos externos.
- Documentación oficial de Apache. Este primer enlace presentar la información según las versiones de Apache.
- Sitio oficial de ModSecurity.
- Sitio oficial de OWASP