Drupal Perimeter Defence

Un módulo de seguridad que bloquea automáticamente direcciones IP que realizan solicitudes sospechosas a URLs inexistentes que coinciden con patrones configurables, protegiendo los sitios Drupal de hackers y bots.

perimeter
8,092 sites
60
drupal.org

Install

Drupal 11, 10 v3.0.4
composer require 'drupal/perimeter:^3.0'

Overview

Drupal Perimeter Defence proporciona defensa perimetral básica para sitios Drupal bloqueando automáticamente direcciones IP que envían solicitudes sospechosas. El módulo monitorea las respuestas 404 (Página no encontrada) y verifica las URLs solicitadas contra una lista configurable de patrones de expresiones regulares. Cuando se encuentra una coincidencia, la IP solicitante es bloqueada inmediatamente usando el módulo Ban del núcleo de Drupal.

Este módulo es particularmente útil cuando tu sitio recibe numerosas solicitudes dirigidas a plataformas que no son Drupal, como páginas de administración de WordPress (wp-admin, wp-login), archivos ASP.NET (.aspx, .asp), archivos JSP (.jsp), u otros patrones sospechosos comúnmente utilizados por escáneres automatizados y bots.

El módulo está optimizado para rendimiento y diseñado para ser activado cuando un sitio Drupal está siendo activamente atacado. Incluye protección contra inundaciones para permitir un número configurable de intentos antes del bloqueo, lista blanca de IPs para prevenir el bloqueo de usuarios o servicios legítimos, e integración con el módulo Honeypot para protección adicional contra spam.

Features

  • Bloqueo automático de IP basado en patrones regex de URL configurables para solicitudes 404 sospechosas
  • Patrones preconfigurados para vectores de ataque comunes incluyendo WordPress (wp-admin, wp-login), ASP.NET (.aspx, .asp), JSP (.jsp) y otras URLs maliciosas
  • Soporte de lista blanca de IP con notación CIDR (ej., 192.168.1.0/24) para excluir IPs y rangos de confianza del bloqueo
  • Control de umbral de inundación que permite un número configurable de intentos antes de bloquear una dirección IP
  • Ventana de tiempo de inundación configurable para controlar cuánto tiempo persiste el contador de intentos
  • Integración con el módulo Ban del núcleo de Drupal para gestionar direcciones IP bloqueadas
  • Integración con el módulo Honeypot - bloquea automáticamente IPs que activan la protección basada en tiempo de honeypot (excepto para formularios de inicio de sesión)
  • Bypass basado en permisos que permite a usuarios de confianza acceder a URLs bloqueadas sin ser bloqueados
  • Registro detallado de IPs bloqueadas incluyendo URL de origen, referrer e información del agente de usuario
  • Compatible con Drupal 10 y 11

Use Cases

Protección contra escáneres de vulnerabilidades de WordPress

Muchos bots automatizados escanean sitios web buscando instalaciones de WordPress solicitando URLs como /wp-admin, /wp-login.php, /wp-content/, etc. Cuando estos bots atacan un sitio Drupal, generan carga innecesaria del servidor con errores 404 repetidos. Al habilitar Perimeter Defence con los patrones predeterminados, estos bots son bloqueados inmediatamente después de su primera solicitud, previniendo más intentos de escaneo y reduciendo la carga del servidor.

Bloqueo de intentos de exploit específicos de tecnología

Los atacantes frecuentemente sondean sitios web con URLs que contienen extensiones .aspx, .asp o .jsp buscando servidores de aplicaciones Microsoft IIS o Java vulnerables. En un servidor Linux/Drupal, estas solicitudes son claramente maliciosas. Perimeter Defence bloquea automáticamente estas IPs de sondeo, protegiendo tu servidor de ataques posteriores.

Implementación gradual de bloqueo con umbral de inundación

Para sitios donde usuarios legítimos podrían ocasionalmente activar un patrón bloqueado accidentalmente, establece el umbral de inundación a un valor como 3. Esto permite a los usuarios cometer algunos errores antes de ser bloqueados. Combinado con una ventana de inundación apropiada (ej., 3600 segundos/1 hora), esto proporciona un equilibrio entre seguridad y usabilidad.

Protección de IPs de CDN o servidor proxy

Si tu sitio usa un CDN o balanceador de carga, añade los rangos de IP del CDN a la lista blanca para prevenir el bloqueo accidental de tu infraestructura. Por ejemplo, añade los rangos de IP de Cloudflare en notación CIDR para asegurar que las solicitudes del CDN nunca sean bloqueadas.

Integración con Honeypot para protección contra spam en formularios

Cuando se usa junto con el módulo Honeypot, Perimeter Defence proporciona protección adicional bloqueando IPs que repetidamente fallan la protección basada en tiempo de Honeypot. Esto es efectivo contra bots de spam automatizados que envían formularios demasiado rápido.

Protección de sitios de staging o desarrollo

Los sitios de desarrollo y staging son frecuentemente descubiertos por bots y atacados. Habilita Perimeter Defence para bloquear automáticamente intentos de reconocimiento, reduciendo el ruido en los registros y protegiendo datos sensibles de desarrollo.

