Módulos de seguridad de Drupal 8 que no pueden faltar

Enviado por Daniel Muñoz Egido el Jue, 20/12/2018 - 09:00
texto de w-candado-w, y dentro del candado el logotipo de drupal

Drupal es una herramienta para la gestión de contenidos extremadamente (vamos a evitar el término totalmente) seguro, pero aún así hay una serie de módulos contribuidos que nos pueden ayudar a mejorar y gestionar la seguridad de nuestro sitio de una manera fácil.

Cuando empezamos a crear un sitio a veces no somos conscientes que la seguridad que vaya a tener el mismo no depende en exclusiva de lo robusta que sea la herramienta que estemos empleando. Hay muchas acciones y tareas de mantenimiento que dependen fundamentalmente de nosotros como administradores de éste. Por ejemplo, las actualizaciones son la principal causa de brechas de seguridad que se producen, como ocurrió con el conocido caso de Equifax y Apache Trust. En un primer caso se le echó la culpa al hecho de que Apache Trust es de código abierto, si bien posteriormente supimos que los atacantes habían aprovechado una vulnerabilidad que había sido solucionada por los desarrolladores de Apache seis meses antes y que no había sido implementado por los administradores del sitio de Equifax. Un ejemplo mucho más frecuente de lo que pensamos.

Por lo tanto, hay un buen número de tareas que dependen exclusivamente de nosotros. Entre las que podemos (debemos) llevar a cabo nosotros, podríamos diferenciar entre acciones de configuración y acciones de implementación.

Las acciones de configuración son aquellas por las que realizamos los ajustes necesarios en nuestra herramienta de gestión de contenidos para prevenir usos malintencionados o diversos tipos de ataques. El propio Drupal nos ofrece una serie de consejos de configuración para aplicar en nuestros sitios una vez instalada la herramienta:

  • Prevenir que los visitantes se puedan crear sus propias cuentas de usuario.
    La opción para que un visitante se puede crear su propia cuenta de usuario existe en las opciones de configuración de Drupal, la cual no está activada por defecto. Pero debemos ser conscientes que su utilización puede entrañar un alto riesgo de seguridad para nuestro sitio y debe ser empleada con muchísima precaución. Esta opción de configuración se encuentra en Administración > Configuración > Usuarios. Es recomendable que en el caso de que deseemos permitir que los usuarios se creen sus propias cuentas, seleccionemos la opción 'Visitantes, pero es necesaria la aprobación de los administradores' por la cual será el administrador del sitio el que deba activar la cuenta tras recibir la solicitud.
  • Proteger al usuario UID=1, que es el primero que se crea y al que se le da además de permisos de administración una serie de permisos especiales. La protección básica que debemos adoptar es no nombrar nunca a este usuario como admin o administrador, ya que será la primera opción que tomará un posible intruso para realizar un ataque de fuerza bruta. También podemos desactivarlo para que no pueda ser utilizado mediante el empleo de Drush o del módulo contribuido Paranoia, pero para esto deberemos tener conocimientos avanzados en Drupal.
  • Verificar que los diferentes roles no tengas más permisos de los estrictamente necesarios. Una de los aspectos más destacados de Drupal es la gestión de permisos, el cual nos permite establecer una nivel de granuralidad que muy pocos ofrecen. Con una correcta gestión de los permisos de los roles de usuario podemos controlar con exactitud lo que un determinado usuario puede hacer dentro de nuestro sitio, por lo que debemos prestar una especial atención a revisar dichos permisos.
  • Mantener el sitio siempre actualizado y permanecer atento a los diferentes avisos de seguridad que son lanzados por el equipo de seguridad de Drupal. Ya hemos comentado anteriormente que la mayoría de brechas de seguridad en un sitio provienen de complementos o plugins sin actualizar.
  • Desactivar el modulo Testing (simpletest), el cual nos permite realizar test unitarios y funcionales, pero que también podría ser utilizado para inyectar código malicioso. Por lo tanto, si necesitamos utilizarlo lo podemos activar y proceder a desactivarlo tras su utilización. Viene desactivado por defecto y la mayoría de nosotros no necesitaremos emplearlo nunca.

