Protección Avanzada de Cuentas de Usuario en Drupal 10

5 intentos de sesión fallidos en Drupal con policia

Drupal es una herramienta poderosa para crear comunidades o grandes repositorios de usuarios, y con esa capacidad viene la responsabilidad de asegurar las cuentas de los usuarios. Ya sea que gestiones un foro abierto, una web de noticias con editores limitados o una tienda, la autenticación segura es fundamental.

Por defecto, Drupal ofrece varias características robustas de protección de cuentas, incluyendo un sistema anti fuerza bruta que bloquea las cuentas tras varios intentos incorrectos de contraseña en un periodo breve. Sin embargo, siempre hay espacio para mejorar la seguridad mediante la implementación de módulos y técnicas adicionales, cada uno con sus pros y contras.

 

Control de Fuerza Bruta y Seguridad de Inicio de Sesión

El módulo Flood Control es esencial para gestionar cómo Drupal responde a los intentos fallidos de inicio de sesión. Este módulo permite ajustar la cantidad de intentos de inicio de sesión fallidos permitidos antes de que una cuenta sea bloqueada temporalmente, lo cual es importante para prevenir ataques de fuerza bruta.

Dentro de la configuración de Flood Control, se pueden establecer límites específicos para:

  • Número de intentos fallidos: Definir cuántos intentos fallidos pueden ocurrir antes de bloquear el acceso desde una dirección IP específica o bloquear una cuenta de usuario.
  • Período de tiempo: Determinar el período durante el cual se cuenta el número de intentos fallidos antes de que se active el bloqueo.
  • Desbloqueo: Permitir a los administradores desbloquear usuarios directamente desde la interfaz de administración sin tener que intervenir en la base de datos, lo cual simplifica la gestión de accesos y reduce el tiempo de inactividad del usuario.

Sin embargo, configurar estos límites requiere un cuidadoso equilibrio. Establecer un umbral demasiado bajo puede llevar a que usuarios legítimos sean bloqueados accidentalmente, especialmente en entornos donde múltiples usuarios pueden compartir la misma dirección IP (como en redes corporativas o públicas). Por otro lado, un umbral demasiado alto podría no ofrecer la protección adecuada contra ataques automatizados.

El módulo Login Security complementa la protección ofrecida por Flood Control emitiendo notificaciones a los administradores cuando se detectan intentos de acceso por fuerza bruta. Este módulo ofrece configuraciones tales como:

  • Notificaciones por correo electrónico: Envía alertas a los administradores cuando se detecta un número específico de intentos fallidos de inicio de sesión.
  • Límites de acceso por rol: Configurar políticas de seguridad específicas basadas en roles de usuario, permitiendo aplicar restricciones más estrictas a los roles con mayores privilegios.

Al configurar Login Security, es importante considerar la frecuencia y las condiciones bajo las cuales se enviarán las alertas para evitar la sobrecarga de notificaciones. Configurar correctamente las alertas puede ayudar a identificar rápidamente patrones sospechosos sin generar una gran cantidad de falsos positivos que podrían desviar recursos y atención de problemas reales.

En conjunto, estos módulos fortalecen la seguridad de los formularios de inicio de sesión de Drupal, pero deben ser configurados con un enfoque en la usabilidad para asegurar que medidas de seguridad estrictas no degraden la experiencia del usuario ni impidan accesos legítimos.

 

Prevención de Enumeración de Usuarios

El módulo Username Enumeration Prevention juega un importante papel en la protección de la privacidad y seguridad de los usuarios al prevenir que los atacantes puedan descubrir nombres de usuario válidos a través de mensajes de error o páginas de usuario. Esto se logra interceptando las solicitudes a páginas que normalmente revelarían si un nombre de usuario existe o no.

En el módulo Username Enumeration Prevention, se podrán configurar:

  • Errores Personalizados: El módulo permite configurar la respuesta del servidor cuando se solicitan nombres de usuario que no existen. Por defecto, puede retornar un error 404, lo cual es útil porque simula que la página solicitada no existe.
  • Redirecciones: Se pueden configurar redirecciones a páginas específicas para mejorar la experiencia del usuario y evitar que los visitantes se enfrenten a una página de error estándar, lo cual puede ser confuso para usuarios legítimos que cometieron un error al escribir su nombre de usuario en el URL.

