Es ist Jahresende, ist Ihr MySQL-Passwort sicher?

Es ist Jahresende, ist Ihr MySQL-Passwort sicher?

Vorwort:

Das Jahr neigt sich dem Ende zu. Ist es nicht an der Zeit, Ihre Datenbank zu überprüfen? Bei den Überprüfungen geht es im Allgemeinen um Aspekte der Kennwortsicherheit, wie etwa die Einstellungen zur Kennwortkomplexität und ob diese regelmäßig geändert werden. Insbesondere bei der Durchführung von Sicherheitsbewertungen verlangt die Bewertungsstelle eine kryptografische Sicherheitsstrategie. Tatsächlich kann das MySQL-System selbst die Kennwortkomplexität und Richtlinien zum automatischen Ablauf festlegen, es wird jedoch möglicherweise selten verwendet und die meisten Studenten verstehen es nicht im Detail. In diesem Artikel erfahren Sie, wie Sie die Kennwortkomplexität und die Richtlinie zum automatischen Ablauf des Datenbankkontos festlegen.

1. Richtlinieneinstellungen für die Kennwortkomplexität

Das MySQL-System verfügt über ein Plugin „validate_password“, mit dem die Kennwortstärke überprüft werden kann. Kennwörter, die die angegebene Stärke nicht erfüllen, dürfen nicht festgelegt werden. MySQL 5.7 und 8.0 scheinen dieses Plug-In nicht standardmäßig zu aktivieren, was uns erlaubt, Passwörter nach Belieben festzulegen, wie etwa 123, 123456 usw. Wenn wir die Passwortstärke von der Wurzel aus regulieren möchten, können wir dieses Plug-In aktivieren. Sehen wir uns an, wie man die Passwortkomplexitätsrichtlinie über dieses Plug-In einstellt.

1) Überprüfen Sie, ob dieses Plugin installiert ist

Geben Sie die MySQL-Befehlszeile ein und verwenden Sie „show plugins“ oder überprüfen Sie die mit „validate_password“ verbundenen Parameter, um festzustellen, ob dieses Plug-In installiert wurde. Wenn kein relevanter Parameter vorhanden ist, bedeutet dies, dass dieses Plug-In nicht installiert ist

# Vor der Installation prüfen. Wenn es leer ist, bedeutet dies, dass dieses Plug-In nicht installiert ist.mysql> Variablen wie „validate%“ anzeigen;
Leerer Satz (0,00 Sek.)

2) Installieren Sie das Plugin validate_password

# Dieses Plugin kann mit dem Befehl INSTALL PLUGIN installiert werden. # Das Dateinamensuffix ist für jede Plattform unterschiedlich. Für Unix und Unix-ähnliche Systeme ist es .so und für Windows .dll
mysql> PLUGIN INSTALLIEREN validate_password SONAME 'validate_password.so';
Abfrage OK, 0 Zeilen betroffen, 1 Warnung (0,28 Sek.)

# Mit „validate_password“ verbundene Parameter anzeigenmysql> Variablen wie „validate%“ anzeigen;
+--------------------------------------+--------+
| Variablenname | Wert |
+--------------------------------------+--------+
| validate_password_check_user_name | EIN |
| Passwortwörterbuchdatei validieren | |
| Passwortlänge validieren | 8 |
| Anzahl der Passworteinträge in gemischter Groß- und Kleinschreibung validieren | 1 |
| Anzahl_der_Passwort_validierungsnummern | 1 |
| Passwortrichtlinie validieren | MITTEL |
| Anzahl der Sonderzeichen für Passwortvalidierung | 1 |
+--------------------------------------+--------+
7 Zeilen im Satz (0,00 Sek.)

3) Erläuterung der Parameter zur Passwortstärke

Nach der Installation des Plugins validate_password werden einige zusätzliche Parameter zur Kennwortstärke hinzugefügt. Diese Parameter sind anhand ihrer wörtlichen Bedeutung leicht zu verstehen. Im Folgenden finden Sie eine kurze Erläuterung einiger wichtiger Parameter.

1. Passwortrichtlinie validieren

Stellt die Kennwortrichtlinie dar. Der Standardwert ist MEDIUM. Die konfigurierbaren Werte sind wie folgt:

  • 0 oder LOW muss nur der Passwortlänge entsprechen (angegeben durch den Parameter validate_password_length)
  • 1 oder MEDIUM erfüllt die LOW-Strategie und muss mindestens eine Zahl, einen Kleinbuchstaben, einen Großbuchstaben und ein Sonderzeichen enthalten.
  • 2 oder STRONG erfüllt die MEDIUM-Richtlinie und das Kennwort kann nicht in der Wörterbuchdatei vorhanden sein.

