Jörg Reinholz: fail2ban blockiert nicht richtig

Beitrag lesen

failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch)\s*$
ganz Einfach ... in der error_log steht "MySQL user "falsch" not found

Eben war es auch noch der Apache. Was denn nun? So kann das nichts werden, Du musst erstmal den Stoff sortieren.

Für MySQL:

Ich zeige mal Konfigurationsabschnitte aus den Dateien.

/var/log/mysql/error.log habe ich benutzt, weil es von logrotate "behandelt" wird.

(sehe in /etc/logrotate.d/mysql-server o.ä. nach)

1.)
/etc/mysql/my.cnf den Abschnitt unter [mysqld] anpassen um das Logging einzuschalten:

#  
# Error log - should be very few entries.  
#  
log_error = /var/log/mysql/error.log  
log-warning = 2

Aktivieren und dabei auf Fehlermeldungen achten:
sudo service mysql restart

2.)
den Abschnitt unter mysqld-auth in /etc/fail2ban/jail.conf anpassen, damit das logfile auch genommen wird:

[mysqld-auth]  
enabled  = false  
filter   = mysqld-auth  
port     = 3306  
logpath  = /var/log/mysql/error.log  

3.)
/etc/fail2ban/filter.d/mysqld-auth.conf PRÜFEN:

failregex = Access denied for user '\w+'@'<HOST>' (to database '[^']*'|\(using password: (YES|NO)\))*\s*$

4). test:

~> sudo service mysql restart  
~> mysql -u gibtsnicht -p mysql  
~> tail -n10 /var/log/mysql/error.log

Steht da (auch) etwas wie:
140109 19:49:02 [Warning] Access denied for user 'gibtsnicht'@'localhost' (using password: YES)
?

5.) Dann Feuer:
sudo service fail2ban restart

Nach dem 6. gescheitertem Einlogversuch in MySQL von außen(!), also von einem anderen (ggf. virtuellem) Rechner egal ob mit Passwort, ohne Passwort oder mit falschem Benutzername macht fail2ban den Port zu:

2014-01-09 20:22:48,971 fail2ban.actions: WARNING [mysqld-auth] Ban 192.168.1.52
(in /var/log/fail2ban.log)

Auf dem Rechner sieht man in der Konsole als Meldung des MySQL-Clients dann nur das hier:

ERROR 2003 (HY00): Can't connect to MySQL Server on '192.168.1.2' (111)

Geht also.

Jörg Reinholz