Por su parte, las acciones de implementación son aquellas por las cuales añadiremos funcionalidades extra o específicas de seguridad a nuestra instalación mediante el empleo de módulos o complementos. En el caso de Drupal disponemos de una serie de éstos que nos aportarán la práctica totalidad de funcionalidades específicas que necesitemos.

Captcha

Un captcha es una acción manual que se exige al usuario para comprobar que ésta no se está llevando a cabo por una máquina. Sirve para proteger principalmente los distintos tipos de formularios de nuestro sitio contra el spam.

 

reCAPTCHA_images_0.png

Existen diversos módulos que nos permiten insertar bloques captcha en nuestros formularios, pero el más descargado y utilizado con diferencia en reCAPTCHA, con el cual podremos insertar el reCAPTCHA de Google en nuestro sitio. Su integración en nuestro sitio es realmente sencilla si bien necesitaremos disponer de una cuenta de Google (si ya empleamos Analytics ya tenemos una) y darnos de alta en el servicio. Luego sólo tendremos que insertar el código que nos facilitan en la configuración del módulo.

 

reCAPTCHA-Drupal.jpg

 

Login Security

El módulo Login Security nos aporta una serie de opciones extra para poder configurar la forma en la que nuestros usuarios se logean en nuestro sitio. Por ejemplo, entre otras cosas podremos determinar el número máximo de intentos que un usuario puede realizar para logearse en nuestro sitio, bloquear determinadas cuentas ya sea por usuario o por IP de manera temporal o definitiva.

Podemos configurar el módulo para que nos envíe notificaciones cuando un usuario al que hemos bloqueado esté intentando conectarse o se esté produciendo un ataque por fuerza bruta, es decir, se están intentando de manera repetitiva acceder probando diferentes combinaciones de usuario y contraseña normalmente extraídas de grandes bases de datos.

Password Policy

Con el módulo Password Policy el administrador del sitio puede establecer la forma que deberán tener las contraseñas de los usuarios de nuestra instalación de Drupal. Por ejemplo se pueden determinar el número de caracteres que éstas deben tener (mínimo y máximo), si debe haber alguna letra mayúscula o algún carácter especial, etc. Las restricciones que nos permite introducir el módulo son:

  • Tipos de caracteres.
  • Dígitos.
  • Letras.
  • Letras / Dígitos (Alfanuméricos).
  • Longitud.
  • Mayúsculas.
  • Minúsculas.
  • Puntuación.
  • Ubicación de los dígitos.

También nos permite establecer un periodo de tiempo tras el cual el usuario debe cambiar la contraseña u obligar a uno o un grupo de usuarios a cambiarla.

Security Kit

Security Kit nos provee de toda una serie de funcionalidades para proteger nuestro sitio de una amplia variedad de ataques y mejorar así la seguridad de nuestro aplicación, como pueden ser ataques Cross-Site Scripting, Cross-Site Request Forgery, Clickjacking y configurar algunas opciones de conexión SSL/TLS,

 

security-kit-drupal-module.png

 

Estamos ante un módulo muy completo que nos ofrece una gran variedad de opciones de configuración aunque la gran mayoría de ellas requieren que sepamos qué es lo que estamos haciendo ya que pueden afectar al rendimiento de nuestro sitio.

Automated Logout

El funcionamiento del módulo Automated Logout es sencillo pero no por ello menos imprescindible y con unas altas repercusiones en el nivel de seguridad en nuestros. El administrador del sitio puede  determinas él tiempo de inactividad de un usuario tras el cual des-logearle de nuestra instalación de Drupal. Podemos establecer diferentes tiempos de inactividad en función del rol del usuario e incluso el no des-logeo de un rol en concreto, como puede ser el de administrador.

Session Limit

