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:

  1. Instale el compilador GCC y las dependencias ingresando los siguientes comando uno a uno:

    sudo yum install mod_security
    
  2. 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:

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:

  1. Modifique el módulo <IfModule> en su archivo httpd.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>
    
  2. En el archivo modsecurity_crs_20_protocol_violations.conf cambie el nombre de la variable REQBODY_ERROR por REQBODY_PROCESSOR_ERROR.

  3. 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:

  1. 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>
    
  2. Cree los enlaces simbólicos antes de reiniciar Apache. Algunos ejemplos a continuación:

    • Para copiar todas las reglas base en base_rules al directorio activated_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 directorio activated_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 >
      
  3. 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.

¿QUÉ DESEAS SABER?

Intentaremos leer tu mente...