modSecurity™ es un firewall de aplicaciones Web embebible que se ejecuta como módulo del servidor web Apache, provee protección contra diversos ataques hacia aplicaciones Web y permite monitorear tráfico HTTP, así como realizar análisis en tiempo real sin necesidad de hacer cambios a la infraestructura existente.
modSecurity™ para Apache es un producto desarrollado por Breach Security. modSecurity™ está disponible como Software Libre bajo la licencia GNU General Public License, a su vez, se encuentra disponible bajo diversas licencias comerciales.
El módulo cuenta con diversas funcionalidades:
- Filtrado de Peticiones: los pedidos HTTP entrantes son analizados por el módulo mod_security antes de pasarlos al servidor Web Apache, a su vez, estos pedidos son comparados contra un conjunto de reglas predefinidas para realizar las acciones correspondientes. Para realizar este filtrado se pueden utilizar expresiones regulares, permitiendo que el proceso sea flexible.
- Técnicas antievasión: las rutas y los parámetros son normalizados antes del análisis para evitar técnicas de evasión.
-
-
- Elimina múltiple barras (//)
- Elimina directorios referenciados por si mismos (./)
- Se trata de igual manera la \ y la / en Windows.
- Decodificación de URL
- Reemplazo de bytes nulos por espacios (%00)
- Comprensión del protocolo HTTP: al comprender el protocolo HTTP, ModSecurity™ puede realizar filtrados específicos y granulares.
- Análisis Post Payload: intercepta y analiza el contenido transmitido a través del método POST.
- Log de Auditoría: es posible dejar traza de auditoría para un posterior análisis forense.
- Filtrado HTTPS: al estar embebido como módulo, tiene acceso a los datos después de que estos hayan sido descifrados.
- Verificación de rango de Byte: permite detectar y bloquear shellcodes, limitando el rango de los bytes.
La instalación en Ubuntu 9.04 es simple, basta tan solo ejecutar en consola lo siguiente:
$ sudo apt-get install libapache-mod-security
Para habilitar modSecurity, debemos crear el archivo /etc/apache2/conf.d/mod_security.conf
$ sudo touch /etc/apache2/conf.d/mod_security.conf
Luego editamos el archivo y incluímos lo siguiente en el:
<ifmodule mod_security2.c>
Include conf.d/mod_security/*.conf
</ifmodule>
Luego creamos el archivo que mostrará los Logs generados por modSecurity
$ sudo mkdir /var/log/apache2/mod_security
$ sudo ln -s /var/log/apache2/mod_security /etc/apache2/logs
Luego descargamos las reglas desde aquí
Posteriormente configuramos las reglas
$ sudo mkdir /etc/apache2/conf.d/mod_security
$ sudo cp modsecurity-core-rules* /etc/apache2/conf.d/mod_security/
$ cd /etc/apache2/conf.d/mod_security
$ sudo tar xvfz modsecurity-core-rules*
$ sudo rm CHANGELOG LICENSE README modsecurity-core-rules*.tar.gz
Si desea deshabilitar cualquier regla de modSecurity, basta con crear el fichero / etc/apache2/conf.d/mod_security/modsecurity_crs_99_disabled_rules.conf y decirle ModSecurity que reglas o lugares desea deshabilitar (puede conocer el número de las reglas de modSecurity, leyendo el archivo de registro /var/log/apache2/mod_security). Por ejemplo:
<Location /trac>
SecRuleRemoveById 950005
SecRuleRemoveById 950006
</Location>
Finalmente reinicie el servidor Apache
$ sudo /etc/init.d/apache2 restart
Fuentes: Wikipedia - textoplano.livejournal.com