Flood control
Proporciona una interfaz de administración para las variables ocultas de control de inundación de Drupal y permite a los administradores del sitio desbloquear direcciones IP e IDs de usuario que están bloqueados después de múltiples intentos fallidos de inicio de sesión.
flood_control
Install
composer require 'drupal/flood_control:^3.0'
composer require 'drupal/flood_control:^2.3'
Overview
Flood Control es un módulo esencial de administración de seguridad que expone la configuración oculta de protección contra inundaciones de Drupal a través de una interfaz amigable. Drupal core incluye protección integrada contra ataques de fuerza bruta en cuentas de usuario mediante el seguimiento de intentos fallidos de inicio de sesión y el bloqueo temporal de intentos adicionales cuando se superan los umbrales. Sin embargo, estas configuraciones no son accesibles a través de la interfaz de administración estándar.
Este módulo proporciona dos interfaces administrativas principales: una página de configuración donde los administradores pueden configurar los umbrales y ventanas de tiempo para los límites de intentos de inicio de sesión, y una página de desbloqueo de inundación donde los administradores pueden ver y eliminar entradas de la tabla de inundación de Drupal. Esto es particularmente útil cuando usuarios legítimos quedan bloqueados debido a contraseñas olvidadas o durante pruebas de cuentas.
El módulo también incluye una función de lista de IPs permitidas que permite que direcciones IP específicas o rangos de IP omitan completamente la protección contra inundaciones. Esto es útil para redes de confianza, sistemas de pruebas automatizadas o acceso administrativo desde ubicaciones conocidas. Además, si el módulo Contact está habilitado, Flood Control extiende sus capacidades de configuración para incluir límites de envío de formularios de contacto.
Features
- Configurar límites de intentos de inicio de sesión basados en IP y ventanas de tiempo para proteger contra ataques de fuerza bruta desde una sola dirección IP
- Configurar límites de intentos de inicio de sesión basados en nombre de usuario y ventanas de tiempo para proteger cuentas de usuario individuales
- Ver todas las entradas en la tabla de inundación de Drupal con capacidades de filtrado por identificador y estado de bloqueo
- Eliminar entradas específicas de inundación para desbloquear direcciones IP o cuentas de usuario que han sido bloqueadas
- Función de lista de IPs permitidas para eximir direcciones IP específicas o rangos de direcciones IP de la protección contra inundaciones
- Configurar límites de envío de formularios de contacto cuando el módulo Contact está habilitado
- Comandos Drush para la gestión de entradas de inundación desde línea de comandos
- Soporte de migración para configuraciones de flood control de Drupal 7
- Integración con el módulo Smart IP para mostrar la ubicación geográfica de direcciones IP (opcional)
Use Cases
Desbloquear un usuario legítimo bloqueado después de intentos de contraseña olvidada
Cuando un usuario olvida su contraseña y excede el límite de intentos fallidos de inicio de sesión, queda bloqueado. Un administrador puede navegar a Administración > Personas > Desbloqueo de inundación, filtrar por la dirección IP o nombre de usuario del usuario, seleccionar las entradas de inundación relevantes y hacer clic en 'Eliminar elementos seleccionados' para restaurar inmediatamente el acceso de inicio de sesión.
Configurar seguridad más estricta para sitios de alto valor
Para sitios que manejan datos sensibles, los administradores pueden reducir los límites de intentos de inicio de sesión (por ejemplo, a 3 intentos) y extender las ventanas de tiempo (por ejemplo, a 24 horas) en Administración > Configuración > Personas > Flood control para proporcionar una protección más fuerte contra fuerza bruta.
Agregar a la lista permitida direcciones IP de oficina o VPN
Las organizaciones pueden agregar sus rangos de IP de oficina o puntos de salida de VPN a la lista de IPs permitidas para asegurar que los empleados nunca sean bloqueados debido a la protección contra inundaciones, mientras mantienen la seguridad para intentos de acceso externos.
Desbloqueo de emergencia vía Drush durante un incidente
Durante un incidente de seguridad o después de un falso positivo de bloqueo que afecta a múltiples usuarios, los administradores pueden usar 'drush flood_unblock:all' para limpiar rápidamente todas las entradas de inundación, o 'drush flood_unblock:ip <dirección>' para desbloqueo dirigido sin acceder a la interfaz web.
Prevenir abuso de spam en formularios de contacto
Los sitios que experimentan spam en formularios de contacto pueden configurar límites de envío más bajos y ventanas de tiempo más largas para la protección contra inundaciones del formulario de contacto para reducir el abuso automatizado mientras aún permiten el contacto legítimo.
Depurar problemas de autenticación
Al solucionar problemas de inicio de sesión, los administradores pueden ver la página de Desbloqueo de inundación filtrada para mostrar solo entradas bloqueadas para identificar rápidamente si la protección contra inundaciones está causando problemas de acceso para usuarios o direcciones IP específicos.
Tips
- La configuración predeterminada de Drupal (5 intentos en 1 hora para IP, 5 intentos en 6 horas para nombre de usuario) es razonable para la mayoría de los sitios, pero los sitios de alta seguridad deberían considerar límites más bajos
- Establecer la ventana de tiempo de nombre de usuario en 'Infinito' proporciona la máxima protección pero requiere intervención manual para desbloquear a los usuarios afectados
- La lista de IPs permitidas soporta rangos, lo cual es más eficiente que listar muchas IPs individuales para redes grandes
- Use el filtro 'Solo bloqueados' en la página de Desbloqueo de inundación para encontrar rápidamente entradas que realmente están causando problemas de inicio de sesión
- Los comandos Drush son útiles para scripts de recuperación automatizada o cuando la interfaz web es inaccesible
- Las entradas de inundación expiran automáticamente según su ventana de tiempo, por lo que la limpieza manual solo es necesaria para desbloqueo inmediato
Technical Details
Admin Pages 2
/admin/config/people/flood-control
Configura los umbrales de protección contra inundaciones y las ventanas de tiempo que controlan cómo Drupal maneja los intentos fallidos de inicio de sesión. Esta página permite a los administradores establecer límites tanto para protección contra inundaciones basada en IP como basada en nombre de usuario, configurar una lista de direcciones IP de confianza permitidas, y opcionalmente configurar límites de envío de formularios de contacto.
/admin/people/flood-unblock
Ver y gestionar entradas en la tabla de inundación de Drupal. Esta página muestra todos los intentos fallidos de inicio de sesión registrados con sus direcciones IP, IDs de usuario, tipos de evento, marcas de tiempo y tiempos de expiración. Los administradores pueden filtrar la lista y eliminar selectivamente entradas para desbloquear usuarios o direcciones IP.
Permissions 2
Hooks 2
hook_migration_plugins_alter
Altera el plugin de migración d7_contact_settings para incluir configuraciones de umbral de flood control desde Drupal 7.
hook_migrate_prepare_row
Prepara los datos de fila de migración obteniendo las variables contact_threshold_limit y contact_threshold_window de la base de datos de origen de Drupal 7.
Drush Commands 2
drush flood_unblock:ip <ip_address>
Limpia todas las entradas de inundación para una dirección IP específica en todos los tipos de eventos de inundación.
drush flood_unblock:all
Limpia todas las entradas de inundación en el sistema para todos los tipos de eventos. Usar con precaución ya que elimina todo el historial de protección contra inundaciones.
Troubleshooting 5
Verifique la página de Desbloqueo de inundación (/admin/people/flood-unblock) para entradas bloqueadas que coincidan con la dirección IP o nombre de usuario del usuario. Si se encuentran, seleccione y elimine las entradas para desbloquearlos. Considere agregar direcciones IP frecuentemente afectadas a la lista permitida si son de fuentes confiables.
Esto típicamente ocurre cuando se usa un backend de inundación alternativo (como Redis o Memcache) en lugar de la base de datos. La interfaz de Desbloqueo de inundación requiere el backend de inundación de base de datos. Verifique su services.yml para cualquier anulación del servicio de inundación.
Asegúrese de haber seleccionado la casilla de verificación para cada entrada que desea eliminar antes de hacer clic en el botón de eliminar. El formulario valida que al menos un elemento esté seleccionado.
Asegúrese de que las direcciones IP estén en el formato correcto: IPs individuales como XXX.XXX.XXX.XXX, rangos como XXX.XXX.XXX.YYY-XXX.XXX.XXX.ZZZ. La IP inferior en un rango debe ser numéricamente menor que la IP superior. Cada entrada debe estar en una línea separada.
La configuración de inundación del formulario de contacto solo aparece cuando el módulo core Contact está habilitado. Habilite primero el módulo Contact si necesita configurar estos ajustes.
Security Notes 5
- El permiso 'Administer flood unblock settings' está marcado como restringido y solo debe otorgarse a roles de administrador de plena confianza, ya que controla configuraciones críticas de seguridad
- Agregar direcciones IP a la lista permitida omite completamente la protección contra inundaciones para esas IPs - úselo con moderación y solo para redes verdaderamente confiables
- Eliminar entradas de inundación permite inmediatamente intentos de inicio de sesión desde la IP/usuario afectado - verifique la legitimidad de las solicitudes de desbloqueo
- Establecer límites muy altos o ventanas de tiempo cortas debilita la protección contra fuerza bruta - equilibre la usabilidad con los requisitos de seguridad
- La tabla de inundación puede contener información sensible sobre patrones de intentos fallidos de inicio de sesión - restrinja el acceso a la página de Desbloqueo de inundación apropiadamente