Skip to main contentSkip to footer
Guías de complementos

Dentro del Web Application Firewall de ReportedIP Hive

Updated Patrick Schlesinger
ReportedIP Hive plugin guide cover — Web Application Firewall, free and GPL-2.0

ReportedIP Hive ofrece un Web Application Firewall que analiza cada solicitud antes de que WordPress la procese. Compara la URL, la cadena de consulta, el cuerpo de la solicitud y el agente de usuario con un conjunto de reglas firmadas, bloqueando la SQL Injection, el XSS, el recorrido de rutas, la inyección de comandos y una docena de tipos de ataques más; además, las reglas se actualizan automáticamente sin necesidad de lanzar una nueva versión del plugin.

El motor y su conjunto de reglas predeterminadas son gratuitos en todos los planes. Esta guía explica cómo el cortafuegos inspecciona el tráfico, de dónde proceden las reglas, cómo se evita que una expresión regular errónea provoque la caída del sitio web, cómo eliminar un False Positive desde el panel de administración y cómo funciona la protección opcional previa a WordPress. La información se refiere a Hive en su versión 2.1.21, tras la ronda de refuerzo de seguridad realizada entre las versiones 2.1.5 y 2.1.21.

Lo que comprueba el cortafuegos de WordPress en cada solicitud

El WAF se ejecuta en el init gancho con prioridad 1, inmediatamente después de la comprobación de bloques de IP de Hive. Una solicitud procedente de una IP ya bloqueada nunca llega al cortafuegos, por lo que no se desperdicia trabajo. Todo lo demás se inspecciona: la URI de la solicitud, la cadena de consulta, el cuerpo de la solicitud y el agente de usuario se simplifican y se comparan con el conjunto de reglas activo.

El coste es de unos 4 microsegundos de CPU por solicitud, sin consultas adicionales a la base de datos cuando existe una caché de objetos persistente. Las clases de ataque detectadas incluyen SQL Injection, cross-site scripting, recorrido de rutas, inyección de comandos y envoltorios LFI, además de SSRF, Log4Shell/JNDI, inyección de objetos PHP, inyección NoSQL, XXE, subidas de web-shell, CRLF e inyección de plantillas —cada una con su propio código de motivo de bloqueo—.

La inspección es de solo lectura y tiene en cuenta los False Positives. Los administradores que hayan iniciado sesión están exentos (los administradores pegan legítimamente código SQL y código en los editores), /wp-admin nunca se inspecciona, y las direcciones IP incluidas en la lista Whitelist se omiten. Una coincidencia se bloquea a través de la misma ruta 403, segura para la caché y codificada por referencia, que utilizan los demás sensores, o simplemente se registra cuando está activado el Report-Only Mode.

¿Por qué las Firewall Rules se encuentran en un servidor y no en el complemento?

La mayoría de los cortafuegos de WordPress tienen las firmas codificadas de forma fija, por lo que cada actualización de las reglas requiere el lanzamiento de un nuevo plugin. Hive lo hace al revés: las firmas proceden de la Rule API de reportedIP.com en forma de conjuntos de reglas versionados, firmados con Ed25519 y escalonados por niveles, que se sincronizan cada seis horas. Las nuevas firmas de ataque llegan a todas las instalaciones en cuestión de horas.

Hay cuatro conjuntos de reglas — waf, bot_signatures, disposable_domains y scan_paths. Cada uno está firmado con una firma Ed25519 independiente, y el complemento la verifica comparándola con un conjunto de claves públicas incluido (la actual y la siguiente, para la rotación) antes de aplicarla. Si la verificación falla, el feed tiene un tamaño excesivo o no se puede acceder al servidor, Hive recurre a un conjunto de reglas de referencia incluido. Una fuente manipulada o secuestrada no puede corromper las reglas, ni siquiera si se filtra una API Key o se rompe el cifrado TLS.

La configuración básica viene incluida en el complemento, por lo que el cortafuegos funciona totalmente sin conexión en el modo «Local Shield», sin necesidad de cuenta ni de conexiones salientes. La Rule Sync es opcional: solo se ejecuta en el modo «Community» si se ha configurado una API Key.

Nivel básico gratuito, funciones más avanzadas en la versión Professional

La regla de escalonamiento sigue el modelo de Paranoia Level del Conjunto de Reglas Básicas de OWASP, el estándar de facto para WAF utilizado por ModSecurity y Cloudflare.

Paranoia LevelPersonajePlan de la colmena Hive
PL1La configuración de referencia, ajustada para minimizar los False Positives, cubre el Top 10 de OWASP.Free (paquete básico)
PL2Más vigilancia, unos cuantos False Positives másContributor (semanal) / Professional
PL3Ataques poco frecuentes, técnicas de ofuscación y cobertura de elusión de WAF, False Positives ocasionalesProfessional (Priority Sync)