Aunque es vital ocultar la existencia de nombres de usuario, también es importante considerar la experiencia del usuario legítimo. Configurar respuestas demasiado ambiguas puede confundir a los usuarios que, por ejemplo, intentan recuperar su contraseña y no están seguros si han cometido un error al ingresar su nombre de usuario. Interceptar y procesar estas solicitudes, puede tener un impacto en el rendimiento si el sitio enfrenta un alto volumen de tráfico. Si es ese el caso, tras implementar este módulo, deberíamos monitorizar el rendimiento del sitio.

La implementación de Username Enumeration Prevention ayuda a fortalecer la postura de seguridad de un sitio Drupal al eliminar una vía común que los atacantes podrían utilizar para obtener información crítica sobre los usuarios. Sin embargo, como con cualquier medida de seguridad, es fundamental realizar pruebas exhaustivas para asegurar que no se introducen inconvenientes o barreras innecesarias para los usuarios.

 

Ajustes de Sesión

Los ajustes relacionados con las sesiones y las cookies se configuran en el archivo services.yml, que proporciona un control detallado sobre estas en el sitio.

Configuraciones clave:

  • gc_maxlifetime: Esta configuración determina el tiempo máximo en segundos que una sesión puede permanecer activa sin ser accedida. Una vez transcurrido este tiempo, la sesión es considerada como 'basura' y es susceptible a ser eliminada en la próxima limpieza de sesiones. Reducir este valor puede ayudar a proteger los datos del usuario en caso de que alguien olvide cerrar sesión, pero también podría forzar a los usuarios a iniciar sesión más frecuentemente de lo deseado.
  • cookie_lifetime: Define la duración, en segundos, de la cookie de sesión en el navegador del usuario. Establecer este valor a 0 hace que la cookie se elimine al cerrar el navegador, lo cual es una buena práctica de seguridad para sitios que manejan información altamente sensible, aunque puede impactar la usabilidad para los usuarios que prefieren sesiones persistentes.

Encontrar un justo medio entre la seguridad y la comodidad del usuario es la clave, pues si las configuraciones son demasiado restrictivas, puedes terminar frustrando a los usuarios que esperan no tener que iniciar sesión constantemente. Por otro lado, ajustes demasiado laxos pueden no ofrecer suficiente protección para sitios que manejan datos sensibles, como bancos o servicios médicos en línea. Así que, dependiendo del tipo de contenido que maneja tu sitio, necesitarás calibrar estas configuraciones cuidadosamente. Además, no olvides realizar pruebas después de hacer ajustes para asegurarte de que todo funciona como debería y mantener un ojo en el rendimiento del sitio y la experiencia del usuario. Y claro, siempre es fundamental asegurarte de que tus ajustes estén en línea con cualquier requisito legal como el GDPR, que puede tener especificaciones particulares sobre cómo se deben manejar las sesiones y cookies.

Modificar los ajustes de sesión en services.yml ofrece un control potente sobre la seguridad de las sesiones, permitiendo adaptar el comportamiento del sitio a las necesidades específicas de seguridad y usabilidad.

 

Inicio de Sesión Persistente

A diferencia de las configuraciones de sesión que pueden requerir a los usuarios volver a autenticarse frecuentemente, el módulo Persistent Login ofrece una solución para mantener las sesiones activas por períodos más largos. Este módulo es ideal si lo que se quiere es no tener que iniciar sesión cada vez que visitan tu sitio. Al marcar una opción en el formulario de inicio de sesión, se activa una cookie de sesión adicional que mantiene al usuario conectado, incluso después de cerrar y reabrir el navegador.

