Amigos, en este post explicaré como prevenir ataques de fuerza bruta en MariaDB y/o Mysql, al igual que en el post anterior utilizaré la herramienta fail2ban.
Esta configuración puede resultar muy útil cuando se habilita el acceso remoto a MariaDB o MySQL.
Cómo habilitar el acceso remoto a MariaDB o MySQL
Para habilitar el acceso remoto se debe modificar el valor de » bind-address » en el archivo de configuración de MariaDB:
# nano /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
Para aplicar los cambios es necesario reiniciar el servicio de MariaDB:
# /etc/init.d/mysql restart
Para habilitar el acceso remoto a un usuario específico, hay que entrar a la consola de administración de MariaDB o Mysql y ejecutar las siguientes instrucciones:
# mysql –u root -p
GRANT ALL PRIVILEGES ON *.* TO remoto@'%' IDENTIFIED BY 'p4ssw0rd'; FLUSH PRIVILEGES;
Con estos pasos tendremos habilitado el acceso remoto para un usuario de MariaDB o Mysql
Instalación de Fail2ban
En un post anterior escribí acerca de la instalación de Fail2ban, los pasos de instalación se pueden ver en el siguiente enlace: https://guidocutipa.blog.bo/sistema-deteccion-de-intrusos-fail2ban/
Fail2ban para MariaDB
Ahora vamos a configurar un Jail (un jail es una regla de penalización del host atacante) :
# nano /etc/fail2ban/jail.d/mysql.conf
[mysqld-auth]
enabled = true
filter = mysqld-auth
port = 3306
logpath = /var/log/mysql/error.log
maxretry = 3
bantime = 600
Esta configuración aplicará los filtros de fail2ban para MariaDB/Mysql en el puerto 3306, monitoreará el archivo /var/log/mysql/error.log, permitirá un máximo de tres intentos fallidos y bloqueará el IP atacante por 600 segundos.
Para aplicar los cambios será necesario reiniciar el servicio:
# systemctl restart fail2ban
Prueba de validación
Para probar la nueva configuración, desde un equipo diferente, intentaremos conectarnos al servidor MariaDB/Mysql con el usuario de base de datos creado anteriormente:
# mysql -h 192.168.1.201 -u remoto -p
Si todo sale bien se mostrará un mensaje similar a este:
El siguiente paso será intentar conectarnos al servidor con el mismo usuario, pero con un password erróneo:
Como se puede ver en la anterior imagen, después del tercer intento el mensaje de error devuelto por el servidor es diferente.
En el servidor podemos verificar que resultado se obtiene en fail2ban:
# fail2ban-client -i
fail2ban> status
fail2ban> status mysqld-aut