You are on page 1of 6

BREVE INTRODUCCIÓN

La base de datos MySQL se ha convertido en la base de datos de código abierto más popular
del mundo debido a su nivel constante de rendimiento rápido, alta confiabilidad y facilidad
de uso. Se usa en todas partes y por todos. Las personas, los desarrolladores web y muchas
de las organizaciones más grandes y de más rápido crecimiento del mundo, lo utilizan para
impulsar sus sitios web de gran volumen, sistemas comerciales críticos y paquetes
software.

El problema de muchas organizaciones radica en que no ponen a la seguridad como una


consideración importante cuando se instala este tipo de producto. A menudo, lo que más
importa es ponerlo en funcionamiento lo más rápido posible para que la organización
pueda beneficiarse de ello.

Por ello se debe aprender a instalar un servidor de base de datos MySQL en conformidad
con las mejores prácticas de seguridad.
IMPLEMENTACION DE MEDIDAS DE SEGURIDAD EN MYSQL

1. Asegure su servidor

Muchos ataques conocidos son posibles solo una vez que se ha adquirido el acceso físico a
una máquina. Por esta razón, es mejor tener el servidor de aplicaciones y el servidor de la
base de datos en diferentes máquinas. Si esto no es posible, debe asegurarse de ejecutar
comandos remotos a través de un servidor de aplicaciones; de lo contrario, un atacante
podría dañar su base de datos incluso sin permisos. Por esta razón, a cualquier servicio que
se ejecute en la misma máquina que la base de datos se le deben otorgar los privilegios de
permiso más bajos posibles que permitan que el servicio funcione sin problemas.

No olvide instalar todo el paquete de seguridad: Antivirus y Antispam, Firewall y todos los
paquetes de seguridad recomendados por el proveedor de su sistema operativo. Además,
no olvide pasar 10 minutos pensando en la ubicación física de su servidor: en el lugar
equivocado, su servidor puede ser robado, inundado o dañado.

Considere la posibilidad de realizar algunos procedimientos de endurecimiento del sistema


operativo, como los siguientes:

 Instalar el software Antivirus y Antispam


 Configurar el firewall del sistema operativo
 Considere la seguridad de la ubicación física de su servidor
 Instale los servicios que desea que ejecute la máquina
 Endurezca el servidor y los servicios de producción
 Deshabilitar servicios innecesarios
 Siga las recomendaciones de los proveedores de servicios con respecto a los parches
y actualizaciones necesarios para la operación segura de sus servicios
2. Deshabilitar o restringir el acceso remoto

Considere si se accederá a MySQL desde la red o solo desde su propio servidor.

Si se utiliza el acceso remoto, asegúrese de que solo los hosts definidos puedan acceder al
servidor. Esto se hace típicamente a través de envoltorios TCP, iptables o cualquier otro
software o hardware de firewall disponible en el mercado.

Para evitar que MySQL abra un socket de red, se debe agregar el siguiente parámetro en la
sección [mysqld] de my.cnf o my.ini:

skip-networking

Esta línea desactiva el inicio de la red durante el inicio de MySQL. Tenga en cuenta que aún
se puede establecer una conexión local con el servidor.

Otra solución posible es obligar a MySQL a obedecer solo al host local agregando la
siguiente línea en la sección [mysqld] de my.cnf

bind-address = 127.0.0.1

Es posible que no desee deshabilitar el acceso a la red a su servidor de base de datos si los
usuarios de su organización se conectan al servidor desde sus máquinas o al servidor web
instalado en una máquina diferente. En ese caso, se debe considerar la siguiente sintaxis de
concesión restrictiva:

mysql> GRANT SELECT, INSERT ON mydb. * TO 'someuser' @ 'somehost';

3. Deshabilite el uso de INFILE LOCAL

El siguiente cambio es desactivar el uso del comando "LOAD DATA LOCAL INFILE", que
ayudará a evitar la lectura no autorizada de los archivos locales. Esto es especialmente
importante cuando se encuentran nuevas vulnerabilidades de inyección SQL en
aplicaciones PHP.

Además, en ciertos casos, el comando "INFILE LOCAL" puede usarse para obtener acceso a
otros archivos en el sistema operativo.

Para desactivar el uso del comando "LOCAL INFILE", se debe agregar el siguiente
parámetro en la sección [mysqld] del archivo de configuración de MySQL.

set-variable = local-infile = 0
4. Cambiar el nombre de usuario y la contraseña raíz

El nombre de usuario administrador predeterminado en el servidor MySQL es "raíz". Los


hackers a menudo intentan obtener acceso a sus permisos. Para hacer esta tarea más difícil,
cambie el nombre de "raíz" a otra cosa y proporcione una contraseña alfanumérica larga y
compleja.

Para cambiar el nombre del nombre de usuario del administrador, utilice el comando de
cambio de nombre en la consola de MySQL:

mysql> RENAME USER root TO nuevo_usuarior;

Para cambiar la contraseña de un usuario, use el siguiente comando de línea de comando:

mysql> SET PASSWORD FOR 'username' @ '% hostname' = PASSWORD


('nuevacontraseña');

5. Eliminar la base de datos "prueba"

MySQL viene con una base de datos de "prueba" diseñada como espacio de prueba. Se
puede acceder por el usuario anónimo y, por lo tanto, es utilizado por numerosos ataques.

Para eliminar esta base de datos, use el comando de DROP de la siguiente manera:

mysql>drop database test;


6. Eliminar cuentas anónimas y obsoletas

La base de datos MySQL viene con algunos usuarios anónimos con contraseñas en blanco.
Como resultado, cualquiera puede conectarse a la base de datos. Para verificar si este es el
caso, haga lo siguiente:

mysql> select * from mysql.user donde user = "";

En un sistema seguro, ninguna selección debería ser devuelta. Si una selección es devuelta,
significa que existe una cuenta anónima. Para eliminar la cuenta, ejecute el siguiente
comando:

mysql> DROP USER "";

7. Habilitar los archivos de historial de registro

Si su servidor de base de datos no ejecuta muchas consultas, se recomienda que habilite el


registro de transacciones agregando la siguiente línea a la sección [mysqld] del archivo
/etc/my.cnf:

[mysqld] log = / var / log / mylogfile

Además, verifique que solo los identificadores "raíz" y "mysql" tengan acceso a estos
archivos de registro (al menos acceso de escritura).

You might also like