2. validiere_Passwort_Wörterbuchdatei

Eine Wörterbuchdatei zum Konfigurieren von Passwörtern. Wenn validate_password_policy auf STRONG gesetzt ist, kann eine Passwortwörterbuchdatei konfiguriert werden. Passwörter in der Wörterbuchdatei dürfen nicht verwendet werden.

3. validiere_Passwortlänge

Wird verwendet, um die Mindestlänge des Passworts festzulegen. Der Standardwert ist 8

4. validate_password_mixed_case_count

Wenn validate_password_policy auf MEDIUM oder STRONG eingestellt ist, die Anzahl der Klein- und Großbuchstaben im Kennwort. Der Standardwert ist 1 und der Mindestwert ist 0; der Standardwert ist, dass mindestens ein Klein- und ein Großbuchstabe vorhanden sein müssen.

5. validate_password_number_count

Wenn validate_password_policy auf MEDIUM oder STRONG eingestellt ist, ist die Mindestanzahl der Ziffern im Passwort 1 und die Mindestanzahl 0.

6. validate_password_special_char_count

Wenn validate_password_policy auf MEDIUM oder STRONG eingestellt ist, ist die Mindestanzahl von Sonderzeichen im Passwort 1 und die Mindestanzahl 0.

4) Spezifische Einstellungen für die Kennwortkomplexitätsrichtlinie

Nachdem wir die oben genannten Parameter kennengelernt haben, können wir die Kennwortkomplexitätsrichtlinie entsprechend unserer eigenen Situation festlegen. Wenn ich beispielsweise möchte, dass das Kennwort mindestens 10 Zeichen lang ist und Groß- und Kleinbuchstaben, Zahlen und Sonderzeichen enthält, kann ich es wie folgt festlegen.

5) Testen Sie die Passwortkomplexität

Die Kennwortkomplexitätsrichtlinie ist erst nach ihrem Inkrafttreten für Vorgänge gültig. Wenn Sie beispielsweise zuvor ein Konto mit dem Kennwort 123 hatten, können Sie das Konto weiterhin verwenden. Wenn Sie das Kennwort jedoch erneut ändern, muss es der Komplexitätsrichtlinie entsprechen. Als Nächstes testen wir die spezifische Auswirkung der Richtlinie zur Kennwortkomplexität.

# Erstellen Sie einen neuen Benutzer und legen Sie das Passwort fest mysql> create user 'testuser'@'%' identified by '123';
FEHLER 1819 (HY000): Ihr Passwort erfüllt nicht die aktuellen Richtlinienanforderungen
mysql> Benutzer ‚Testbenutzer‘@‚%‘ erstellen, identifiziert durch ‚ab123‘;
FEHLER 1819 (HY000): Ihr Passwort erfüllt nicht die aktuellen Richtlinienanforderungen
mysql> Benutzer ‚Testbenutzer‘@‚%‘ erstellen, identifiziert durch ‚Ab@123‘;
FEHLER 1819 (HY000): Ihr Passwort erfüllt nicht die aktuellen Richtlinienanforderungen
mysql> Benutzer ‚Testbenutzer‘@‚%‘ erstellen, identifiziert durch ‚Bsdf@5467672‘;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

# Passwort ändernmysql> alter user 'testuser'@'%' identified by 'dfgf3435';
FEHLER 1819 (HY000): Ihr Passwort erfüllt nicht die aktuellen Richtlinienanforderungen
mysql> Benutzer „Testbenutzer“@„%“ ändern, identifiziert durch „dBsdf@5467672“;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

2. Legen Sie fest, dass das Passwort automatisch abläuft

Zusätzlich zum Festlegen von Richtlinien zur Kennwortkomplexität können wir auch ein automatisches Ablaufen des Kennworts festlegen. Beispielsweise läuft das Kennwort alle 90 Tage ab und muss geändert werden, bevor es erneut verwendet werden kann. Auf diese Weise wird unser Datenbankkonto sicherer. Sehen wir uns an, wie man den automatischen Ablauf von Passwörtern einrichtet.

Legen Sie die Ablaufzeit eines bestimmten Kontokennworts separat fest

Verwenden Sie die Anweisung ALTER USER, um das Kennwort eines einzelnen Kontos ablaufen zu lassen oder den Ablaufzeitpunkt des Kontos zu ändern.

