Restrict IP

Un módulo de seguridad que restringe el acceso a un sitio Drupal basándose en listas blancas de direcciones IP, con soporte para reglas basadas en rutas y filtrado por país.

restrict_ip
1,761 sites
23
drupal.org

Instalar

Drupal 11, 10 v5.0.1
composer require 'drupal/restrict_ip:^5.0'

Overview

El módulo Restrict IP permite a los administradores controlar quién puede acceder a su sitio Drupal manteniendo una lista blanca de direcciones IP permitidas. Cuando está habilitado, cualquier visitante cuya dirección IP no esté en la lista permitida será redirigido a una página de acceso denegado con un mensaje personalizable.

El módulo proporciona opciones de configuración flexibles que incluyen soporte para direcciones IPv4 e IPv6, rangos de direcciones IP, listas blancas/negras basadas en rutas para eximir o dirigirse a páginas específicas, permisos de omisión basados en roles y filtrado por país cuando se usa con el módulo IP-based Determination of a Visitor's Country (ip2country).

Para los usuarios bloqueados, el módulo renderiza una página mínima sin bloques, JavaScript u otros elementos de página para prevenir cualquier exposición no intencionada de contenido. Los administradores pueden personalizar la página de acceso denegado a través de hooks y opcionalmente mostrar una dirección de correo electrónico de contacto para que los usuarios soliciten acceso.

Features

  • Lista blanca de direcciones IP con soporte para direcciones IPv4/IPv6 individuales y rangos de direcciones IPv4
  • Control de acceso basado en rutas con lista blanca (excluir rutas específicas de la verificación) o lista negra (verificar solo rutas específicas)
  • Omisión de restricción de IP basada en roles permitiendo a usuarios autenticados con permisos específicos acceder al sitio independientemente de la IP
  • Control de acceso basado en país (lista blanca o negra por país) cuando se integra con el módulo ip2country
  • Página de acceso denegado personalizable con visualización opcional de correo electrónico de contacto
  • Registro de intentos de acceso bloqueados en el registro de base de datos de Drupal (dblog)
  • Renderizado mínimo de página para usuarios bloqueados eliminando todos los bloques, JavaScript, menús y pestañas
  • Las direcciones IP pueden configurarse a través de la interfaz de administración o directamente en settings.php para recuperación de acceso de emergencia
  • Soporte de comandos Drush para habilitar/deshabilitar restricciones de IP sin acceso de administrador
  • Hooks para personalizar la página de acceso denegado, añadir regiones del tema a la lista blanca y añadir archivos JavaScript a la lista blanca

Use Cases

Protección de sitio de staging/desarrollo

Restringir el acceso a un sitio de staging o desarrollo solo a las direcciones IP de tu oficina o VPN. Configura la lista blanca con las direcciones IP de tu equipo y habilita las restricciones. Todos los visitantes externos verán la página de acceso denegado.

Acceso solo intranet

Crear un sitio intranet accesible solo desde dentro de la red de tu organización. Añade los rangos de IP internos de tu organización a la lista blanca y habilita las restricciones para prevenir el acceso externo.

Control de acceso geográfico

Restringir el acceso al sitio a usuarios de países específicos. Habilita la integración con el módulo ip2country y configura la lista blanca o negra de países. Por ejemplo, añade solo tu país de origen a la lista blanca para reducir el tráfico malicioso de otras regiones.

Protección de sección de administración

Mantener el sitio principal público pero restringir las rutas de administración a direcciones IP específicas. Establece el modo de verificación de rutas en lista negra y añade rutas de administración como /admin/*, /node/*/edit, etc. Solo las IPs en lista blanca pueden acceder a las funciones de administración.

Restricción temporal de mantenimiento

Durante el mantenimiento, restringir el acceso solo a las IPs del equipo de desarrollo mientras se actualiza el sitio. Cuando esté completo, deshabilitar las restricciones para restaurar el acceso público.

Acceso basado en rol con respaldo de IP

Permitir a usuarios autenticados con roles específicos omitir las restricciones de IP mientras se sigue bloqueando a visitantes anónimos desde IPs no incluidas en la lista blanca. Habilita la omisión por rol y asigna el permiso 'Omitir restricción de IP' a roles de confianza.

