Frage Protokollieren Sie MySQL-Anmeldeversuche


Von Zeit zu Zeit gibt es fehlgeschlagene Anmeldeversuche in unserem MySQL-Produktionsserver (das MySQL-Dashboard warnt uns). Gibt es eine Möglichkeit, jeden einzelnen Erfolg und eine fehlgeschlagene Anmeldung am MySQL-Server ohne Aktivierung zu protokollieren? general_log?

Wir denken general_log ist keine Option, da es sich um einen Produktionsserver mit hoher Auslastung handelt.


23
2017-09-14 17:44


Ursprung


Erwägen Sie die Verwendung des MariaDB Audit-Plugins mariadb.com/resources/blog/...  mariadb.com/kb/en/mariadb/about-the-mariadb-audit-plugin - Mersh


Antworten:


nur um den neugierigen zu informieren: graben Sie in Ihrem Fehlerprotokoll und presto!

(1). bearbeite meine.cnf (Einstellungsdokumentation gefunden Hier)

[mysqld]

: # Geben Sie einen Namen für die Fehlerprotokolldatei ein. Andernfalls wird ein Standardname verwendet.

log_error = / var / log / mysql / fehler

: #defaults auf 1. Wenn der Wert> 1 ist, werden abgebrochene Verbindungen und Zugriffsverweigerungsfehler für neue Verbindungsversuche in das Fehlerprotokoll geschrieben

log_warnings = 2

...

(2). bei Befehlsausführung

$ sudo cat /var/log/mysql/error.err | egrep '[aA] Zugriff verweigert'

(3). und du hast es!

(4). Wenn Sie den Benutzer einschränken müssen (DOS-Angriff oder MySQL-Benutzerpasswort-Wiederherstellungsversuch in einer Mehrbenutzerdatenbank), dann (http://dev.mysql.com/doc/refman/5.5/en/user-resources.html)

mysql> GRANT NUTZEN ON *. * TO 'Angreifer' @ 'localhost' MIT MAX_CONNECTIONS_PER_HOUR 100;

Beschränkung auf nur 100 Wiederherstellungsversuche pro Stunde.


17
2017-12-06 09:34





Ich denke, dass das allgemeine Protokoll alle Login-Versuche (Erfolg und Misserfolg) unter vielen anderen Dingen protokollieren kann. Das Hauptproblem ist, dass das allgemeine Protokoll die Leistung Ihrer Datenbank beeinflusst. Sie können das allgemeine Protokoll mit der Abfrage aktivieren

SET GLOBAL general_log = 'on'

für neuere Versionen von MySQL.


2
2018-05-06 18:52



Dies ist temporär oder permanent? Wenn es temporär ist, bedeutet das, dass ich modifizieren muss /etc/mysql/my.cnf von mysql? - DarckBlezzer
Es ist vorübergehend. Dieser Ansatz kann funktionieren, oder Sie können hinzufügen --general-log zu den Flags, wenn Sie MySQL starten. - rmc00


Hi ich glaube nicht, dass es möglich ist.

Ab mysql 5.1.29 - Sie können Speicheroption (Tabelle oder Datei) und Speicherort angeben und welches Protokoll Sie wollen - Fehler, allgemeine, binäre oder langsame Abfrage. Soweit ich weiß - Sie können nicht das Format des Protokolls angeben oder was protokolliert wird. Ich könnte falsch liegen - aber ich denke, dass alle Login-Versuche im allgemeinen Protokoll protokolliert werden, und nicht der Fehler.

Angenommen, Ihr mysql-Server läuft auf einem separaten Rechner, von Ihrem Anwendungsserver, und Sie müssen den Port 3306 (oder was auch immer) öffnen, und Sie können ssh tunnel nicht verwenden, Ihr mysql-Server sollte dennoch von niemandem erreichbar sein. Nilly. Ich empfehle dringend, es nicht dem Web-Verkehr auszusetzen, und wenn Sie müssen (wie im Falle der Wohnsitz irgendwo nicht hinter Ihrer Firewall) binden Sie es an die IP-Adresse oder IP-Block Ihres Anwendungsservers und Ihre Admin-Zugang IP (wo Sie sind Zugriff von)

Hoffentlich hilft das.


1
2018-03-17 16:15





Wenn der betreffende Server keine externen Verbindungen wie konfiguriert haben sollte, würde ich mich über eine Art Angriff auf Ihren App-Server sorgen, es sei denn, die fehlgeschlagenen Anmeldungen werden von neuen Anwendungen übernommen, bevor der Benutzer / Ausweis konfiguriert wurde.

Wenn der Server irgendwie externen Verbindungen auf 3306 ausgesetzt ist, wenn dies nicht beabsichtigt und erforderlich ist, würde ich die Konfiguration wie Nick sagte, und auch mit iptables den Datenverkehr von nur Ihren App-Servern auf 3306 beschränken.


0
2018-05-12 00:57



MySQL verweigert automatisch Verbindungen von IP-Adressen, die in mysql.user nicht mindestens eine übereinstimmende Zeile enthalten - David M


Beim http://www.mysqlperformanceblog.com/2008/11/07/poormans-query-logging/ zeigt der Autor eine Methode zum Erfassen der Pakete mit tcpdump und Filtern der Ausgabe basierend auf der Zeichenfolge.

Dies wirkt sich auf Ihre Bedenken bezüglich des general_log und der Leistung aus, obwohl tcpdump möglicherweise eine geringfügige Leistungseinbuße erleidet. Diese Lösung protokolliert auch weniger Daten als das allgemeine Abfrageprotokoll.

Ich habe das selbst nicht benutzt, aber es klingt sehr nützlich.


0
2018-05-14 22:51



Klingt gut, aber der Link funktioniert nicht für mich. - CarlosH
Der Link funktioniert heute Morgen mit Firefox. mysqlperformanceblog.com/2008/11/07/poormans-query-logging - Stefan Lasiewski
Und ich wäre daran interessiert, Ihre Erfahrung damit zu hören. - Stefan Lasiewski