Al igual que el módulo anterior, la eficacia de Session Limit radica en su simplicidad. Con él podemos establecer el número máximo de sesiones simultáneas que puede tener un usuario abiertas al mismo tiempo.

 

session_limit_logo_0.jpg

 

En el caso de que un usuario superase el límite de sesiones establecido el módulo le informará de las sesiones que tiene abiertas y le dará la opción de cerrar la/s que estime necesario.

Two-factor autorization

Mediante la implementación de un sistema de doble autenticación para poder acceder a nuestro sitio se añade una capa de seguridad notable en él. Two-factor autirization es un módulo base, siendo por lo tanto la herramientas que nos va a permitir integrar servicios doble autenticación de terceros en nuestra instalación de Drupal, como pueden ser FreeOTP, Google Authenticator, Authy y otros.

Paranoia

Como muy bien su nombre indica, el módulo Paranoia es para todos aquellos que realmente están preocupado por la seguridad de sus sitios, ya sea porque custodian datos sensibles de clientes o usuarios, o por cualesquiera otro motivo. El módulo evalúa e identifica todos aquellos lugares en los que un posible atacante puede evaluar código PHP a través de la una interfaz web y lo bloquea, lo cual reduce considerablemente las posibilidad de que un posible atacante se pueda hacer con permisos dentro de nuestro sitio.

El módulo también nos permite realizar acciones tremendamente útiles desde el punto de vista dela seguridad, como es la posibilidad de deshabilitar el usuario UID=1, deshabilitar la posibilidad de que algunos formatos puedan filtrar código PHP, prevenir la concesión de permisos de usuarios que entrañen riesgos para el sitio, etc.

Honeypot

Honeypot nos ayuda a prevenir el spam en los formularios de nuestro sitio, principalmente en los formularios de contacto y en los de comentarios. El funcionamiento es bastante sencillo. El módulo crea un campo en los formularios que elijamos que estará oculto para nosotros pero que será identificable para una máquina, la cual, al intentar insertar spam dentro de nuestro sitio, lo rellenará, y por lo tanto se entenderá que el formulario está siendo cumplimentado por un usuario no humano.

También podemos configurar el módulo para establecer un tiempo mínimo para completar un formulario. Podemos establecer que un humano tardará no menos de 5 segundos (cuando menos) en rellenar un formulario sencillo y, por lo tanto, si el tiempo que transcurre desde que se empieza a rellenar el formulario hasta que se envía es menor al valor que hemos seleccionado, podemos suponer que ha sido empleado por una máquina.

 

Honey-Pot_0.png

 

Podemos seleccionar para la detección de spam cualquiera de las dos formulas, tanto por separado como de manera conjunta. También podemos emplearlo junto al módulo CAPTCHA.

Secure Login

Quizá el envío de contraseñas a través de Internet sea una de las acciones que más riesgo entraña en la transacción de información. Por esta, forzar que éstas se hagan mediante el empleo del protocolo HTTPS puede ser más que una buena idea. Esto exactamente es lo que podemos hacer con el módulo Secure Login. Su uso hará que cualquier página de nuestro sitio en la que se transfieran contraseñas de usuario se haga bajo un protocolo seguro.

 

No es necesario para proteger nuestro sitio realizar todas estas acciones ni instalar todos los módulos que aquí comentamos, y menos en Drupal, que como ya hemos comentado, es extremadamente seguro. En un sitio en el que sólo nosotros somo los usuarios muchas de ellas carecen de sentido, mientras que aquellos relacionado con la protección del espam son casi obligados hoy en día. Pero eso sí, desde el mismo momento que iniciamos un sitio web debemos evaluar el nivel de amenaza al que estamos expuestos y tomar las acciones que sean pertinentes.

¿Nos hemos olvidado de algún módulo o acción que tú utilizas para proteger tu sitio? Nos la puedes dejar en los comentarios para compartirla con nosotros. Tu aportación será siempre bienvenida.

 

 

Comentarios

