6. Servicio MySQL

Configuraciones para servicio de bases de datos MySQL.


Eliminar usuarios anónimos y bases de datos por defecto

  • Desde terminal

mysql_secure_installation

Securizar copias de seguridad

  • Desde terminal

mysqldump -u root -p --all-databases | gzip | openssl enc -aes-256-cbc -e > backup.sql.gz.enc

Mejorar autenticación de usuarios

  • Desde mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';

Aplicar control de permisos sobre bases de datos internas y tablas

  • Desde mysql

REVOKE ALL PRIVILEGES ON *.* FROM 'usuario'@'host';
GRANT SELECT, INSERT ON database_name.* TO 'usuario'@'host';

No permitir conexiones remotas para usuario root

  • Desde mysql

UPDATE mysql.user SET host='localhost' WHERE user='root';
FLUSH PRIVILEGES;

Implementar monitoreo por login fallido

  • Desde mysql

SELECT * FROM mysql.general_log WHERE command_type = 'Connect' AND argument LIKE '%Access denied%';

Limitar tamaño de consultas para evitar sobrecargas al servidor

  • Desde fichero /etc/mysql/my.cnf

[mysqld]
max_allowed_packet = 16M

Configurar cifrado en comunicaciones internas

  • Desde fichero /etc/mysql/my.cnf

[mysqld]
ssl-cipher = DHE-RSA-AES256-SHA:AES128-SHA

Configurar conexiones con seguridad SSL

  • Desde fichero /etc/mysql/my.cnf

[mysqld]
require_secure_transport = ON

Configurar tiempo de espera en conexiones inactivas

  • Desde fichero /etc/mysql/my.cnf

[mysqld]
wait_timeout = 300
interactive_timeout = 300

Limitar conexiones máximas por usuario

  • Desde fichero /etc/mysql/my.cnf

[mysqld]
max_connections = 100
max_user_connections = 10

Configurar logs

  • Desde fichero /etc/mysql/my.cnf

[mysqld]
audit_log_format = JSON
audit_log = /var/log/mysql_audit.log

Limitar acceso sobre archivos de logs y tablas temporales por ingresos no autorizados

  • Desde fichero /etc/mysql/my.cnf

[mysqld]
secure-file-priv = /var/lib/mysql-files

Configurar políticas de expiración de contraseñas

  • Desde fichero /etc/mysql/my.cnf

[mysqld]
default_password_lifetime = 90