Cómo mejorar la seguridad de MySQL
En segundo lugar, proteger el sistema operativo
Proteger el sistema operativo es un requisito previo para proteger la seguridad de la base de datos, porque si todo el entorno operativo no es seguro, entonces todo el contenido del sitio web es vulnerable. y puede exponerse fácilmente a los atacantes. Para mantener el sistema operativo y el servidor MySQL, puede utilizar los siguientes métodos:
2.1 Aloje el servidor de base de datos y el servidor web en máquinas físicas diferentes. Si es posible, ejecute el servidor de base de datos en un servidor separado para evitar vulnerabilidades. en otras aplicaciones o servicios causan problemas con el servidor.
Instala software antivirus, cortafuegos y todos los parches y actualizaciones recomendados. El firewall filtra eficazmente el tráfico al servidor MySQL. Para mayor seguridad, también puedes implementar el bloqueo de entrada.
Desactiva todos los servicios innecesarios, cuantos menos servicios, mejor.
2.2 Proteger todas las cuentas y contraseñas
Una de las formas más comunes en que los atacantes comprometen las bases de datos MySQL es robando información de la cuenta que representa un riesgo para la seguridad. Para reducir la posibilidad de este riesgo, es posible que desee probar lo siguiente:
2.2.1 Establecer contraseñas para todas las cuentas MySQL
Los programas cliente no siempre reconocen a los usuarios, por lo que si. un usuario conoce el nombre de la base de datos pero no tiene la contraseña para ese nombre de usuario, puede especificar cualquier otro nombre de usuario para conectarse a la base de datos MySQL. Establecer una contraseña para cada nombre de usuario de MySQL dificultará el establecimiento de conexiones utilizando cuentas anónimas.
2.2.2. No utilice root para ejecutar el servidor MySQL
Cuando instala MySQL, se crea un usuario administrativo llamado "root" por defecto. Todo el mundo lo sabe, por lo que los atacantes a menudo intentarán hackear a ese usuario "root" para obtener acceso. Para proteger la seguridad de esta importante cuenta, deberá cambiarle el nombre y cambiar una contraseña larga y compleja.
2.2.3 Puede usar el comando mysql> RENAME USER root TO new_username;
en la consola MySQL para cambiar el nombre del usuario root, use el comando mysql> SET PASSWORD FOR 'nombre de usuario. '@' %hostname' =
PASSWORD('newpassword');//este es un comando importante
comando para cambiar la contraseña.
III.Reducir cuentas de administrador
Cuantas más cuentas de administrador, mayor es el riesgo, por lo que se debe reducir al máximo el número de cuentas y sólo crear cuentas para aquellas que realmente necesiten. a ellos. Además, recuerde eliminar las cuentas anónimas que no utilice. Si tiene muchas cuentas de administrador, deberá comprobar y limpiar periódicamente las que sean innecesarias.
4. Reforzar todas las contraseñas
Además de la cuenta de administrador, también es necesario reforzar las contraseñas de todos los demás usuarios. Puede revisar todos los nombres de usuario y contraseñas y restablecer las contraseñas de cuentas débiles si es necesario. Esto puede llevar un poco de tiempo, pero es necesario.
V Limitar los permisos de la base de datos
A cada usuario se le deben otorgar los permisos adecuados para que la base de datos funcione correctamente, pero esto también aumentará el riesgo de seguridad de la base de datos. En cuanto a los permisos de la base de datos, tenemos las siguientes recomendaciones:
5.1. No otorgar permisos de archivos/avanzados/programas a usuarios que no sean administradores
No se deben otorgar permisos de archivos, avanzados y de programas. abusado. Los permisos de archivos permiten a los usuarios escribir archivos en cualquier lugar del sistema de archivos, mientras que los permisos de programas permiten a los usuarios ver la actividad del servidor, finalizar conexiones de clientes e incluso cambiar las operaciones del servidor en cualquier momento. Para garantizar la seguridad de la base de datos, estos permisos solo se pueden otorgar a cuentas de administrador.
5.2. Limitar o desactivar el permiso "Mostrar base de datos"
El permiso "Mostrar base de datos" se puede utilizar para recopilar información de la base de datos, por lo que los atacantes suelen utilizarlo para robar datos y prepararse más. ataques. Debes otorgar este permiso a los usuarios que realmente lo necesitan, o deshabilitarlo por completo.
Simplemente puedes agregar skip-show-database en el archivo de configuración /etc/my.cnf de tu base de datos MySQL. Para los sistemas operativos Windows,
es necesario agregarlo al archivo my.ini.
5.3. Limitar permisos a administradores y al resto de usuarios
Es muy importante no conceder todos los permisos en una misma cuenta, ni siquiera a administradores. Por lo tanto, le recomendamos que reduzca los permisos de la cuenta de administrador para acceder a los datos. En cuanto al resto de usuarios, será mejor que compruebes todos los permisos que tienen para asegurarte de que todo es apropiado.
6. Eliminar componentes riesgosos
Hay algunos componentes innecesarios en la configuración predeterminada de la base de datos MySQL. Puede considerar las siguientes sugerencias:
6.1. Comando LOAD DATA LOCAL INFILE
Este comando permite a los usuarios leer archivos locales e incluso acceder a archivos en otros sistemas operativos, lo que puede ayudar a los atacantes a recopilar información importante y explotar las vulnerabilidades de las aplicaciones para comprometer su base de datos. Para deshabilitar este comando, debe insertar set-variable=local-infile=0 en el archivo my.cnf de su base de datos MySQL.
6.2. Eliminación de la base de datos de prueba
Existe una base de datos de "prueba" predeterminada que se utiliza con fines de prueba. Debido a que esta base de datos es un riesgo para la seguridad y pueden acceder a ella usuarios anónimos, se debe eliminar lo antes posible usando el comando mysql>DROP base de datos;
6.3. Eliminar el archivo de historial
El servidor MySQL tiene un archivo de historial que puede ayudarle a descubrir la causa de los errores de instalación. Los archivos de historial contienen información confidencial, como contraseñas. Si un atacante obtiene esta información, supondrá enormes riesgos de seguridad para su base de datos. Después de una instalación exitosa, el archivo de historial ya no es útil, por lo que puede eliminar el contenido del archivo usando el comando cat /dev/null >
~/.mysql_history.
VII Restringir el acceso remoto al servidor MySQL
Para la mayoría de los usuarios, no es necesario acceder al servidor MySQL a través de una red abierta no segura. Puede restringir los hosts configurando firewalls o hardware, o forzando a MySQL a escuchar solo al host local. Además, el acceso remoto requiere un canal SSH.
8. Si desea restringir a los usuarios para que establezcan conexiones solo desde localhost, debe agregar bind-address=127.0.0.1 al archivo de configuración.
8. Utilizar registros
Habilitar registros le permite detectar actividad en el servidor para analizar intentos fallidos de inicio de sesión y registros de acceso a archivos confidenciales para ver si hay intenciones maliciosas dirigidas al servidor y a la base de datos. . Actividad.
Puede habilitar el registro manualmente simplemente agregando la directiva log = /var/log/mylogfile a su archivo de configuración MySQL.
8.2 Con respecto al registro, hay dos puntos a tener en cuenta:
8.2.1 El registro solo es aplicable a servidores de bases de datos con un número limitado de consultas. Para servidores con grandes cantidades de información, esto puede resultar en una gran sobrecarga.
8.2.2 Dado que el archivo "hostname.err" contiene nombres de tablas de datos confidenciales y contraseñas, sólo "root" y "mysql" tienen permiso para acceder al archivo y registrar registros.