Hacer más seguro MySQL

Iniciado por davidhs, Febrero 13, 2018, 08:12:29 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Hola a tod@s hoy os traigo una pequeña recomenación 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: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

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 recomendación de como hacer algo más seguro nuestro servidor de MySQL. Un saludo, Davidhs.
Un mundo construido sobre fantasía. Emociones sintéticas en forma de pastillas. Guerras psicológicas en forma de publicidad. Sustancias químicas que alteran la mente en forma de comida. Lavados de cerebro en forma de medios de comunicación. Agujas aisladas bajo control en forma de redes sociales.

Muy importante!

ademas no usar root para ninguna app-web instalada...
slds