Sin embargo, esta conveniencia viene con la necesidad de considerar cuidadosamente las implicaciones de seguridad, nuevamente haciendo hincapié en sitios que manejan información sensible. Algunas configuraciones que puedes ajustar para mantener el equilibrio entre usabilidad y seguridad son:

  • Duración de la Cookie: Controla cuánto tiempo la cookie de sesión persistente permanecerá activa. Lo importante es encontrar un balance que ofrezca comodidad sin comprometer la seguridad.
  • Restricción de Uso: Considera restringir el uso de sesiones persistentes en dispositivos públicos o compartidos, para evitar accesos no autorizados.

Si nos aseguramos de informar a los usuarios sobre las mejores prácticas para utilizar esta función de manera segura, como cerrar sesión activamente cuando estén en dispositivos compartidos, podemos mejorar la experiencia y la seguridad al mismo tiempo, aunque por esta misma experiencia sabemos lo difícil que puede ser educar a los usuarios en estos temas de seguridad.

 

Restricción por Dirección IP

Cuando se trata de proteger áreas de un sitio web, como intranets o paneles administrativos, el módulo Restrict route by IP ofrece una capa adicional de seguridad muy efectiva. Este módulo permite restringir el acceso a rutas específicas del sitio basándose en direcciones IP. Esto significa que solo los dispositivos conectados desde ubicaciones específicas podrán acceder a ciertas áreas del sitio, lo cual es ideal para entornos corporativos donde solo el personal autorizado debe tener acceso a ciertos recursos.

Algunos puntos clave sobre cómo configurar y utilizar este módulo son:

  • Especificación de IP: Puedes definir una lista de direcciones IP desde las cuales se permitirá el acceso a rutas específicas. Esto es útil para asegurar que solo los usuarios en tu red corporativa, por ejemplo, puedan acceder al backend del sitio.
  • Flexibilidad en la configuración: El módulo permite configurar múltiples rutas y asociarlas con diferentes listas de IPs permitidas, proporcionando una gran flexibilidad para adaptarse a diferentes necesidades de seguridad.
  • Acceso controlado: Ideal para limitar el acceso a partes críticas del sitio, como configuraciones administrativas, paneles de control, o información financiera.

Es importante saber que mientras esta herramienta añade una capa robusta de seguridad, también debes considerar los cambios potenciales en la infraestructura de red de tu organización, como cambios en las direcciones IP dinámicas o la adición de nuevas ubicaciones, que podrían requerir ajustes frecuentes en la configuración del módulo para evitar bloqueos accidentales. Usar este módulo no nos hace invulnerables, debemos implementar otras medidas de seguridad para proteger contra amenazas que no dependen de la ubicación IP, como los ataques de phishing o malware.

 

Prevención o Restricción del Acceso a "Usuario 1"

En Drupal, el "Usuario 1" es esencialmente el "superusuario" con acceso ilimitado a todas las funciones y áreas del sitio. Dado su nivel de acceso, es fundamental manejar este usuario con extremo cuidado, especialmente en entornos de producción. Este usuario es la base durante el desarrollo y la configuración inicial del sitio, pero si se maneja de manera inapropiada, puede convertirse en un riesgo de seguridad significativo.

Algunas estrategias para asegurar que el superusuario sea manejado de manera segura son:

  • Limitar el uso: Utiliza el superusuario solo cuando sea estrictamente necesario, preferentemente durante la configuración o cuando se requieran tareas que no se pueden realizar con otros roles con permisos más limitados.
  • Monitoreo: Es vital monitorizar la actividad de este usuario, asegurando que todas las acciones sean legítimas y autorizadas. Considera la implementación de herramientas de auditoría que registren cuando y cómo se utiliza el superusuario.
  • Alternativas seguras: Crea roles administrativos con permisos específicos necesarios para tareas rutinarias, reduciendo la dependencia del superusuario. Esto no solo mejora la seguridad sino que también minimiza el riesgo de errores humanos que podrían afectar críticamente el sitio.
  • Autenticación robusta: Asegúrate de que el superusuario tenga medidas de seguridad fuertes, como autenticación de dos factores, para minimizar las posibilidades de acceso no autorizado.