# Überprüfen Sie den Status des Datenbankkontos über die Systemtabelle mysql.usermysql> select user,host,password_expired,password_lifetime,password_last_changed,account_locked from mysql.user;
+------------------+----------+------------------+----------------------+----------------------------------+----------------+
| Benutzer | Host | Passwort abgelaufen | Passwortlebensdauer | Passwort zuletzt geändert | Konto gesperrt |
+------------------+----------+------------------+----------------------+----------------------------------+----------------+
| expuser | % | N | NULL | 05.01.2021 14:30:30 | N |
| Wurzel | % | N | NULL | 30.10.2020 14:45:43 | N |
| Testbenutzer | % | N | NULL | 04.01.2021 17:22:37 | N |
| mysql.infoschema | localhost | N | NULL | 30.10.2020 14:37:09 | Y |
| mysql.session | localhost | N | NULL | 30.10.2020 14:37:09 | Y |
| mysql.sys | localhost | N | NULL | 30.10.2020 14:37:09 | Y |
| root | localhost | N | NULL | 30.10.2020 14:38:55 | N |
+------------------+----------+------------------+----------------------+----------------------------------+----------------+
7 Zeilen im Satz (0,01 Sek.)

# Sorgen Sie dafür, dass das Kennwort des Expuser-Kontos sofort abläuftmysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> wähle Benutzer, Host, Passwort abgelaufen, Passwortlebensdauer, letzte Passwortänderung, Konto gesperrt aus mysql.user;
+------------------+----------+------------------+----------------------+----------------------------------+----------------+
| Benutzer | Host | Passwort abgelaufen | Passwortlebensdauer | Passwort zuletzt geändert | Konto gesperrt |
+------------------+----------+------------------+----------------------+----------------------------------+----------------+
| expuser | % | Y | NULL | 05.01.2021 14:30:30 | N |
| Wurzel | % | N | NULL | 30.10.2020 14:45:43 | N |
| Testbenutzer | % | N | NULL | 04.01.2021 17:22:37 | N |
| mysql.infoschema | localhost | N | NULL | 30.10.2020 14:37:09 | Y |
| mysql.session | localhost | N | NULL | 30.10.2020 14:37:09 | Y |
| mysql.sys | localhost | N | NULL | 30.10.2020 14:37:09 | Y |
| root | localhost | N | NULL | 30.10.2020 14:38:55 | N |
+------------------+----------+------------------+----------------------+----------------------------------+----------------+
7 Zeilen im Satz (0,00 Sek.)

# Ändern Sie das Kontokennwort, sodass es nie abläuft mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE NEVER;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

# Legen Sie das Kennwort für dieses Konto so fest, dass es in 90 Tagen abläuftmysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

mysql> wähle Benutzer, Host, Passwort abgelaufen, Passwortlebensdauer, letzte Passwortänderung, Konto gesperrt aus mysql.user;
+------------------+----------+------------------+----------------------+----------------------------------+----------------+
| Benutzer | Host | Passwort abgelaufen | Passwortlebensdauer | Passwort zuletzt geändert | Konto gesperrt |
+------------------+----------+------------------+----------------------+----------------------------------+----------------+
| Exposeur | % | N | 90 | 05.01.2021 14:41:28 | N |
| Wurzel | % | N | NULL | 30.10.2020 14:45:43 | N |
| Testbenutzer | % | N | NULL | 04.01.2021 17:22:37 | N |
| mysql.infoschema | localhost | N | NULL | 30.10.2020 14:37:09 | Y |
| mysql.session | localhost | N | NULL | 30.10.2020 14:37:09 | Y |
| mysql.sys | localhost | N | NULL | 30.10.2020 14:37:09 | Y |
| root | localhost | N | NULL | 30.10.2020 14:38:55 | N |
+------------------+----------+------------------+----------------------+----------------------------------+----------------+
7 Zeilen im Satz (0,00 Sek.)

# Lassen Sie dieses Konto die globale Standardrichtlinie zum Ablauf von Passwörtern verwenden mysql> ALTER USER 'expuser'@'%' PASSWORD EXPIRE DEFAULT;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

Die Systemtabelle mysql.user zeichnet die relevanten Informationen jedes Kontos auf. Wenn der Wert im Feld password_expired „Y“ ist, bedeutet dies, dass das Kennwort abgelaufen ist. Sie können sich mit einem abgelaufenen Kennwort noch anmelden, aber keine Vorgänge ausführen. Wenn Sie Vorgänge ausführen, wird Ihnen folgende Meldung angezeigt: FEHLER 1820 (HY000): Sie müssen Ihr Kennwort mit der Anweisung ALTER USER zurücksetzen, bevor Sie diese Anweisung ausführen. Sie müssen das Kennwort ändern, bevor Sie normale Vorgänge ausführen können.

