Cómo revisar la Seguridad en MySQL

MySQL es una de las bases de datos más extendidas entre los sistemas de información de producción en las organizaciones. Es por ello que se ha convertido desde hace tiempo en blanco de hackers y atacantes en busca de información de interés.

Desde el punto de vista técnico existen distintos puntos de revisión de una base de datos MySQL, fundamentalmente:

  • Asignación de privilegios
  • Fichero de configuración
  • Cuentas de usuario
  • Acceso remoto

Una de las primeras acciones de revisión se debe centrar en la revisión de las cuentas por defecto, en este caso root. Para ello se puede comprobar si existe la cuenta y contiene contraseña en blanco:

SELECT User, Host

FROM user

WHERE User=’root’;

El acceso remoto (puerto 3306) a la base de datos debe ser monitorizado y controlado. Es muy común que el servidor de aplicaciones resida en la misma máquina que la base de datos, por lo que se podría limitar las conexiones a la base de datos desde fuera de localhost. Para ello se puede configurar esta opción en el fichero my.cnf añadiendo:

MYSQLD_OPTIONS=”–skip-networking”

Adicionalmente existen algunos parámetros de configuración o arranque de la base de datos interesantes desde el punto de vista de la seguridad:

  • skip-grant-tables: Arrancar el sistema con esta parámetro supone una grave brecha de seguridad, ya que supone que cualquier usuario tiene privilegios para hacer cualquier cosa sobre la base de datos. En algún caso puede ser útil para recuperar la contraseña de root.
  • safe-show-database: Permite mostrar solamente aquellas bases de datos sobre las que un usuario tiene algún tipo de privilegio
  •  safe-user-create: permite determinar si un usuario puede crear nuevos usuarios siempre y cuando no tenga privilegios de INSERT sobre la tabla mysql.user

Finalmente, y partiendo de la base de asignación del mínimo privilegio necesario, uno de los aspectos de seguridad a revisar son los privilegios asignados en la base de datos:

Select * from user where

Select_priv  = 'Y' or Insert_priv  = 'Y'
or Update_priv = 'Y' or Delete_priv  = 'Y'
or Create_priv = 'Y' or Drop_priv    = 'Y'
or Reload_priv = 'Y' or Shutdown_priv = 'Y'
or Process_priv = 'Y' or File_priv    = 'Y'
or Grant_priv   = 'Y' or References_priv = ‘Y'
or Index_priv = 'Y' or Alter_priv = 'Y';

Select * from host
where Select_priv  = 'Y' or Insert_priv  = 'Y'
or Create_priv = 'Y' or Drop_priv    = 'Y'
or Index_priv = 'Y' or Alter_priv = 'Y';
or Grant_priv   = 'Y' or References_priv = ‘Y'
or Update_priv = 'Y' or Delete_priv  = 'Y'

Select * from db
where Select_priv  = 'Y' or Insert_priv  = 'Y'
or Grant_priv   = 'Y' or References_priv = ‘Y'
or Update_priv = 'Y' or Delete_priv  = 'Y'
or Create_priv = 'Y' or Drop_priv    = 'Y'
or Index_priv = 'Y' or Alter_priv = 'Y';

Áudea Seguridad de la Información

Antonio Martínez

Departamento de Gestión

www.audea.com

Puedes seguir los comentarios de esta entrada a través de RSS 2.0 Usted puede dejar un comentario, o trackback.

Acerda de Audea

En Áudea ofrecemos a nuestros clientes, desde hace 9 años, única y exclusivamente servicios de consultoría, auditoría, formación, integración y Professional Services en el ámbito del Gobierno y la Gestión de la Seguridad de la Información y las Tecnologías. Visítanos en www.audea.com
Escribe un Comentario

Una respuesta

Escribe un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *