Mod Security

Escrito por | 01 Octubre 2013 | Publicado en Octubre 2013
Mod Security es un firewall para Apache utilizado por los proveedores de hosting para agregar ciertas reglas complejas y reaccionar en algunos casos. Mod Security podría salvarnos de un ataque como también convertir nuestro trabajo como desarrolladores en una pesadilla. A continuación explicaremos de que se trata, que funciones cumple y soluciones para algunos casos.

En algunas ocasiones nos encontramos con errores de este tipo:

Not Acceptable

An appropriate representation of the requested resource /administrator/index.php could not be found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

Este tipo de errores son gatillados por el servidor cuando recibe información que no esta permitida de recibir por el firewall Mod Security. Es posible también encontrarnos con errores 403, 404 o 500.

¿Cómo funciona?

El modulo funciona como un filtro para ciertas lineas de codigo que podrían ser consideradas como sospechosas o que podrían ser mal utilizadas. Entre las funcionalidades especificas cuenta con:

  • 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.

Desde la version 2.0 cuenta con:

  • Cinco fases de procesamiento, incluyendo: encabezados del pedido (request headers), cuerpo del pedido (request body), encabezados de respuesta (response headers), cuerpo de respuesta (response body) y almacenamiento en bitácora (logging).
  • Opciones de transformación por regla.
  • Variables transaccionales.
  • Persistencia de datos (utilizado en seguimientos de direcciones IP, sesiones de aplicación, y usuarios de aplicación).
  • Soporte para ranking de anomalías y correlación básica de eventos (los contadores pueden ser automáticamente decrementados con el paso del tiempo, las variables pueden expirar).
  • Soporte para aplicaciones Web e IDs de sesión.
  • Soporte para XML (parseo, validación, XPath).
  • bloqueo de IP

Ejemplo Práctico

Hay algunos componentes que traen por defecto algunas líneas o plugins que podrían ser considerados como riesgosos por mod security. Por ejemplo, el Ai Contact Safe, es un excelente sistema para generación de formularios pero en su configuración tiene los siguientes parámetros:

aiContactSafe

Los elementos que se encuentran subrayados, ( ! ) y %mark%, pueden ser identificados como peligrosos por mod security y de inmediato arrojará un error 500.

Soluciones

  1. Primero que todo una recomendación, siempre trabajar en forma local, aunque tengamos muchos gigas de espacio en una cuenta de hosting, es siempre recomendable trabajar en forma local de forma de poder configurar a nuestro gusto el servidor de desarrollo sin afectar la seguridad.
  2. Deshabilitar mod security. Este procedimiento podría tener sus pro y sus contras, ya que nos permitirá seguir trabajando, pero la seguridad del sitio podría verse afectada si no contamos con las medidas de seguridad necesarias, o contamos con algún tipo de componente de seguridad avanzada como por ejemplo RS Firewall. Para deshabilitar el mod security se puede hacer desde el archivo .htaccess agregando las siguientes lineas de código:
SecFilterEngine Off
SecFilterScanPOST Off

o con :

SecRuleEngine Off
SecFilterInheritance Off
SecFilterEngine Off
SecFilterScanPOST Off
SecRuleRemoveById 300015 3000016 3000017

Si estas soluciones no funcionan es posible que nuestro proveedor de hosting tenga deshabilitada la opción de realizar override a ciertos módulos de PHP o Apache. en este caso tendríamoss que solicitar a nuestro proveedor que lo realice por nosotros.

3.  Agregar exclusiones a mod security. También agregar nuevas reglas y excepciones a mod security, existen reglas específicas para Joomla, tanto comerciales como gratuitas, es recomendable consultar al proveedor de hosting si se presentan problemas frecuentes. Puedes revisar mas informacion sobre exclusiones aqui

4. Ingresar el código directo al archivo "config" Muchos componentes cuentan con un archivo de configuración en el cual se guardan los parametros que se seleccionan normalmente desde la administracion de Joomla, si Mod Security nos presenta problemas podemos modificar directamente los parametros desde dicho archivo.

Mas informacion (en inglés) 

Visto 6210 veces Etiquetado como Spanish, Desarrollador
Leo Soto

Leo Soto

Desde Valparaíso apoyo a la comunidad Joomla desde sus inicios, ya sea con mi participacion en foros, traducción de componentes y artículos para la Joomla Community Magazine.

Me especializo en desarrollo de aplicaciones web, catálogos, sitios web corporativos y diseño adaptativo. Mi fuerte es ZOO CCK y Warp Framework. 

Perfiles Sociales