Cómo proteger Drupal: guía completa de seguridad

Drupal es conocido por su sólida seguridad, pero solo si lo configuras y lo mantienes correctamente. En esta guía repasamos todas las medidas de seguridad esenciales para proteger tu sitio web Drupal contra los ataques.

Por qué es importante la seguridad de Drupal

Las administraciones públicas y las grandes organizaciones usan Drupal precisamente por su buena seguridad. Pero cualquier sitio web es un objetivo potencial:

  • Los hackers buscan vulnerabilidades
  • El malware puede infectar a los visitantes
  • Los datos pueden ser robados
  • Tu sitio puede utilizarse de forma abusiva para enviar spam Con las medidas adecuadas evitas el 95% de todos los ataques.

Las actualizaciones como primera línea de defensa

Las actualizaciones son la medida de seguridad más importante en Drupal.

Seguir los avisos de seguridad

Drupal publica actualizaciones de seguridad en momentos fijos:

  1. Sigue al Drupal Security Team
  2. Suscríbete a las notificaciones de seguridad
  3. Las versiones de seguridad salen los miércoles
  4. Las actualizaciones críticas se anuncian de inmediato

Actualizar el core de Drupal

Mantén el core siempre actualizado:

  1. Ve a Reports y después a Available updates
  2. Verás las actualizaciones disponibles
  3. Las actualizaciones de seguridad llevan una etiqueta roja
  4. Haz primero una copia de seguridad
  5. Ejecuta la actualización Con Composer (recomendado):
