Firewall para aplicaciones web (ModSecurity)

Con el fin de poder detectar e impedir ataques contra aplicaciones web, el firewall para aplicaciones web (ModSecurity) examina todas las peticiones realizadas a su servidor web así como las respuestas del servidor de acuerdo con su conjunto de reglas. Si la comprobación es correcta, la petición HTTP se transfiere al contenido del sitio web. De lo contrario, se llevan a cabo las acciones predefinidas.

ModSecurity es un módulo para Apache. Como consecuencia, este solo verifica peticiones HTTP que lleguen a Apache. Apache se complementa con otro servidor web - nginx. Si activa la opción Procesar PHP mediante nginx del servidor web nginx para el contenido dinámico de su sitio web, el firewall para aplicaciones web no podrá verificar las peticiones HTTP, ya que estas nunca llegarán a Apache. En el caso del contenido estático, si se selecciona la opción Servir archivos estáticos directamente mediante nginx, las peticiones HTTP no llegarán a Apache, por lo que estas no serán verificadas por ModSecurity.

Nota: para poder utilizar el firewall para aplicaciones web (ModSecurity), los administradores que hayan actualizado su instalación desde Plesk 11.5 deberán obtener una nueva llave de licencia para Plesk 12 de Odin o de su distribuidor.

Para activar el firewall para aplicaciones web:

  1. Vaya a Herramientas y configuración > Firewall para aplicaciones web (ModSecurity) (en el grupo Seguridad ). El componente ModSecurity debe instalarse en su servidor.


    Web_Application_Firewall

  2. Establezca el modo del firewall para aplicaciones web a Activado o Solo detección. Cada petición HTTP entrante y la respuesta relacionada será verificada mediante un conjunto de reglas. Si la comprobación es correcta, la petición HTTP se transferirá al contenido del sitio web. De lo contrario, el evento será registrado. En el modo Solo detección, no se realizará ninguna otra acción. En el modo Activado, se proporcionará la respuesta HTTP junto con un código de error.

    Nota: podrá establecer los modos del firewall para aplicaciones web tanto a nivel de servidor como de dominio. No obstante, el modo establecido a nivel de dominio no podrá ser superior al establecido para el servidor. Por ejemplo, si el firewall para aplicaciones web está en modo Solo detección a nivel del servidor, no podrá pasarlo a modo Activado para los dominios. Únicamente se mostrarán los modos Desactivado y Solo detección.

  3. Seleccione el grupo de reglas que serán verificadas por el firewall para aplicaciones web por cada petición HTTP entrante o cargue un conjunto de reglas personalizado. Puede escoger cualquiera de los siguientes grupos de reglas:
    • ModSecurity Core Rule Set (CRS) de OWASP. El CRS proporciona una protección genérica frente a vulnerabilidades desconocidas que suelen encontrarse en las aplicaciones web. Este conjunto de reglas se incluye de forma gratuita. Es conocido por ser un conjunto de reglas muy restrictivo; En el caso de que desee utilizarlo en producción, este requiere una configuración adicional. Cuando se selecciona este grupo de reglas, WordPress no funciona de forma completa y la compartición de archivos y el webmail no funcionan. En su lugar, puede utilizar los conjuntos de reglas de Atomic o Comodo.
    • Conjunto de reglas de Atomic ModSecurity. La versión más reciente de las reglas, que incluye todas las mejoras en términos de rendimiento, prestaciones de seguridad nuevas y correcciones de fallos publicados diariamente por Atomicorp GotRoot. Se trata de un conjunto de reglas comercial totalmente soportado y recomendado para su uso en producción. Para activarlo en Plesk, regístrese en el sitio de Atomic e indique su nombre de usuario y contraseña para este sitio.

      ¡Atención! Si selecciona el grupo de reglas de Atomic, lleve a cabo el siguiente proceso para asegurarse de que ModSecurity funcione correctamente:

      Ejecute el comando aum -u en el servidor. El paquete modsecurity de Plesk será sustituido por el del repositorio de Atomic. A continuación, ejecute los siguientes comandos:

      • plesk sbin modsecurity_ctl --disable
      • plesk sbin modsecurity_ctl --disable
      • Reiniciar el servicio:
    • Conjunto de reglas de Comodo ModSecurity. Se trata de un sistema de control del tráfico muy fácil de usar basado en reglas personalizables que protege sus aplicaciones basadas en web frente a los cada vez más frecuentes ataques de hackers mediante el uso de una base de datos de reglas que se actualiza de forma constante. Este conjunto de reglas se incluye de forma gratuita. Para activarlo en Plesk, regístrese en el sitio de Comodo e indique su nombre de usuario y contraseña para este sitio.
  4. Para actualizar automáticamente el conjunto de reglas seleccionado, seleccione la casilla Actualizar conjunto de reglas y seleccione el periodo de actualización.
  5. Seleccione un conjunto de parámetros predefinido o especifique sus directivas personalizadas para ModSecurity. Puede seleccionar los siguientes conjuntos de parámetros predefinidos:
    • Rápido, cuando el URI de la petición HTTP y las partes de los encabezados son analizados. Este modo es el que consume menos CPU.
    • Equilibrado, cuando el URI de la petición HTTP, los encabezados y los datos POST de la petición son analizados. Este modo ofrece un buen equilibrio entre calidad y rendimiento.
    • Exhaustivo, cuando se analizan todos los encabezados de la petición HTTP, los datos POST de esta y el contenido del cuerpo de la respuesta HTTP. Este modo es el que consume más recursos de CPU, si bien es el modo recomendado en el caso de sitios que requieran medidas de seguridad especiales. Un ejemplo de este tipo de sitios serían las tiendas online que aceptan pagos mediante tarjeta de crédito.

      Nota: para obtener un rendimiento óptimo, el firewall para aplicaciones web requiere un servidor DNS local con el almacenamiento de solicitudes en caché habilitado. De lo contrario, puede experimentar lentitud a la hora de cargar sus sitios web cuando el firewall para aplicaciones web esté activado.