La versión gratuita ofrece un cortafuegos eficaz con un bajo índice de False Positives: esa es la promesa de protección. La versión Professional añade los conjuntos de reglas PL2/PL3, más exhaustivos y actualizados con frecuencia, a través de Priority Sync, junto con las fuentes en tiempo real de rangos de IP de bots y dominios desechables.

Cómo evita Hive que una regla errónea provoque la caída de tu sitio web

Dado que los patrones proceden de un feed, una expresión regular mal formada supone un riesgo de primer orden: un retroceso catastrófico (ReDoS) llegó a dejar fuera de servicio a Stack Overflow durante 34 minutos. Hive se protege contra ello mediante varias capas de seguridad:

  • Límite inferior de retroceso. Antes del bucle de inspección, Hive establece pcre.backtrack_limit a 100 000 (por debajo del valor predeterminado de 1 millón) y lo restablece después, limitando así el tiempo de ejecución en el peor de los casos por patrón.
  • Se produce un error de tipo «fail-open» en caso de error de expresión regular. Cuando un patrón alcanza el límite, preg_match() devuelve false, en lugar de 0 o 1 — un salto silencioso si no está marcado. Hive trata false como «fail-open» más un waf_pattern_error . Una regla defectuosa nunca bloquea el tráfico legítimo ni bloquea el acceso al sitio: la disponibilidad prima sobre el rigor.
  • Tamaño máximo del cuerpo: 8 KB. Las solicitudes de cuerpos de más de 8 KB omiten los grupos de cuerpos, por lo que la base de retroceso está acotada.
  • Linter del lado del servidor. En reportedIP.com, cada patrón se comprueba para detectar posibles retrocesos catastróficos antes de que se firme; un patrón peligroso nunca llega a publicarse.

Los patrones seleccionados también dan prioridad a los grupos atómicos y a los cuantificadores posesivos, que no requieren retroceso, y el JIT de PCRE (activado por defecto en WordPress) agiliza la búsqueda de coincidencias.

Eliminar un False Positive desde el panel de administración, sin modificar el código

Cualquier cortafuegos basado en firmas puede marcar ocasionalmente una solicitud legítima de origen propio —por ejemplo, un generador de páginas que envía código HTML enriquecido, o un complemento de seguridad que procesa de forma legítima Payloads que parecen ataques—. Desde la versión 2.1.9, Hive gestiona esto del mismo modo que lo hacen las exclusiones de ModSecurity y la Allowlist de Wordfence: mediante una lista de excepciones gestionada por el backend, sin necesidad de código ni de desvíos «solo para informes».

  • Un clic por cada entrada del registro. Cada bloqueo del WAF que aparece en el registro incluye una acción «Permitir» que crea una excepción específica para esa regla concreta en esa ruta. El registro de bloqueos recoge el valor coincidente, el destino inspeccionado, el método de solicitud, el URI, el agente de usuario y el Paranoia Level, de modo que es posible analizar la decisión sin necesidad de reproducir la solicitud.
  • Con ámbito limitado, nunca global. Una excepción se aplica a una sola regla, a un grupo de reglas o —en el caso de un Endpoint propio— a todo el motor de una ruta, que opcionalmente puede restringirse a una dirección IP o un rango CIDR. Una excepción que afecte a todo el motor debe incluir una ruta o una dirección IP, de modo que el cortafuegos nunca pueda desactivarse por error en todo el sitio.
  • A nivel de red y Free. Las excepciones se almacenan como datos a nivel de red (opción reportedip_hive_waf_exceptions, esquema db_version 10) y están disponibles en todos los planes; el motor de protección en sí sigue siendo gratuito.
  • Esto también se aplica al filtro previo a WordPress. Extended Protection integra las mismas excepciones y las vuelve a integrar cada vez que cambia la Allowlist, de modo que un cliente al que hayas permitido el acceso en el panel de administración ya tiene acceso antes incluso de que se cargue WordPress.

El formulario de excepciones se explica por sí solo: el selector de ámbito muestra únicamente el campo relevante, y el campo de entrada ambiguo «ID de regla o grupo» se divide en un campo de ID de regla y un menú desplegable de grupos que se rellena con las categorías conocidas por el motor. Los desarrolladores también disponen de una vía de escape a nivel de código: el reportedip_hive_waf_bypass_routes filtro, que se compara mediante una prueba de anclaje str_starts_with comparación con la ruta REST resuelta—, de modo que un token de elusión en un parámetro de consulta no relacionado no puede desactivar el WAF.

Extended Protection: bloqueo antes de que se cargue WordPress

