12 prácticas recomendadas de seguridad de MySQL/MariaDB para Linux

12 prácticas recomendadas de seguridad de MySQL/MariaDB para Linux

MySQL. es el sistema de base de datos de código abierto más popular del mundo y MariaDB. (una bifurcación de MySQL) es el sistema de base de datos de código abierto de más rápido crecimiento en el mundo. Después de instalar el servidor MySQL, es inseguro en su configuración predeterminada y asegurarlo es una de las tareas esenciales en la administración general de bases de datos.

Lea también. Aprenda MySQL/MariaDB para principiantes-Parte 1

Esto contribuirá a fortalecer y aumentar la seguridad general del servidor Linux, ya que los atacantes siempre escanean vulnerabilidades en cualquier parte de un sistema, y ​​las bases de datos han sido en el pasado áreas de objetivo clave. Un ejemplo común es el uso de la fuerza bruta de la contraseña de root para la base de datos MySQL.

En esta guía, explicaremos las prácticas recomendadas de seguridad de MySQL/MariaDB. útiles para Linux.

1. Instalación segura de MySQL

Este es el primer paso recomendado después de instalar el servidor MySQL, para proteger el servidor de la base de datos. Este script facilita la mejora de la seguridad de su servidor MySQL al pedirle que:

  • establezca una contraseña para la cuenta raíz, si no la estableció durante la instalación.
  • deshabilite el inicio de sesión remoto del usuario raíz eliminando las cuentas raíz a las que se puede acceder desde fuera del host local.
  • elimine las cuentas de usuario anónimo y pruebe la base de datos a la que todos los usuarios pueden acceder de forma predeterminada, incluso los usuarios anónimos.

# mysql_secure_installation freestar.config.enabled_slots.push