# Comprueba las actualizaciones disponibles
composer outdated drupal/*
# Actualiza el core de Drupal
composer update drupal/core-recommended drupal/core-composer-scaffold --with-all-dependencies
# Ejecuta las actualizaciones de la base de datos
drush updatedb
drush cache:rebuild

Actualizar los módulos

Los módulos también pueden tener fallos de seguridad:

  1. Ve a Reports y después a Available updates
  2. Comprueba la pestaña Security updates only
  3. Actualiza primero los módulos con problemas de seguridad
# Actualiza todos los módulos
composer update drupal/*
# Actualiza un módulo concreto
composer update drupal/webform

Contraseñas seguras y autenticación

Las contraseñas débiles son una vulnerabilidad muy habitual.

Configurar la política de contraseñas

  1. Ve a Configuration y después a People
  2. Haz clic en Account settings
  3. Configura los requisitos de las contraseñas:
    • Longitud mínima
    • Caracteres obligatorios (mayúsculas, números, caracteres especiales)
  4. Guarda la configuración

Módulo Password Policy

Para una política más completa:

composer require drupal/password_policy

Configura reglas para:

  • Longitud mínima de la contraseña (12+ caracteres)
  • Tipos de caracteres obligatorios
  • Historial de contraseñas
  • Fecha de caducidad

Autenticación de dos factores

Añade una capa de seguridad adicional:

composer require drupal/tfa

Configuración:

  1. Ve a Configuration y después a TFA
  2. Elige el método de autenticación (TOTP, códigos de recuperación)
  3. Exige 2FA a los administradores
  4. Los usuarios lo configuran desde su perfil

Limitar los permisos de los usuarios

El principio de privilegios mínimos es esencial.

Revisar los roles

  1. Ve a People y después a Permissions
  2. Revisa cada rol en busca de permisos innecesarios
  3. Elimina los permisos que no hagan falta
  4. Presta especial atención a:
    • Permisos de gestión de contenido
    • Permisos de administrador
    • Permisos de ejecución de PHP

Nada de PHP en el contenido

El módulo PHP Filter se eliminó de Drupal 8+ por buenas razones. No lo instales nunca. En su lugar, usa:

  • Módulos personalizados para la funcionalidad dinámica
  • Plantillas Twig para la presentación

Limitar las cuentas de administrador

  1. Reduce al mínimo el número de cuentas de administrador
  2. Usa roles específicos en lugar de un administrador completo
  3. Revisa con regularidad quién tiene cada acceso

Permisos de archivos y seguridad del servidor

Unos permisos de archivos correctos evitan muchos ataques.

Permisos recomendados

Drupal necesita unos permisos concretos:

# Carpetas: 755
find /path/to/drupal -type d -exec chmod 755 {} \;
# Archivos: 644
find /path/to/drupal -type f -exec chmod 644 {} \;
# sites/default/files con permiso de escritura
chmod 755 sites/default/files
# settings.php de solo lectura
chmod 444 sites/default/settings.php

Proteger settings.php

Después de la instalación, settings.php debe ser de solo lectura:

chmod 444 sites/default/settings.php
chmod 555 sites/default

Trusted host settings

Configura en settings.php qué nombres de host son válidos:

$settings['trusted_host_patterns'] = [
  '^www\.jouwdomein\.nl$',
  '^jouwdomein\.nl$',
];

Esto evita los ataques de cabecera host.

Configurar SSL/HTTPS

Todos los sitios Drupal deben usar HTTPS.

Activar SSL

En el hosting de Theory7, el SSL está disponible gratis:

  1. Activa Let's Encrypt en DirectAdmin
  2. Espera a que se cree el certificado
  3. Comprueba que HTTPS funciona

Forzar HTTPS

Fuerza HTTPS mediante .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

O mediante settings.php:

$settings['https'] = TRUE;

Cookies seguras

Asegúrate de que las cookies solo se envían por HTTPS:

// En settings.php
ini_set('session.cookie_secure', 1);

Instalar módulos de seguridad

Los módulos adicionales refuerzan tu seguridad.

Security Kit

composer require drupal/seckit

Configura:

  • Content Security Policy (CSP)
  • Protección contra el clickjacking
  • Prevención del cross-site scripting (XSS)

Honeypot

Protege contra los bots de spam:

composer require drupal/honeypot

Añade campos invisibles que los bots rellenan y los usuarios legítimos no.

Flood Control

Protege contra los ataques de fuerza bruta:

composer require drupal/flood_control

Configura límites para:

  • Intentos de inicio de sesión por IP
  • Intentos de inicio de sesión por cuenta
  • Envíos del formulario de contacto

reCAPTCHA

Protege los formularios contra los bots:

composer require drupal/recaptcha

Configúralo con tus claves de Google reCAPTCHA.

Supervisión y registros

Detecta los problemas rápidamente con una buena supervisión.

Consultar los registros de Drupal

  1. Ve a Reports y después a Recent log messages
  2. Filtra por nivel de gravedad
  3. Fíjate en los errores repetidos
  4. Busca actividad sospechosa

Configurar el registro de la base de datos

  1. Ve a Configuration y después a Development
  2. Haz clic en Logging and errors
  3. Indica cuántos mensajes se conservan
  4. Envía los errores a syslog para guardarlos de forma permanente

Supervisión externa

Plantéate usar supervisión externa para:

  • Supervisión de la disponibilidad
  • Análisis de seguridad
  • Métricas de rendimiento
  • Caducidad del certificado SSL

Estrategia de copias de seguridad

Las copias de seguridad son tu última línea de defensa.

Módulo Backup and Migrate

composer require drupal/backup_migrate

Configura:

  1. Copias de seguridad automáticas diarias
  2. Almacenamiento en una ubicación externa
  3. Conservación de varias versiones
  4. Pruebas periódicas de restauración

Copias de seguridad de DirectAdmin

Combínalas con las copias de seguridad de DirectAdmin para tener más seguridad.

Lista de comprobación de seguridad

Comprueba con regularidad:

  • Core y módulos de Drupal actualizados
  • Contraseñas seguras en todas las cuentas
  • Autenticación de dos factores para los administradores
  • Permisos mínimos por rol
  • Permisos de archivos correctos
  • HTTPS activo y forzado
  • Módulos de seguridad instalados
  • Registros activos
  • Copias de seguridad en funcionamiento

¿Necesitas ayuda?

Estamos a tu disposición. ¿Te has encontrado con algún problema o tienes preguntas? Nuestro equipo de soporte te ayuda personalmente. Envíanos un mensaje a través del sistema de tickets: normalmente respondemos en unas horas y buscamos contigo la solución.

¿Buscas hosting WordPress? Consulta nuestra oferta.