Professional Documents
Culture Documents
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.
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.
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:
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
Para cambiar el nombre del nombre de usuario del administrador, utilice el comando de
cambio de nombre en la consola de MySQL:
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:
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:
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:
Además, verifique que solo los identificadores "raíz" y "mysql" tengan acceso a estos
archivos de registro (al menos acceso de escritura).