Ricardo (no verificado)

Quizás sea una medida muy tonta y paranoica, pero combinar que el UID-1 sólo pueda tener abierta una sesión y dejar la sesión permanentemente abierta en un dispositivo evita que nadie tome root.
Lo único es tener la precaución de, al hacer cada backup, desbloquear el numero de sesiones que pueda tener abiertas el UID-1 para, en caso de perder el acceso al dispositivo que mantiene la sesión abierta, poder recuperar la sesión desde otro dispositivo sencillamente subiendo el backup desde el servidor.

Eso unido a trabajar siempre desde un segundo usuario con los permisos de administrador necesarios (más usuales) y que, es obvio, no sea el UID-2 ni se señale por su user como admin o similar.

En cuanto a las contraseñas, mi sugerencia es usar contraseñas construidas en base a un algoritmo, que pueden ser todo lo largas y seguras que queramos, resultan sencillas de recordar y facilitan usar diferentes fragmentos de contraseña en función del nivel de seguridad que queramos tener para cada cosa o sitio, por ejemplo el primer tercio de la contraseña para el correo, el segundo para foros que visitamos en sitios que no son nuestros, el primero y el tercero para... Etc.

Algoritmos hay muchos y pueden ser todo lo sencillos o complicados que queramos, un ejemplo:
1- Tomamos un nombre simple, Paco y una cifra fácil de recordar, 1234 y eso nos da nuestro primer tercio (o cuarto, o quinto...) de algoritmo (que en lugar de eso podría ser Segismundo y 31416...(pi) o cualquier otra "base" que nos resulte sencilla de recordar, acabada en un símbolo adicional o más, por ejemplo #.
2- Creamos el segundo tercio, por ejemplo alternando mayúsculas y minúsculas con lo que Paco se convierte en pAcO y alteramos la cifra, por ejemplo, multiplicándola por dos con lo que 1234 pasa a ser 2468 o tras posicionando los números con lo que 1234 pasa a ser 2143 y acabamos ese segundo tercio con uno más símbolos adicionales, por ejemplo dos, @+
3- Aplicamos los mismos principios para el tercer tercio pero esta vez cambiando las letras de la palabra original por las que estén a su derecha en el teclado o, si no la hay, la de la izquierda (o por las de tres a su lado, o arriba o abajo, etc...) por lo que Paco queda en Osvo y aplicamos otra operación fácil a la cifra, multiplicar por 5 por ejemplo lo que transforma 1234 en 6170 y rematamos este tercer tercio con otro símbolo o más, por ejemplo €$£¥

Recordando la base y los pasos aplicados resulta sencillo tener una contraseña cómo la que acabamos de crear:
Paco1234#pAcO2143@+Osvo6170€$£¥
....y si usamos de partida "supercalifragilsticoespialidoso" o algo similar y una cifra que nos resulte fácil de recordar al mismo "nivel" que la palabra que venga quien quiera y a ver si la revienta por fuerza bruta ;)

Jue, 28/03/2019 - 11:56 Enlace permanente

Añadir nuevo comentario

Este campo sólo es para verificar que usted es una persona. No será almacenado ni utilizado con ningún otro propósito

HTML Restringido

  • Etiquetas HTML permitidas: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.

Documentación Hoy le informa que los datos facilitados por usted en este formulario serán tratados informáticamente por Documentación Hoy con el objetivo de publicar su comentario a este contenido. Para poder llevar a cabo esta acción necesitamos su consentimiento explícito. Los datos proporcionados se conservarán mientras no solicite el cese de la actividad. Los datos no se cederán a terceros salvo en los casos en que exista una obligación legal. En cualquier momento usted puede ejercitar su derecho a acceder, rectificar, limitar o borrar sus datos enviándonos un e-mail a info@documentacionhoy.com. Usted puede encontrar más información en nuestra Política de Privacidad.

CAPTCHA
Esta pregunta es para comprobar si usted es un visitante humano y prevenir envíos de spam automatizado.