¿Cómo hacer MySQL más seguro?

Hola a tod@s hoy os traigo una pequeña entrada donde vamos a ver como hacer nuestro servidor de MySQL más seguro, esto nos permitirá tener un control completo de nuestro servidor, ya que en estos tiempos existen muchísimos bots continuamente escaneando la red para atacar nuestros servicios.

Voy a dar por sentado que todos conocemos que es Mysql, pero para el que este un poco perdido voy a dejar un enlace a wikipedia con su descripción: MySQL

Bueno para comenzar, hablaremos de la directiva de configuración «bind-address», establecida esta directiva a un valor seguro se restringirían las conexiones solamente a «localhost», es decir en caso de que un cliente desease conectarse, al no generarse la conexión en la propia máquina esta se cerraría. Para que el servidor MySQL solo reciba conexiones en localhost se deberá dejar la política de la siguiente manera, Abrimos /etc/mysql/my.cnf y modificamos:

bind-address=127.0.0.1

La siguiente directiva es bastante importante ya que si el servidor MySQL que estamos gestionando trabaja con una aplicación web, un atacante podría aprovechar una inyección SQL y poder acceder o ejecutar la lectura de los ficheros de configuración de nuestro servidor a través de una shell de MySQL ejecutada con los permisos del usuario que inició el daemon de MySQL, para evitar la carga de ficheros y evitar una posible fuga de información desde el sistema de ficheros mediante SQLi, establecemos las siguientes directivas en el fichero de configuración «/etc/mysql/my.cnf»:

[mysqld]

local-infile            = 0

secure-file-priv           = /dev/null

Otro de los pasos más importantes es la de renombrar el usuario root, no es una directiva de seguridad como tal, pero ya sabemos que hay muchos bots probando con fuerza bruta el acceso a nuestros servidores, no hay ningún sistema impenetrable pero siempre hay que ponérselo un poco más difícil al ciberdelincuente, esto se hará con la siguiente actualización de la base de datos «mysql» en la tabla «user»:

update mysql.user set user=»davidhs» where user=»root»;

flush privileges;

Otro control que deberíamos llevar dentro de nuestra servidor MySQL es consultar siempre que podamos los privilegios de los usuarios, es recomendable que tengamos varios usuarios con diferentes permisos para cada función, con la siguiente consulta podremos ver los usuarios y sus permisos, según los usuarios que encontremos pues degradaremos o elevaremos los privilegios de los usuarios que nos interese:

select distinct(grantee) from information_schema.user_privileges;

En caso de que solo queramos ver los permisos de un solo usuario se hará con la siguiente consulta:

show grants for ‘root’@’localhost’;

Otra herramienta y no menos importante es el script «mysql_secure_installation», el cual nos ayuda a eliminar usuario anónimos, establecer una contraseña al usuario administrador, eliminar las bases de datos de pruebas, habilitar o deshabilitar el acceso remoto del usuario administrador, etc. El cual se iniciaría de la siguiente manera:

sudo mysql_secure_installation

Espero que os guste esta pequeña entrada de como hacer algo más seguro nuestro servidor de MySQL. Un saludo, David.

 

Gracias por visitar el blog.

 

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.