Gestionar cuidadosamente el acceso y la actividad del "Usuario 1" es necesario para tener una estrategia de seguridad efectiva en Drupal. Al limitar su uso y asegurar que todas las acciones sean monitoreadas y realizadas solo cuando sea necesario, puedes proteger significativamente tu sitio de posibles vulnerabilidades o abusos.

Es importante saber que a partir de Drupal 10.3, existe un método para deshabilitar el "superpoder" del usuario 1, y es con un cambio en un parámetro como se ha anunciado en un reciente change record del core de Drupal.

 

Política de Contraseñas

Una de las primeras líneas de defensa en la seguridad de cualquier sitio web es una política de contraseñas robusta. El módulo Password Policy de Drupal permite establecer reglas estrictas para las contraseñas que los usuarios deben seguir, lo que ayuda a prevenir accesos no autorizados y fortalece la seguridad general del sitio.

Algunos aspectos destacados de lo que puedes configurar con el módulo Password Policy:

  • Longitud mínima y máxima: Establece la longitud mínima y máxima que las contraseñas deben tener, para evitar contraseñas demasiado simples o excesivamente largas y difíciles de recordar.
  • Tipos de caracteres: Requiere que las contraseñas incluyan una combinación de diferentes tipos de caracteres, como mayúsculas, minúsculas, números y símbolos, aumentando así la complejidad.
  • Historial de contraseñas: Evita que los usuarios reutilicen las mismas contraseñas una y otra vez, obligándolos a pensar en nuevas combinaciones, lo que ayuda a mantener la seguridad en el tiempo.
  • Expiración de contraseñas: Configura un período después del cual las contraseñas deben ser cambiadas. Esto es especialmente útil en entornos corporativos donde deben mantenerse las contraseñas actualizada.

Implementar una política de contraseñas no solo ayuda a proteger las cuentas de usuario contra ataques de fuerza bruta, sino que también educa a los usuarios sobre la importancia de utilizar contraseñas seguras. Sin embargo, es importante balancear la rigurosidad de las políticas para evitar frustrar a los usuarios con requisitos demasiado exigentes que podrían resultar en contraseñas olvidadas.

 

GDPR

La conformidad con el Reglamento General de Protección de Datos (GDPR) es esencial para cualquier sitio web que opere o tenga tráfico en Europa. El módulo GDPR en Drupal facilita esta tarea al proporcionar herramientas específicas que ayudan a gestionar los datos personales de manera segura y transparente.

Este módulo es especialmente útil porque automatiza varios aspectos del cumplimiento del GDPR, incluyendo:

  • Derecho de acceso: Permite a los usuarios solicitar y recibir toda la información que el sitio ha recopilado sobre ellos, facilitando el cumplimiento de las solicitudes de acceso a datos personales.
  • Derecho de olvido: Ofrece a los usuarios la posibilidad de eliminar sus datos personales del sitio cuando ya no sean necesarios o si desean retirar su consentimiento. Esto es vital para cumplir con las normas de GDPR que permiten a los usuarios controlar su información personal.
  • Registro de actividades de procesamiento de datos: Mantiene un registro de cómo se manejan los datos personales dentro del sitio, asegurando que todas las actividades estén documentadas y sean transparentes.
  • Automatización de la evaluación de impacto de protección de datos: Facilita la evaluación y mitigación de riesgos asociados con el procesamiento de datos personales, lo cual es un requisito bajo el GDPR para ciertos tipos de procesamiento.

Implementar y configurar correctamente el módulo GDPR no solo ayuda a evitar sanciones, sino que también fortalece la confianza de los usuarios al demostrar que su privacidad es una prioridad para tu sitio. La sola instalación del módulo no garantiza el cumplimiento completo del GDPR; debe ser parte de una estrategia más amplia que incluya políticas claras y formación continua sobre protección de datos para el personal.

 

Autenticación de Dos Factores

La autenticación de dos factores, o 2FA, es como tener una segunda cerradura en tu puerta. En el mundo web es similar: después de ingresar tu contraseña habitual, necesitas un segundo código, que generalmente llega a tu teléfono o se genera en una app. En este contexto, el módulo TFA ofrece una capa adicional de protección que va más allá de la simple contraseña. Este módulo requiere que los usuarios verifiquen su identidad utilizando dos métodos diferentes antes de conceder acceso al sitio, lo que significa que incluso si una contraseña es comprometida, la cuenta sigue estando protegida.

