Kurz und gut – Episode #05 Genug ist genug: MySQL Failed Login Tracking
Ich werde in Seminaren, Workshops oder in Kundenprojekten in Sachen MySQL immer mal wieder mit Dingen konfrontiert, auf die ich ad hoc keine Antwort habe, bzw. mit denen ich noch keine Erfahrung gesammelt habe.
Das Problem
In dieser Folge geht es um einen Kunden, dessen MySQL DB „gehackt“ wurde. Aufgrund eines relativ einfach gesetzten „root“-Passwortes, ist es einem Angreifer gelungen per „Brute-Force“-Angriff in das System zu gelangen. Die konkrete Frage des Kunden war es, ob man Accounts nach einer bestimmten Anzahl von fehlerhaften Logins automatisch sperren lassen kann.
Die Lösung
Seit MySQL 8.0.19 kann man für einzelne Benutzer das sogentannte „Failed Login Tracking“ aktivieren.
mysql> alter user 'app1' identified by 'geheim' failed_login_attempts 3 password_lock_time 3; Query OK, 0 rows affected (0.01 sec)
Loggt sich der User „app1“ nun dreimal in Folge mit einem falschen Password ein, so wird der Account für 3 Tage gesperrt.
bash-4.4# for try in 1 2 3 do mysql -uapp1 -pbekannt -e"select user()" done ERROR 1045 (28000): Access denied for user 'app1'@'localhost' (using password: YES) ERROR 1045 (28000): Access denied for user 'app1'@'localhost' (using password: YES) ERROR 3955 (HY000): Access denied for user 'app1'@'localhost'. Account is blocked for 3 day(s) (3 day(s) remaining) due to 3 consecutive failed logins.
Ein korrektes Login setzt den „Counter“ dabei immer auf NULL zurück. Darüber hinaus können alle „Counter“ von allen Nutzern zurückgesetzt werden, wenn der Server neu gestartet oder die Berechtigung erneut geladen werden:
mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)
Fazit
Natürlich gibt es noch weitere Möglichkeiten, einen MySQL Server zu schützen. So wäre z. B. auch das „Connection-Control“-Plugin eine Möglichkeit, um „Brute-Force“-Angriffe auszubremsen. Aber danach wurde ja hier nicht gefragt 😉.
Sie haben eine Frage und/oder ein Problem mit MySQL? Sprechen Sie mit uns!
Seminarempfehlung
MYSQL ADMINISTRATION DB-MY-01
Zum SeminarPrincipal Consultant bei ORDIX
Bei Updates im Blog, informieren wir per E-Mail.
Kommentare