Bei einem Konto mit einer bestimmten Ablaufzeit, z. B. 90 Tagen, vergleicht das Datenbanksystem die Differenz zwischen der aktuellen Zeit und der Zeit, zu der das Kennwort zuletzt geändert wurde. Wenn seit der letzten Kennwortänderung mehr als 90 Tage vergangen sind, wird das Kontokennwort als abgelaufen markiert und das Kennwort muss geändert werden, bevor ein Vorgang ausgeführt werden kann.

Festlegen der globalen Ablaufrichtlinie

Um eine globale Richtlinie zum automatischen Ablauf von Passwörtern zu erstellen, verwenden Sie die Systemvariable default_password_lifetime. Vor Version 5.7.11 betrug der Standardwert von default_password_lifetime 360 ​​(das Kennwort muss ungefähr einmal im Jahr geändert werden) und in späteren Versionen beträgt der Standardwert 0, was bedeutet, dass das Kennwort nicht abläuft. Die Einheit dieses Parameters ist Tag. Wir können diesen Parameter beispielsweise auf 90 setzen, was bedeutet, dass die globale Richtlinie für den automatischen Ablauf von Passwörtern 90 Tage beträgt.

# Legen Sie die globale Ablaufrichtlinie fest. Ändern Sie sie zuerst manuell und fügen Sie sie dann der Konfigurationsdatei hinzu. mysql> SET GLOBAL default_password_lifetime = 90;
Abfrage OK, 0 Zeilen betroffen (0,01 Sek.)

mysql> Variablen wie „default_password_lifetime“ anzeigen;
+-----------------------------------------+----------+
| Variablenname | Wert |
+-----------------------------------------+----------+
| Lebensdauer des Standardpassworts | 90 |
+-----------------------------------------+----------+
1 Zeile im Satz (0,00 Sek.)

# Schreiben Sie die Konfigurationsdatei, damit der Neustart wirksam wird [mysqld]
Standardkennwortlebensdauer = 90

Obwohl Sie ein abgelaufenes Kennwort „zurücksetzen“ können, indem Sie es auf seinen aktuellen Wert zurücksetzen, ist es aus politischen Gründen besser, ein anderes Kennwort zu wählen.

Zusammenfassen:

In diesem Artikel werden hauptsächlich zwei Sicherheitsstrategien für Datenbankkennwörter vorgestellt: Kennwortkomplexität und Kennwortablaufstrategie. Je mehr Strategien Sie haben, desto mehr Sicherheit haben Sie. Denken Sie daran: Sicherheit ist keine Kleinigkeit.

Oben finden Sie den ausführlichen Inhalt von „Ist Ihr MySQL-Passwort sicher?“ zum Jahresende. Weitere Informationen zur Sicherheit von MySQL-Passwörtern finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • So fahren Sie MySQL sicher herunter
  • Schnelle und sichere Methode zum Umbenennen einer MySQL-Datenbank (3 Arten)
  • So beenden Sie den MySQL-Prozess ordnungsgemäß und sicher
  • Einige Vorschläge zur Gewährleistung der MySQL-Datensicherheit
  • So fahren Sie eine MySQL-Instanz sicher herunter
  • Details zur MySQL-Sicherheitsverwaltung

<<:  Das Prinzip und die Richtung von JavaScript

>>:  Überblick über die grundlegenden Bestandteile von HTML-Webseiten

Artikel empfehlen

Detaillierte Erklärung der CSS-Stil-Kaskadierungsregeln

Der Syntaxstil der CSS-Stilregel ist die Grundein...

Zusammenfassung der Linux-Benutzergruppen und -Berechtigungen

Benutzergruppen Unter Linux muss jeder Benutzer e...

Bidirektionale verknüpfte Liste der JavaScript-Datenstruktur

Eine einfach verkettete Liste kann nur vom Anfang...

Docker-Volumes-Dateizuordnungsmethode

Hintergrund Wenn Sie am Blockchain-Protokollmodul...

Sie müssen wirklich die Verwendung von CSS-Variablen var() verstehen

Wenn ein Webprojekt immer größer wird, werden sei...

So aktualisieren Sie CentOS7 auf CentOS8 (detaillierte Schritte)

Dieser Artikel erläutert anhand eines konkreten B...

So zeigen Sie Bildinformationen in Docker an

In diesem Artikel müssen wir lernen, wie man Bild...

Zehn wichtige Fragen zum Erlernen der Grundlagen von Javascript

Inhaltsverzeichnis 1. Was ist Javascript? 2. Was ...

Vue verwendet Mixins zur Optimierung von Komponenten

Inhaltsverzeichnis Mixins-Implementierung Zusamme...