Enviado por juanonlab el Mié, 27/02/2019 - 22:16
Seguridad en Drupal

Existen ventajas en el uso de un cms como Drupal. Una de ellas es que en todo el core y en los módulos que instales va a ver una comunidad añadiendo parches de seguridad y mejoras. De los desarrollos propios tendrá tu equipo que ocuparse.

En esta entrada muestro un ejemplo práctico sobre como actualizar tu web drupal cuando hay parches de seguridad.

Normalmente mediante una notificación se avisa al administrador de la existencia de uno o varios parches de seguridad. En mi caso tengo configurado drupal para que me envié un correo electrónico para avisarme de las actualizaciones. Si el fallo de seguridad es grave al entrar a la pantalla de administración se mostrará un mensaje claro recomendándote que realices la actualización de seguridad.

Notificaciones de cambios en los módulos y/o en el core de Drupal

 

El proceso de actualización ya lo expliqué en la entrada composerizar/actualizar Drupal. Pero voy a hacer un resumen rápido de los pasos a realizar (ejecutar los comandos desde el directorio raíz del proyecto Drupal).

1- Modo mantenimiento ON

drush sset system.maintenance_mode 1

2- Actualizar core (si fuera necesario)

composer update drupal/core --with-dependencies

3- Actualizar módulos (si fuera necesario). Por ejemplo:

composer require 'drupal/fontawesome:^2.12'
composer require 'drupal/paragraphs:^1.6'
composer require 'drupal/metatag:^1.8'

4- Actualizar la base de datos

drush updatedb

o bien ir a la pantalla de actualización desde drupal

www.tusite.com/update.php

5- Modo mantenimiento OFF

drush sset system.maintenance_mode 0

6- Limpiar cache

drush cr

Ventajas e inconvenientes de disponer de un cms en vez de un desarrollo a medida

Una buena ventaja es que los cms suelen disponer (al menos en el core) de un grupo de desarrolladores encargados de detectar fallos de seguridad. Cómo estos cms son utilizados por una amplia comunidad el código es revisado por muchas personas. Un desarrollo a medida normalmente no va a disponer de tantas personas dedicadas a revisar la seguridad de la aplicación.

Esto exige que siempre debas tener tu cms actualizado. ¿Por qué? Porque es posible que intrusos intenten explotar el fallo detectado. Pueden hacer un barrido por webs buscando este error. Si dispones de una aplicación a medida, para explotar el error se tiene que estudiar un poco cómo está construido tu site.

Imagina que se detecta una error de seguridad en wordpress. Un gran número de sites están hecho con este cms. Los hackers pueden hacer un barrido por todos los sites wordpress intentando aprovecharse de este fallo.

Observando los logs de mi servidor es raro el día que no detecto un error 404 intentando acceder a wordpress en mi servidor. ¡Y eso que no lo tengo instalado!

Un fragmento de mi log en un día cualquiera:

    404 Not Found
       /favicon.ico: 8 Time(s)
       /ads.txt: 2 Time(s)
       /wp-login.php: 2 Time(s)
       /HNAP1/: 1 Time(s)
       /SQLite/main.php: 1 Time(s)
       /SQLiteManager-1.2.4/main.php: 1 Time(s)
       /SQLiteManager/main.php: 1 Time(s)
       /SQlite/main.php: 1 Time(s)
       /agSearch/SQlite/main.php: 1 Time(s)
       /hudson/script: 1 Time(s)
       /main.php: 1 Time(s)
       /script: 1 Time(s)
       /sqlite/main.php: 1 Time(s)
       /sqlitemanager/main.php: 1 Time(s)
       /test/sqlite/SQLiteManager-1.2.0/SQLiteMan ... -1.2.0/main.php: 1 Time(s)

Como se puede observar se intenta acceder a wordpress /wp-login.php o al menos detectar si mi site tiene instalado este cms. Supongo que para después comprobar si la contraseña es fácil de averiguar (intentando acceder por ejemplo con admin/admin). Si se realizara un ataque de fuerza bruta los cortafuegos de proveedor banearían esa ip.  Notar también cómo hay intentos de accesos a SQLLite. En otras ocasiones he visto intentos de accesos a phpmyadmin. No recomiendo tener visibles los accesos a base de datos desde web.

Por esto es importante tener contraseñas seguras y estar completamente actualizado. Sobre todo con los parches de seguridad.

 

¿En qué consistía la brecha de seguridad detectada?

En esta captura muestro el error de seguridad detectado:

Sanitize

Básicamente dice que se puede ejecutar código aleatorio en algunos campos. Para evitar esto hay que "limpiar" el campo. En esta entrada se explica el concepto de sanitize para php. Quizás no tengas habilitado ese módulo restfull pero en un futuro lo puedes llegar a utilizar así que es mejor dejar todo el sistema actualizado.

Es muy importante aplicar los parches de seguridad en general pero en aplicaciones de uso común como wordpress ó drupal mucho más porque es un objetivo habitual de hackers aprovecharse de estos fallos para poder entrar en vuestros sistemas.

Añadir nuevo comentario