Recomendaciones de seguridad para Drupal
Siguiendo las buenas prácticas nosotros hacemos las siguientes recomendaciones para que el sistema sea lo más seguro posible. Se tomarán como supuestos los siguientes requerimientos:
- El manejador de contenidos sea Drupal 7
- El servidor de aplicaciones sea Apache HTTPD 2.2.x y se ejecuta en el contexto de privilegios del usuario www-data.
- Drupal se encuentre instalado en el directorio /opt/drupal7.
- El usuario webmaster sea quien le de mantenimiento al sitio y pueda elevar sus privilegios mediante sudo o su para obtener una sesión como root.
1. Instalación del módulo SecurityReview
Los módulos elevan la seguridad significativamente en los sitios web. La instalación del módulo ayuda a verificar las configuraciones mal hechas, en este caso elabora una lista de recursos necesarios para el sitio.
Instalación del módulo Security Review
Security Review es un módulo que revisa los errores de seguridad más comunes cometidos en drupal.
Algunas de las características que el módulo verifica son:
- Permisos en los ficheros.
- Protección contra ataques de Cross Site Scripting (XSS).
- Verificación de mensajes de error (evitando divulgación de información).
- Aseguramiento de archivos.
- Verificación de formatos de archivos.
- Protección contra inyecciones SQL.
- Protección contra ataques de fuerza bruta.
- Permisos de administración (protege contra la mala configuración).
- Protección contra ataques de fuerza bruta para usuarios y contraseñas.
- Evita divulgación de información en contraseñas incluidos en mensajes de correo electrónico.
- Protege contra la ejecución arbitraria de código PHP.
- Protección contra intentos de phishing.
- Visualización de control de accesos (protege contra la divulgación de información).
El proceso de instalación que se recomienda es:
- Descargar el archivo tar.gz de versión 7.x-1.1 del módulo security-review de la página web.
https://www.drupal.org/project/security_review
- Extraer el archivo security-review
# cd /home/usuario/Descargas/
# tar –xzvf security-review.tar.gz
- Copiar el directorio security-review a modules
# cp security-review /drupal7/modules
- Cambiar los permisos del archivo
# chmod –cR o-w security-review
# chmod –cR g+w security-review
- Cambiar el propietario del archivo
# chown –cR webmaster:www-data security-review
- Una vez extraído el archivo, abrir un navegador y en la barra donde va la URL colocar
- Dirigirnos a la parte inferior y activar el módulo Security Review
- Para activar los Roles y lo que revisará el módulo es en Configure
- Guardamos la configuración
2. Configuración de permisos y propietarios
El servidor de aplicaciones web no debe de tener permisos para editar o escribir en los archivos que conforman parte del core o plugins de Drupal.
- El servidor Apache debe tener acceso de lectura a los archivos que se suban al sitio solamente.
- El usuario webmaster es quien puede dar mantenimiento al sitio y escribir en esos archivos.
Se cambia la ubicación al directorio DocumentRoot de la aplicación web.
# cd /opt/drupal7/
- Cambiar los propietarios y grupo del directorio Drupal
# chown –cR webmaster:www-data /opt/drupal7/
Se pueden asignar permisos de lectura-escritura para el dueño y de solo lectura para el grupo.
- Se modificar los permisos en los archivos que estén dentro del directorio /opt/drupal7/, en particular los siguientes permisos:
7 |
Permisos globales: lectura, escritura y ejecución para el propietario del archivo. |
5 |
Permisos de lectura y ejecución al grupo en el cual se encuentra el archivo. |
5 |
Permisos de lectura y ejecución para otros usuarios del sistema que utilicen el archivo. |
6 |
Permisos globales: lectura, escritura y ejecución para el propietario del archivo. |
4 |
Permisos de lectura para el grupo al cual pertenece el archivo. |
4 |
P ermisos de lectura para otros usuarios del sistema que utilicen el archivo. |
La utilería find, encuentra todos los directorios con el parámetro d y con el parámetro f encuentra todos los archivos para después aplicar los cambios de permisos.
# find /opt/wordpress -type d –print0 | xargs -0 chmod –c 755
# find /opt/wordpress -type f –print0 | xargs -0 chmod –c 644
El directorio donde se encuentre el sitio debe de tener permisos especiales, para que el manejador de contenidos escriba constantemente en él.
# cd /opt/drupal7/
# chmod –cR o-w /opt/drupal7/sites/all/sitio/
# chmod –cR g+w /opt/drupal7/sites/all/sitio/
3. Privilegios
Una cuestión importante son los privilegios, se considera una buena práctica el definir quién puede habilitar las características del sitio, definir los roles.
- En la pestaña de administración, ir a People.
- Crear o editar los usuarios
- Especificar los permisos para un rol, dar clic en el checkbox del usuario.
Se pueden agregar editores al sitio web, una buena práctica es crear roles con la propiedad de editor.
Mediante un clic en People podemos acceder a configurar a nuestros usuarios y dar roles.
4. Forzar el contenido autenticado
Es posible habilitar la autenticación en el sitio mediante un módulo denominado SecurePages, el cual habilita una redirección a una versión de la página con el protocolo SSL.
El módulo fuerza a que cada uno de los sitios dentro del DocumentRoot utilicen el protocolo ssl para transmitir datos
- Descargar el módulo SecurePages
https://www.drupal.org/project/securepages
- Se descomprime el archivo en el directorio /opt/drupal7/modules/
tar –xzf securepages-$version.tar.gz
- Cambiar los permisos al contenido del módulo
# chmod o-w /opt/drupal7/modules/secure-*
# chmod g+w /opt/drupal7/modules/secure-*
Aplicar las configuraciones en el archivo de configuración del VirtualHost o en el archivo de configuración principal de apache, activando el módulo ssl y agregando las directivas y puertos
El módulo se puede activar mediante la opción
# a2enmod ssl
Añadir al inicio del archivo de configuración de virtualhost, la configuración del archivo default-ssl
ServerAdmin webmaster@localhost
DocumentRoot /ubicación/DocumentRoot/Drupal7
Options FollowSymLinks
AllowOverride All
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
Existe otra opción para poder habilitar el protocolo de comunicación SSL, habilitando la característica en la configuración de Drupal.
Obteniendo un certificado mediante un proveedor de hosting o generar un certificado propio.
5. Ejecución de CRON periódicamente
El uso de un programa cron es una característica importante en la seguridad de un manejador de contenidos.
Algunas de las características del cron de drupal son:
- El módulo de búsqueda que indexa contenido web.
- Una advertencia para notificar que otros sitios han sido actualizados.
Dirigirse a la siguiente url:
http://sitio/?q=admin/config/system
Para configurar horarios del cron:
Corremos el cron
Guardamos la configuración
Bibliografìa
https://drupal.org/security/secure-configuration
https://drupal.org/project/securepages
https://drupal.org/https-information
Liberación original: Martes, 23 Septiembre 2014
Última revisión: Martes, 05 Abril 2016
La Coordinación de Seguridad de la Información/UNAM-CERT agradece el apoyo en la elaboración y revisión de este documento a:
Para mayor información acerca de este documento contactar a:
UNAM-CERT: Equipo de Respuesta a Incidentes UNAM
Coordinación de Seguridad de la Información
Dirección General de Cómputo y Tecnologías de Información y Comunicación
Universidad Nacional Autónoma de México
E-Mail: incidentes@cert.unam.mx
http://www.cert.org.mx
http://www.seguridad.unam.mx
ftp://ftp.seguridad.unam.mx
Tel: 56 22 81 69