El initcortafuegos «-hook» se ejecuta una vez que WordPress se ha iniciado. Para garantizar la protección antes de que se ejecute el código de cualquier plugin, Hive ofrece un complemento opcional que ejecuta el WAF a través de la directiva auto_prepend_file —el mismo enfoque que Wordfence denomina «Extended Protection». Está desactivado por defecto y se suma al motor interno de WordPress, e inspecciona los cuerpos de las solicitudes igual que el motor principal (en la versión 2.1.10 se corrigió un error de elevación que hacía que la inspección del cuerpo fuera una operación nula silenciosa).

  • Apache recibe una php_value auto_prepend_file línea escrita en un .htaccess .
  • PHP-FPM — incluido nginx. Hive detecta la SAPI de PHP-FPM antes de la cadena del servidor de nginx y escribe una ruta raíz del documento .user.ini, que PHP-FPM respeta en cada solicitud, independientemente de los location . Desde la versión 2.1.17, esto cubre nginx automáticamente, sin necesidad de ningún paso manual; las versiones anteriores solo podían ofrecer un fragmento de código pegado a mano location que solo protegía el bloque concreto en el que se insertaba.
  • Fragmento de código de reserva. En entornos que no dispongan de una SAPI FastCGI para PHP, Hive sigue generando una línea de php.ini / PHP-FPM-pool para copiar y pegar, así como un bloque de nginx fastcgi_param PHP_VALUE ; la pestaña «Configuración del servidor» muestra estos elementos siempre que la configuración generada automáticamente .user.ini aún no se haya aplicado.

Hay tres comportamientos de seguridad que hacen que el sistema de seguridad sea predecible. No realiza la inspección corporal a los usuarios que han iniciado sesión; detecta la wordpress_logged_in cookie, por lo que un editor que guarde una entrada a través de admin-ajax.php o la REST API nunca activará una firma XSS/SQLi (las reglas de URL y de agente de usuario siguen aplicándose, y el motor interno de WordPress sigue siendo el mecanismo de seguridad que tiene en cuenta las capacidades). Se autorrepara al activarlo o desactivarlo: desactivar el WAF o cambiarlo al modo de solo informe neutraliza también el filtro previo a WordPress, de modo que el cortafuegos nunca puede seguir aplicando restricciones una vez que se ha desactivado. Y su eliminación es a prueba de fallos: al desactivar el plugin, se eliminan las directivas que controla Hive y se deja un marcador de posición inerte en lugar de borrar el archivo de protección, de modo que una línea auto_prepend_file línea residual en una configuración de nginx o php.ini que Hive no pueda editar nunca pueda apuntar a un archivo que ya no existe y provocar un error 500 en el sitio.

La configuración es verificable: el estado indica si el control se ha ejecutado realmente para la solicitud actual —«Configuración completada» en cuanto funciona—, en lugar de tener que adivinarlo. El Setup Wizard guía a los nuevos usuarios a lo largo del proceso con valores predeterminados seguros.

Los códigos de referencia permiten convertir un bloque erróneo en una consulta de una sola línea

Cada bloque lleva un código de referencia con el que se puede establecer una correspondencia, como WAF_SQLI-3F9A2B71, que se muestra en la página del bloque y se envía como X-RIP-Ref encabezado. Un visitante que haya sido bloqueado por error introduce una cadena corta, y un administrador la compara con los registros; a continuación, la elimina con la acción «Permitir» de un solo clic si se trataba de un False Positive. El token es un hash unidireccional de la IP, el motivo y la hora, por lo que no revela ningún dato personal.

Preguntas frecuentes

¿El Web Application Firewall es gratuito?

Sí. El motor WAF y la configuración básica «OWASP Top 10 – Paranoia Level 1» están activos en todos los planes, incluidos el Free tier y el modo «Local Shield», totalmente sin conexión. El plan «Professional» añade conjuntos de reglas más avanzados de los niveles 2 y 3, así como fuentes de datos en tiempo real a través de Priority Sync.

¿El cortafuegos bloqueará mis propias tareas de administración?

No. Los administradores que hayan iniciado sesión están exentos, /wp-admin nunca se inspecciona, y el filtro previo a WordPress omite la inspección del cuerpo para cualquier usuario que haya iniciado sesión. Si un formulario del front-end o un Endpoint propio activa una regla, abre el registro del WAF, haz clic en «Permitir» en esa fila para crear una excepción específica, y ya está: no hace falta código ni ningún desvío «solo para informes».

¿Funciona el cortafuegos con Nginx?

Sí, y desde la versión 2.1.17, el guard previo a WordPress se configura automáticamente en Nginx al escribir un directorio raíz de documentos .user.ini que PHP-FPM respeta en cada solicitud. Si tu entorno desactiva los archivos INI por directorio, la pestaña «Configuración del servidor» muestra una línea de php.ini o nginx fastcgi_param que puedes pegar en su lugar.

¿Qué ocurre si no se puede acceder al servidor de reglas?

No se produce ningún fallo. El complemento sigue utilizando el último conjunto de reglas verificado, o la configuración de referencia incluida, y vuelve a intentar la sincronización más tarde. El cortafuegos nunca depende de una conexión activa para funcionar.

Empezar

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Rellena este campo
Rellena este campo
Por favor, introduce una dirección de correo electrónico válida.
Tienes que aprobar los términos para continuar