Tips

  • Siempre prueba el comportamiento del módulo desde una IP o dispositivo diferente antes de desplegar a producción, y asegúrate de tener acceso a la base de datos para eliminar tu IP de los bloqueos si es necesario
  • Comienza con un umbral de inundación más alto (ej., 2-3) en sitios de producción para evitar bloquear usuarios legítimos que podrían accidentalmente activar un patrón
  • Añade los rangos de IP de tu oficina, IPs de CDN e IPs de servicios de monitoreo a la lista blanca antes de habilitar el módulo
  • Monitorea los Mensajes de registro recientes de tu sitio regularmente para ver qué IPs están siendo bloqueadas y ajusta los patrones según corresponda
  • Usa los patrones predeterminados como punto de partida y añade patrones específicos del sitio basándote en tu análisis de registros
  • El módulo es más efectivo contra escáneres automatizados; atacantes sofisticados pueden usar rotación de IP
  • Considera combinar con otros módulos de seguridad como Honeypot, Antibot y CAPTCHA para protección integral

Technical Details

Admin Pages 1
Configuración de Perimeter Defence /admin/config/system/perimeter

Configura los patrones de URL que activan bloqueos de IP, gestiona listas blancas de IP y establece umbrales de protección contra inundaciones para el módulo Perimeter Defence.

Permissions 3
Omitir reglas de bloqueo de Perimeter Defence

Permite a los usuarios con este permiso acceder a URLs que coinciden con patrones bloqueados sin ser bloqueados. Útil para administradores o usuarios de confianza que pueden necesitar acceder a estas URLs por propósitos legítimos. Este permiso tiene acceso restringido.

Administrar patrones de URL no permitidos de Perimeter

Permite al usuario definir y modificar patrones de bloqueo de URL en la página de configuración de Perimeter. Los usuarios con este permiso pueden añadir, editar o eliminar patrones regex que activan bloqueos de IP.

Administrar lista blanca de IP de Perimeter

Permite al usuario gestionar la lista blanca de IP en la página de configuración de Perimeter. Los usuarios con este permiso pueden añadir o eliminar direcciones IP y rangos de IP que están excluidos del bloqueo.

Hooks 2
hook_honeypot_reject

Hook de integración con el módulo Honeypot. Cuando Honeypot rechaza un envío de formulario debido a protección basada en tiempo (tipo honeypot_time), este hook bloquea la IP que envió. Excluye formularios de inicio de sesión de usuario y UID 1 del bloqueo para prevenir bloqueos accidentales.

hook_help

Proporciona texto de ayuda para el módulo en la página de Ayuda, explicando el propósito del módulo y enlazando a la documentación.

Troubleshooting 5
Accidentalmente bloqueé mi propia IP mientras probaba

No puedes acceder a la interfaz de administración de Drupal para desbloquearte. Usa Drush para eliminar tu IP de la base de datos: drush sql:query "DELETE FROM ban_ip WHERE ip='TU.DIRECCION.IP';" Alternativamente, accede a tu base de datos directamente vía phpMyAdmin o línea de comandos y elimina tu IP de la tabla ban_ip.

Usuarios legítimos están siendo bloqueados

Añade sus direcciones IP o rangos de IP a la lista blanca en la configuración de Perimeter. También puedes aumentar el umbral de inundación para permitir algunas coincidencias accidentales antes del bloqueo. Considera revisar tus patrones de URL para asegurar que no coincidan con URLs legítimas.

El módulo no está bloqueando ninguna IP

Verifica que el módulo esté habilitado y que el módulo Ban esté funcionando. Comprueba que tus patrones de URL sean regex válidos (incluyendo delimitadores como /patrón/). Las páginas en caché no activarán bloqueos, así que asegúrate de probar con solicitudes sin caché. Revisa los Mensajes de registro recientes para cualquier aviso de Perimeter.

Los usuarios con permiso de bypass siguen siendo bloqueados

Asegúrate de que el usuario esté logueado cuando accede a las URLs bloqueadas. El permiso de bypass solo funciona para sesiones autenticadas. Los usuarios anónimos no pueden tener permisos de bypass.

El umbral de inundación no parece funcionar correctamente

Recuerda que las solicitudes de páginas en caché no activan la lógica de bloqueo. Cuando pruebes el umbral de inundación, debes solicitar diferentes URLs cada vez (ej., /wp-admin/a, /wp-admin/b, /wp-admin/c). Las solicitudes repetidas a la misma URL pueden servirse desde caché y no incrementarán el contador de inundación.

Security Notes 6
  • El permiso de bypass está marcado como 'acceso restringido' - solo concédelo a roles de alta confianza
  • Nunca concedas los permisos 'administer perimeter url patterns' o 'administer perimeter ip whitelist' a usuarios no confiables ya que podrían deshabilitar la protección
  • El módulo registra información detallada sobre IPs bloqueadas incluyendo referrer y agente de usuario - revisa los registros regularmente para detectar patrones de ataque
  • Los bloqueos de IP se almacenan en la base de datos y persisten hasta que se eliminen manualmente vía la interfaz del módulo Ban o la base de datos
  • Cuando uses detrás de un proxy o CDN, asegúrate de que Drupal esté configurado para detectar la IP correcta del cliente (trusted_host_patterns y configuraciones de proxy)
  • El módulo protege contra reconocimiento y ataques automatizados pero debe ser parte de una estrategia de seguridad integral incluyendo actualizaciones regulares, contraseñas fuertes y configuración adecuada del servidor