12 mejores prácticas de seguridad MySQL/Mariadb para Linux

12 mejores prácticas de seguridad MySQL/Mariadb para Linux

Mysql es el sistema de base de datos de código abierto más popular del mundo y Mariada (Una bifurcación de MySQL) es el sistema de bases 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 gestión general de la base de datos.

Leer también: Aprenda mysql/mariadb para principiantes - Parte 1

Esto contribuirá al endurecimiento y al impulso de la seguridad general del servidor de 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 destino clave. Un ejemplo común es el forzo bruto de la contraseña de root para la base de datos MySQL.

En esta guía, explicaremos útil Mysql/mariadb Mejores prácticas de seguridad para Linux.

1. Instalación asegurada de MySQL

Este es el primer paso recomendado después de instalar el servidor MySQL, para asegurar el servidor de la base de datos. Este script facilita la mejora de la seguridad de su servidor MySQL pidiéndole que lo haga:

  • Establezca una contraseña para la cuenta raíz, si no la estableció durante la instalación.
  • Deshabilite el inicio de sesión de usuario root remoto eliminando cuentas raíz a las que se puede acceder desde fuera del host local.
  • Eliminar cuentas de usuarios anónimos y base de datos de prueba a la que por defecto pueden acceder a los usuarios, incluso usuarios anónimos.
# mysql_secure_installation 

Después de ejecutarlo, configure la contraseña de root y responda la serie de preguntas ingresando [Si] y presiona [Ingresar].

Instalación asegurada de MySQL

2. El servidor de base de datos de enlace a la dirección de bucleza

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

# vi /etc /mi.CNF [RHEL/CENTOS] # VI/ETC/MYSQL/MY.conf [debian/ubuntu] o # vi/etc/mysql/mysql.confusión.d/mysqld.CNF [Debian/Ubuntu] 

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

enlace de enlace = 127.0.0.1 

3. Deshabilitar el infile local en MySQL

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

Local-Infile = 0 

4. Cambiar el puerto predeterminado de MySQL

El Puerto La variable establece el número de puerto MySQL que se usará para escuchar en las conexiones TCP/ IP. El número de puerto predeterminado es 3306 Pero puedes cambiarlo bajo el [mysqld] Sección como se muestra.

Puerto = 5000 

5. Habilitar el registro de MySQL

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

log =/var/log/mysql.registro 

6. Establezca el permiso apropiado en los archivos MySQL

Asegúrese de tener permisos apropiados establecidos para todos los archivos y directorios de datos de MySQL Server. El /etc/mi.confusión El archivo solo debe ser escritable para root. Esto impide que otros usuarios cambien las configuraciones del servidor de bases de datos.

# chmod 644 /etc /my.CNF 

7. Eliminar el historial de shell mysql

Todos los comandos que ejecuta en MySQL Shell almacenan el cliente MySQL en un archivo de historial: ~/.mysql_history. Esto puede ser peligroso, porque para cualquier cuenta de usuario que creará, todos los nombres de usuario y contraseñas escritas en el shell se registrarán en el archivo de historial.

# cat/dev/null> ~/.mysql_history 

8. No ejecute los comandos mySQL desde la línea de comandos

Como ya sabe, todos los comandos que escribe en el terminal se almacenan en un archivo de historial, dependiendo del shell que esté utilizando (por ejemplo ~/.bash_history para Bash). Un atacante que logra obtener acceso a este archivo de historial puede ver fácilmente cualquier contraseña registrada allí.

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

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

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

# historia 
Verifique el historial de comandos

La forma adecuada de conectar mysql es.

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

9. Definir usuarios de bases de datos específicas de la aplicación

Para cada aplicación que se ejecuta 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 [(ninguno)]> Crear base de datos osclass_db; Mariadb [(ninguno)]> Crear usuario 'osclassdmin'@'localhost' identificado por '[correo electrónico protegido]%!2 '; Mariadb [(ninguno)]> otorgue todos los privilegios en OSCLASS_DB.* A 'osclassdmin'@'localhost'; Mariadb [(ninguno)]> privilegios de descarga; Mariadb [(ninguno)]> Salir 

y recuerde eliminar siempre las cuentas de los usuarios que ya no están administrando ninguna base de datos de aplicaciones en el servidor.

10. Utilice complementos de seguridad y bibliotecas adicionales

MySQL incluye una serie de complementos de seguridad para: autenticar los intentos de los clientes para conectarse al servidor MySQL, validación de contraseña y almacenamiento para obtener información confidencial, todos están disponibles en la versión gratuita.

Puede encontrar más aquí: https: // dev.mysql.com/doc/refman/5.7/EN/Security-Plugins.html

11. Cambiar las contraseñas de MySQL regularmente

Esta es una pieza común de información de información/aplicación/sistema de seguridad del sistema. Con qué frecuencia lo hace dependerá por completo de su política de seguridad interna. Sin embargo, puede evitar que los "fisoteros" puedan haber estado rastreando su actividad durante un largo período de tiempo, a obtener acceso a su servidor MySQL.

Mariadb [(ninguno)]> Usar mysql; Mariadb [(ninguno)]> Actualizar el usuario establecido contraseña = contraseña ('Tu Pasado de Pasas') Donde user = "root" y host =' localhost '; Mariadb [(ninguno)]> Privilegios de descarga; 

12. Actualizar regularmente el paquete de servidor MySQL

Se recomienda actualizar los paquetes MySQL/MARIADB regularmente para mantenerse al día con las actualizaciones de seguridad y las correcciones de errores, desde el repositorio del proveedor. Normalmente los paquetes en los repositorios del sistema operativo predeterminado están desactualizados.

# Actualización de Yum # APT UPDATY 

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

# SystemCTL reiniciar mariadb # rhel/centos # systemctl reiniciar mysql # debian/ubuntu 

Leer también: 15 Consejos útiles de rendimiento y optimización 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 MySQL/Mariadb que falte en la lista anterior.