Configurar el TFA en Drupal implica:

  • Selección del método de autenticación secundario: Puedes elegir entre varias opciones como códigos generados por aplicaciones móviles, mensajes SMS, o incluso métodos basados en hardware adiccional.
  • Integración con flujos de usuario existentes: Deberás considerar cómo introducir esta nueva capa de autenticación sin interrumpir la experiencia del usuario. Por ejemplo, proporcionar suficiente información y soporte durante el proceso de configuración inicial de 2FA.
  • Capacitación y soporte al usuario: Es necesario educar a los usuarios sobre la importancia de 2FA, y proporcionarles instrucciones claras sobre cómo configurar y utilizar la autenticación de dos factores.

Sin embargo, como llevamos repitiendo a lo largo del artículo, siempre debemos equilibrar la seguridad con la usabilidad. La implementación de 2FA no debe ser tan restrictiva que se convierta en un obstáculo para los usuarios. Esto se logra asegurando que el proceso de autenticación sea tan fluido como sea posible y proporcionando opciones de recuperación adecuadas en caso de que los usuarios pierdan acceso a su segundo factor. La seguridad de Drupal, incluyendo la autenticación de dos factores, debe ser parte de una estrategia de seguridad más amplia que incluya buenas prácticas de gestión de permisos y actualizaciones regulares del sistema para proteger contra vulnerabilidades conocidas.

Conclusión

Existe una línea extremadamente fina entre 'seguro' y 'molesto' con respecto a tus usuarios. Obviamente, querrás que las cosas sean lo más seguras posible en tu sitio, pero es bastante posible que empujes eso demasiado lejos en la dirección equivocada y causes una barrera para tus usuarios. Agregar demasiada seguridad "molesta" simplemente terminará evitando que tus usuarios accedan a tu sitio.

La configuración de los ajustes de seguridad de tus usuarios de manera incorrecta puede, de hecho, hacer las cosas más inseguras. Por ejemplo, establecer políticas de contraseñas difíciles lleva a una mala seguridad de contraseñas y, a menudo, a que estas contraseñas sean filtradas o incluso compartidas.

Mientras que los módulos y técnicas detallados aquí son útiles, probablemente no sea una gran idea instalar todo y asumir que las cosas están bien; inevitablemente causarás algunos problemas. Lo mejor es comenzar con algo como el control de fuerza bruta y construir a partir de ahí, ya que ese primer paso no causará problemas a tus usuarios. Los módulos más intrusivos como TFA solo deben instalarse si estás absolutamente seguro de que eso es lo que quieres. En mi experiencia, una combinación de cosas como tiempos de sesión cortos y TFA puede causar que los usuarios se molesten rápidamente y eventualmente dejen de usar el sitio.

Finalmente, aunque Drupal proporciona herramientas poderosas para fortalecer la seguridad, el mantenimiento continuo y las actualizaciones regulares del sistema son esenciales para proteger contra vulnerabilidades conocidas. Integrar todas estas herramientas en una estrategia de seguridad de una forma coherente y ajustada a las necesidades concretas de tu sitio, ayudará a proteger tanto a los usuarios como al propio sitio, manteniendo un equilibrio entre medidas de seguridad rigurosas y una experiencia de usuario óptima.

Comparte este artículo:
Publicado por CésarMSFelipe
Image

Hola a todos, soy desarrollador de Drupal, especializado en Backend, aunque a veces hago mis pinitos con Frontend, ¡Hasta sé centrar un div! Cuando no estoy sumergido en el código, probablemente me encontraréis explorando nuevos mundos en mis videojuegos favoritos o disfrutando de tiempo de calidad con los míos. Me apasiona combinar la tecnología con la creatividad, y siempre estoy buscando nuevas formas de aprender y crecer en mi campo. ¿Unimos fuerzas y creamos algo?
 

Si te gusta mi trabajo y quieres echar una mano:
Buy me a coffe!