Tips

  • Siempre añade tu dirección IP actual a la lista blanca antes de habilitar las restricciones - tu IP actual se muestra en la página de configuración
  • Usa settings.php para entradas de lista blanca de IP de emergencia que no pueden eliminarse accidentalmente a través de la interfaz
  • Los patrones de rutas soportan comodines (*) - usa /admin/* para coincidir con todas las rutas de administración
  • Los rangos de direcciones IP solo funcionan con direcciones IPv4 en el formato AAA.BBB.CCC.XXX - AAA.BBB.CCC.YYY o AAA.BBB.CCC.XXX-YYY
  • El comando Drush (drush ripd disable) es invaluable para recuperar el acceso cuando estás bloqueado
  • Se pueden añadir comentarios a la lista de direcciones IP usando la sintaxis // o /* */ para documentación

Technical Details

Admin Pages 1
Lista blanca de direcciones IP /admin/config/people/restrict_ip

Configurar restricciones de acceso basadas en IP para el sitio. Gestionar direcciones IP en lista blanca, reglas basadas en rutas, configuración de omisión por rol y opciones de filtrado por país.

Permisos 2
Administrar direcciones IP restringidas

Permite al usuario acceder y modificar la configuración del módulo Restrict IP, incluyendo la gestión de direcciones IP en lista blanca y todos los ajustes relacionados.

Omitir restricción de IP

Permite a los usuarios con este permiso acceder al sitio independientemente de su dirección IP. Este permiso solo está disponible cuando 'Permitir omitir Restrict IP por rol' está habilitado en la configuración del módulo.

Hooks 3
hook_restrict_ip_whitelisted_regions

Permite a módulos o temas añadir regiones de página específicas a la lista blanca que aún deben renderizarse para usuarios bloqueados.

hook_restrict_ip_whitelisted_js_keys

Permite a módulos o temas añadir archivos JavaScript específicos a la lista blanca que aún deben cargarse para usuarios bloqueados.

hook_restrict_ip_access_denied_page_alter

Permite a módulos o temas alterar el contenido de la página de acceso denegado, incluyendo añadir, eliminar o modificar elementos, o realizar redirecciones.

Drush Commands 1
drush restrict_ip:disable [enable|disable]

Habilitar o deshabilitar restricciones de IP sin acceder a la interfaz de administración. Útil para recuperar el acceso cuando estás bloqueado.

Troubleshooting 4
Me he bloqueado a mí mismo del sitio

Añade la siguiente línea a sites/default/settings.php: $config['restrict_ip.settings']['enable'] = FALSE; Esto deshabilita las restricciones permitiéndote acceder al sitio y corregir tu configuración. Alternativamente, usa el comando Drush: drush ripd disable

La IP añadida a la lista blanca en settings.php no funciona

Asegúrate de que estás usando la clave de configuración correcta: $config['restrict_ip.settings']['ip_whitelist'] = ['111.111.111.1']; El valor debe ser un array de direcciones IP.

El filtrado basado en país no está disponible

Instala y habilita el módulo IP-based Determination of a Visitor's Country (ip2country). Ejecuta composer require drupal/ip2country y habilita el módulo.

Los usuarios son bloqueados incluso con la IP correcta

Verifica si estás detrás de un proxy o balanceador de carga. El módulo usa getClientIp() de Symfony que respeta las cabeceras de proxy de confianza. Asegúrate de que tu configuración de proxy esté correctamente configurada en settings.php.

Security Notes 5
  • Asegúrate de que tu servidor pase correctamente la dirección IP del cliente - detrás de balanceadores de carga o CDNs, puede requerirse configuración adicional
  • El ajuste ip_whitelist en settings.php proporciona un respaldo seguro que no puede modificarse a través de la interfaz de administración
  • Cuando uses la omisión por rol, asegúrate de que el permiso 'Omitir restricción de IP' solo se otorgue a roles de confianza
  • Las direcciones de correo electrónico mostradas en la página de acceso denegado están ofuscadas pero aún pueden ser recolectadas - considera esto al añadir información de contacto
  • Los intentos de acceso registrados pueden contener información sensible de rutas - asegúrate de que los registros de base de datos estén debidamente protegidos