Después de ejecutarlo, configure la contraseña de root y responda la serie de preguntas ingresando [ Yes/Y. y presione [Enter].

 Instalación segura de MySQL  Instalación segura de MySQL Instalación segura de MySQL

2. Vincular el servidor de la base de datos a la dirección de bucle invertido

Esta configuración restringirá el acceso desde máquinas remotas, le dice al servidor MySQL que solo acepte conexiones desde dentro del host local. Puede configurarlo en el archivo de configuración principal.

# vi/etc/my.cnf [RHEL/CentOS] # vi/etc/mysql/my.conf [Debian/Ubuntu] O # vi/etc/mysql/mysql .conf.d/mysqld.cnf [Debian/Ubuntu]

Agregue la siguiente línea debajo de la sección [mysqld].

bind-address = 127.0.0.1

3. Deshabilitar LOCAL INFILE en MySQL

Como parte del refuerzo de la seguridad, debe deshabilitar local_infile. para evitar el acceso al sistema de archivos subyacente desde MySQL utilizando la siguiente directiva en la sección [mysqld].

local-infile = 0

4. Cambiar el puerto predeterminado de MYSQL

La variable Puerto. establece el número de puerto MySQL que se utilizará para escuchar en las conexiones TCP/IP. El número de puerto predeterminado es 3306. pero puede cambiarlo en la sección [mysqld]. como se muestra.

Port = 5000

5. Habilite el registro de MySQL

Los registros son una de las mejores formas de comprender lo que sucede en un servidor; en caso de cualquier ataque, puede ver fácilmente cualquier actividad relacionada con intrusiones desde los archivos de registro. Puede habilitar el registro de MySQL agregando la siguiente variable en la sección [mysqld].

log =/var/log/mysql.log

6. Establezca el permiso apropiado en los archivos MySQL

Asegúrese de tener los permisos adecuados establecidos para todos los archivos y directorios de datos del servidor mysql. El archivo /etc/my.conf. solo debe poder escribirse en la raíz. Esto impide que otros usuarios cambien las configuraciones del servidor de la base de datos.

# chmod 644/etc/my.cnf

7. Eliminar el historial del shell MySQL

El cliente mysql almacena todos los comandos que ejecuta en el shell MySQL en un archivo histórico: ~/.mysql_history. Esto puede ser peligroso, porque para cualquier cuenta de usuario que cree, todos los nombres de usuario y contraseñas escritos en el shell se registrarán en el archivo de historial.

# cat/dev/null> ~/.mysql_history

8. No ejecute comandos de MySQL desde la línea de comandos

Como ya sabe, todos los comandos que escribe en la terminal se almacenan en un archivo de historial, dependiendo del shell que esté utilizando (por ejemplo, ~/. bash_history. para bash). Un atacante que logre acceder a este archivo histórico puede ver fácilmente las contraseñas registradas allí.

No se recomienda encarecidamente escribir contraseñas en la línea de comandos, algo como esto:

# mysql-u root-ppassword_  Conectar MySQL con contraseña Conectar MySQL con contraseña Conectar MySQL con contraseña

Cuando verifique la última sección del archivo de historial de comandos, verá la contraseña escrita arriba.

# historial  Verificar historial de comandos  Verificar historial de comandos Verificar historial de comandos

La forma adecuada de conectarse a MySQL es.

# mysql-u root-p Ingresar contraseña :

9. Definir usuarios de base de datos específicos de la aplicación

Para cada aplicación que se ejecute en el servidor, solo dé acceso a un usuario que esté a cargo de una base de datos para una aplicación determinada. Por ejemplo, si tiene un sitio de wordpress, cree un usuario específico para la base de datos del sitio de wordpress de la siguiente manera.

# mysql-u root-p MariaDB [(none)]> CREATE DATABASE osclass_db; MariaDB [(none)]> CREAR USUARIO ‘osclassdmin’ @ ‘localhost’ IDENTIFICADO POR ‘[email protected]%! 2’; MariaDB [(ninguno)]> OTORGAR TODOS LOS PRIVILEGIOS EN osclass_db. * TO ‘osclassdmin’ @ ‘localhost’; MariaDB [(ninguno)]> DESCARGAR PRIVILEGIOS; MariaDB [(none)]> salga

y recuerde eliminar siempre las cuentas de usuario que ya no administran ninguna base de datos de aplicaciones en el servidor.

10. Utilice bibliotecas y complementos de seguridad adicionales

MySQL incluye varios complementos de seguridad para: autenticar los intentos de los clientes de conectarse al servidor mysql, validar la contraseña y proteger el almacenamiento de información confidencial, todos disponibles en la versión gratuita .

Puede encontrar más aquí: https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html

11. Cambie las contraseñas de MySQL con regularidad

Este es un consejo de seguridad de información/aplicación/sistema común. La frecuencia con la que lo haga dependerá por completo de su política de seguridad interna. Sin embargo, puede evitar que los “fisgones” que podrían haber estado rastreando su actividad durante un largo período de tiempo obtengan acceso a su servidor mysql.

MariaDB [(none) ]>. USE mysql; MariaDB [(none)]>. ACTUALIZAR user SET password = PASSWORD (‘ YourPassword here. ) WHERE User = ‘root’ AND Host = ‘ localhost ‘; MariaDB [(ninguno)]>. PRIVILEGIOS DE FLUSH;

12. Actualice el paquete del servidor MySQL con regularidad

Se recomienda encarecidamente actualizar los paquetes mysql/mariadb con regularidad para mantenerse al día con las actualizaciones de seguridad y las correcciones de errores del repositorio del proveedor. Normalmente, los paquetes en los repositorios predeterminados del sistema operativo están desactualizados.

# yum update # apt update

Después de realizar cualquier cambio en el servidor mysql/mariadb, siempre reinicie el servicio.

# systemctl restart mariadb # RHEL/CentOS # systemctl restart mysql # Debian/Ubuntu

Lea también. 15 consejos útiles de optimización y ajuste del rendimiento de MySQL/MariaDB

¡Eso es todo! Nos encanta saber de usted a través del formulario de comentarios a continuación. Comparta con nosotros cualquier consejo de seguridad de MySQL/MariaDB que falte en la lista anterior.