ModSecurity utiliza dos ubicaciones para los registros:

  • El registro de auditoría de ModSecurity (ubicado en /var/log/httpd/modsec_audit.log) es muy detallado y lo utiliza el servidor Plesk íntegro. Cuando ModSecurity detecta que se ha producido un evento, genera una entrada en el archivo de registro de auditoría. Para examinarlo, vaya a Herramientas y configuración > Firewall para aplicaciones web (ModSecurity) > haga clic en el enlace Archivo comprimido de registros en la sección Registro de auditoría de ModSecurity. Aquí podrá ver los archivos de registro de ModSecurity y las fechas en las que se modificaron; también podrá descargar archivos de registro.
  • El registro de errores de Apache para un dominio (presente en /var/www/vhosts/DOMAIN.TLD/logs/error_log) solo contiene información resumida acerca de los errores del sitio web. Puede ver el registro de errores de un sitio web específico en el panel del cliente, accediendo a Sitios web y dominios > <nombre_del_dominio> > Registros> seleccione solo Errores de Apache y Errores de nginx en lugar de Todos los registros, a la derecha.

Un sitio web puede dejar de funcionar tal y como era de esperar una vez cambiado el modo del firewall para aplicaciones web de Desactivado a Activado o Solo detección. En el registro de errores del sitio web encontrará este tipo de códigos de error como 403, 404 o 500 y estos desaparecerán una vez haya vuelto a cambiar el modo del firewall para aplicaciones web a Solo detección o Desactivado. En este caso, examine el registro de auditoría de ModSecurity para ver lo que está sucediendo. Puede desactivar reglas de seguridad que sean demasiado restrictivas o ajustar el sitio web.

Para descubrir el motivo por el que la petición HTTP no pudo completarse para un sitio web y desactivar la regla de seguridad:

  1. Vaya a Herramientas y configuración > Firewall para aplicaciones web (ModSecurity).
  2. Haga clic en el enlace Archivo de registro de ModSecurity para descargar el registro de auditoría y abrirlo en una nueva ventana del navegador.
  3. Use la combinación de teclas de búsqueda (Ctrl+F en la mayoría de navegadores web) para encontrar los eventos del sitio web (el nombre de dominio) que han causado los problemas. Por ejemplo, your_domain.tld. El navegador destacará entradas como HOST: your_domain.tld. En las tres líneas anteriores a la entrada destacada, busque una cadena de texto como --eece5138-B--. Los ocho símbolos que aparecen entre guiones (en nuestro ejemplo, eece5138) constituyen la ID del evento desencadenado por la petición HTTP.
  4. Busque otras entradas con el mismo ID de evento. Busque cualquier entrada con la letra H detrás del ID del evento (en nuestro ejemplo, eece5138-H--). Esta entrada contiene el ID y la descripción de la regla de seguridad desencadenada durante la comprobación de la petición HTTP. El ID de la regla de seguridad es un número entero entrecomillado que empieza por 3 y que muestra el id de prefijo entre corchetes. Por ejemplo, [id "340003"].
  5. En el evento, busque la ID de la regla de seguridad usando la subcadena [id "3.
  6. Vaya a Herramientas y configuración > Firewall para aplicaciones web (ModSecurity).
  7. En la sección Reglas de seguridad, seleccione la regla de seguridad por su ID (por ejemplo 340003), por etiqueta (por ejemplo CVE-2011-4898) o por expresión regular (por ejemplo XSS) y a continuación haga clic en ACEPTAR.
Estos consejos le serán útiles si tiene ModSecurity instalado en el servidor antes de actualizar a Plesk 12:
  • Plesk instalará su propio paquete de ModSecurity. No obstante, durante la comprobación previa a la actualización, Plesk Installer le preguntará si está de acuerdo con que se instale el paquete de ModSecurity sobre la instalación ya existente.
  • Se conservará la configuración existente de ModSecurity. Sin embargo, dado que existen multitud de distribuciones y configuraciones de ModSecurity, resulta difícil predecir qué conflictos pueden surgir entre las configuraciones nuevas y las antiguas. Para evitar problemas, guarde la configuración existente y desinstale ModSecurity antes de actualizar a Plesk 12 (o antes de instalar el paquete ModSecurity de Plesk).