Instalar de ModSecurity con Apache en Ubuntu 14.04

Generalidades

ModSecurity es un firewall de aplicaciones web de código abierto (WAF) diseñado como un módulo para servidores web Apache. ModSecurity proporciona un motor de reglas flexible, que permite a los usuarios escribir (o utilizar reglas de terceros) para proteger sitios web de ataques como XSS, SQLi, CSRF, DDoS e inicio de sesión por fuerza bruta (así como una serie de otras vulnerabilidades). Este tutorial describe los conceptos básicos de la instalación y configuración de ModSecurity para un servidor web Apache. Este tutorial asume que Apache ya está instalado y corriendo.

Instalar ModSecurity

Inicia sesión y cambia a tu usuario root.

[user@instance]$ sudo su -

Asegúrate de que las fuentes del paquete del sistema estén actualizadas:

[root@instance]# apt-get update

Luego, instala ModSecurity:

[root@instance]# apt-get install libapache2-mod-security2

Esto instala y activa ModSecurity automáticamente. Para comenzar a utilizar ModSecurity, se debe colocar un archivo de configuración utilizable. El paquete ModSecurity proporcionado para Ubuntu contiene un archivo de configuración recomendado predeterminado que se puede usar como punto de partida:

[root@instance]# mv /etc/modsecurity/modsecurity.conf-recommended \
/etc/modsecurity/modsecurity.conf

Una vez que esto esté en su lugar, vuelvE a cargar Apache para que el archivo de configuración predeterminado de ModSecurity surta efecto:

[root@instance]# service apache2 reload

Configurar ModSecurity

El archivo de configuración predeterminado recomendado proporcionado para ModSecurity tiene muy pocas reglas de protección reales configuradas, pero es un buen punto de partida. En este tutorial, el conjunto de reglas básicas de OWASP (CRS) se utiliza para proporcionar protección adicional.

Habilitar conjuntos de reglas de CRS

El paquete de Ubuntu para ModSecurity recomienda un paquete separado que contiene los conjuntos de reglas de CRS, que se pueden usar como una fuente adicional de reglas para WAF. Configura ModSecurity para leer archivos de reglas del directorio activated_rules agregando las siguientes directivas al archivo /etc/apache2/mods-enabled/security2.conf:

IncludeOptional "/usr/share/modsecurity-crs/*.conf"
IncludeOptional "/usr/share/modsecurity-crs/activated_rules/*.conf"

Esto indica a ModSecurity que intente utilizar cualquier archivo que termine en conf como archivos de configuración. Más información está disponible en el archivo README en el directorio activated_rules.

Una vez hecho esto, vincula los conjuntos de reglas deseados en las ubicaciones recién incluidas. Por ejemplo, para agregar reglas diseñadas para proteger contra ataques de inyección de SQL, enlaza en el archivo sql_injection_attacks:

[root@instance]# cd /usr/share/modsecurity-crs/
[root@instance]# ln -s ./base_rules/modsecurity_crs_41_sql_injection_attacks.conf \
./activated_rules/

Por supuesto, es posible vincular solo ciertos conjuntos de reglas o grupos completos, según tus necesidades. El CRS también se distribuye con conjuntos de reglas experimentales y personalizados para detectar y mitigar una amplia variedad de amenazas emergentes. Los conjuntos de reglas para instalaciones específicas de CMS/aplicaciones, como WordPress y Joomla, también están disponibles en el directorio slr_rules (aunque como una oferta de conjunto de reglas WAF gratuita, estos conjuntos de reglas no siempre están actualizados con las últimas amenazas).

Cada vez que se ajusta la configuración de ModSecurity, Apache debe volver a cargarse para que las reglas surtan efecto:

[root@instance]# service apache2 reload

Activar ModSecurity

ModSecurity corre inicialmente en modo DetectionOnly, en el que WAF examina el tráfico HTTP(S), pero en realidad no bloquea las solicitudes maliciosas. Esto debe ajustarse para que ModSecurity denegue el tráfico de ataque. En el archivo /etc/modsecurity/modsecurity.conf, busca la directiva SecRuleEngine:

SecRuleEngine DetectionOnly

Y configura sus valores como On:

SecRuleEngine On

Y claramente, recarga Apache para efectuar los cambios:

[root@instance]# service apache2 restart

Configuración Adicional

Los entornos WAF pueden ser complejos y requerir mucho tiempo para sintonizar y ajustar en función de las necesidades de tu instancia, que es en gran parte la razón por la que se creó el CRS. Si necesitas escribir o cambiar reglas personalizadas, se recomienda leer el manual de servicio de ModSecurity.

Adicionalmente, la lista de correo modsecurity-users y #modsecurity room en Freenode IRC son excelentes recursos para usuarios y desarrolladores experimentados de ModSecurity.

 

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?