Recomendaciones de seguridad para Drupal

23/09/2014

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

http://sitio/?q=admin/modules

  • 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

http://www.openssl.org/docs/HOWTO/certificates.txt

https://drupal.org/node/120614

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:

Andrés Leonardo Hernández Bermúdez
Juan Pablo Colín Téllez

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