GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Grundlegendes zur MySQL Pluggable Authentication

MySQL unterstützt eine Reihe von Authentifizierungsmechanismen, die über Pluggable Authentication verfügbar sind. MySQL verwendet eine Reihe von Algorithmen, um Passwörter zu verschlüsseln, die in der Benutzertabelle gespeichert sind:

  • Das Plugin mysql_native_password implementiert das Standardpasswortformat, einen 41 Byte breiten Hash.
  • Das Plugin mysql_old_password implementiert ein älteres Format, das weniger sicher ist und 16 Byte breit ist.
  • Das sha256_password-Plug-in implementiert den SHA-256-Hashing-Algorithmus, der in der sicheren Datenverarbeitung weit verbreitet ist.

Der Wert der Systemvariablen old_passwords gibt den Algorithmus an, den das PASSWORD() Funktion verwendet, um Passwörter zu erstellen, wie folgt:

  • 0 :Der Standardalgorithmus, wie er seit MySQL 4.1.1 verwendet wird
  • 1 :Der alte Algorithmus, wie er vor MySQL 4.1.1 verwendet wurde
  • 2 :Der SHA-256-Algorithmus

Starten Sie den Server mit dem default-authentication-plugin Option auf sha256_password gesetzt um SHA-256-Passwörter für alle neuen Benutzer zu verwenden, oder verwenden Sie CREATE USER with the IDENTIFIED WITH sha256_password -Klausel zum Angeben von SHA-256-Passwörtern für einen bestimmten Benutzer.

Clientseitiges Klartext-Authentifizierungs-Plugin

Einige Authentifizierungsmethoden, wie z. B. PAM-Authentifizierung (Pluggable Authentication Modules), erfordern, dass der Client ein Klartext-Passwort an den Server sendet, damit der Server das Passwort in seiner normalen Form verarbeiten kann. Das mysql_clear_password Plugin ermöglicht dieses Verhalten.

Die MySQL-Client-Bibliothek enthält ein integriertes Plug-in für die Klartext-Authentifizierung, mysql_clear_password. Das Plugin wird verwendet, um ein Klartext-Passwort an den Server zu senden – Das Passwort ist normalerweise gehasht. Das Plugin wird durch die Umgebungsvariable LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN und die Angabe von –enable-cleartext-plugin aktiviert beim Ausführen von MySQL-Clientanwendungen wie mysql und mysqladmin. Die Option MYSQL_ENABLE_CLEARTEXT_PLUGIN der C-API-Funktion mysql_options() kann auch verwendet werden, um das Plugin zu aktivieren.

Ladbare Authentifizierungs-Plugins

Zusätzlich zu den standardmäßig integrierten Plugins bietet MySQL mehrere ladbare Plugins:

  • Das Plug-in für die Testauthentifizierung (test_plugin_server ) authentifiziert sich mit nativer oder alter Passwortauthentifizierung und ist für Test- und Entwicklungszwecke vorgesehen.
  • Das Plug-in Socket Peer-Credential (auth_socket) ermöglicht es Benutzern, sich nur dann über die UNIX-Socket-Datei zu verbinden, wenn ihr Linux-Benutzername mit ihrem MySQL-Konto übereinstimmt.
  • Das PAM-Authentifizierungs-Plugin (authentication_pam) ist ein Enterprise Edition-Plugin, mit dem Sie sich mit einem externen Authentifizierungsmechanismus anmelden können. MySQL speichert Ihr Passwort nicht, sondern verwendet den UNIX-PAM-Mechanismus (Pluggable Authentication Modules), um den vom Client bereitgestellten Benutzernamen und das Passwort zur Authentifizierung durch das Betriebssystem zu übertragen.

Sie können Ihre eigenen Authentifizierungs-Plugins entwickeln. Das Plug-in Test Authentication ist für die Verwendung durch Entwickler gedacht, um ihre eigenen Plug-ins zu erstellen. sein Quellcode ist als Teil der MySQL-Quellcodedistribution verfügbar. Laden Sie ein ladbares Authentifizierungs-Plugin, indem Sie den Server mit plugin-load starten Option in der Befehlszeile oder in der Datei my.cnf, wie im folgenden Beispiel:

[mysqld] 
plugin-load=authentication_pam.so

PAM-Authentifizierungs-Plugin

Das PAM-Authentifizierungs-Plugin ist ein Enterprise Edition-Plugin, das MySQL-Konten gegenüber dem Betriebssystem authentifiziert. PAM definiert Dienste, die die Authentifizierung konfigurieren. Diese werden in /etc/pam.d gespeichert . PAM sucht in /etc/pam.d nach Diensten, die es authentifiziert. Um beispielsweise einen PAM-Dienst namens mysql-pam zu erstellen, erstellen Sie die Datei /etc/pam.d/mysql-pam mit folgendem Inhalt:

#%PAM-1.0
auth     include  password-auth 
account  include  password-auth

Zusätzlich zur MySQL-Authentifizierung lässt sich PAM in andere Authentifizierungsmethoden integrieren, einschließlich LDAP und Active Directory, sodass Sie PAM verwenden können, um viele Dienste (einschließlich MySQL) für einen einzigen Speicher in Ihrem Netzwerk zu authentifizieren. Um einen MySQL-Benutzer zu erstellen, der direkt einem Betriebssystembenutzer zugeordnet ist, verwenden Sie eine Anweisung wie die folgende:

CREATE USER bob@localhost
IDENTIFIED WITH authentication_pam AS 'mysql-pam';

Wenn sich bob anmeldet, übergibt MySQL den Benutzernamen und das Passwort, die es vom Client erhält, an PAM, das sich gegenüber dem Betriebssystem authentifiziert. Der Client muss das Passwort im Klartext senden. Aktivieren Sie das clientseitige Plug-in für die Klartext-Authentifizierung, um diesen Zweck zu erfüllen:

shell> mysql --enable-cleartext-plugin -ubob -p 
Enter password: bob’s_OS_password

Um gruppenbasierte Anmeldungen mit dem PAM-Authentifizierungs-Plugin zu ermöglichen, erstellen Sie ein PAM-fähiges anonymes Proxy-Konto, das mit keinen Benutzern übereinstimmt, aber eine Reihe von Zuordnungen von der Betriebssystemgruppe zum MySQL-Benutzer angibt:

CREATE USER ''@'' IDENTIFIED WITH authentication_pam AS 'mysql-pam, sales=m_sales, finance=m_finance';

Das vorangehende Beispiel geht davon aus, dass Sie über die Betriebssystemgruppen sales und finance sowie m_sales- und m_finance-MySQL-Benutzer verfügen. Anschließend müssen Sie dem anonymen Proxy-Konto das PROXY-Privileg erteilen und ihm das Recht geben, sich als m_sales- und m_finance-MySQL-Benutzer anzumelden:

GRANT PROXY ON m_sales@localhost TO ''@'';
GRANT PROXY ON m_finance@localhost TO ''@'';

Benutzer, die Mitglieder der Vertriebs- und Finanzgruppen sind, können jetzt ihre Betriebssystem-Anmeldeinformationen an der mysql-Befehlszeileneingabeaufforderung eingeben, die sie als m_sales- bzw. m_finance-MySQL-Benutzer anmeldet und ihnen alle Privilegien gibt, die diesen Konten gewährt werden. Wenn Peter beispielsweise Mitglied der Vertriebsgruppe ist, könnte er sich wie folgt anmelden:

shell> mysql --enable-cleartext-plugin -upeter -p
Enter password: peter’s_OS_password
Welcome to the MySQL monitor. Commands end with ; or \g. 
...
mysql> SELECT CURRENT_USER(); 
+-------------------+
| CURRENT_USER()    | 
+-------------------+
| m_sales@localhost | 
+-------------------+ 
1 row in set (0.01 sec)
Anfängerleitfaden für die MySQL-Benutzerverwaltung
MySQL-Berechtigungen verstehen


Linux
  1. Installieren Sie MariaDB oder MySQL unter Linux

  2. Schritte zum Installieren des Percona MySQL-Überwachungs-Plugins für Zabbix

  3. Schritte zum Installieren des Percona MySQL-Überwachungs-Plugins für Zabbix

  4. Verständnis von MySQL-Berechtigungen

  5. MySQL schlägt fehl bei:mysql ERROR 1524 (HY000):Plugin „auth_socket“ ist nicht geladen

Grundlegendes zu Linux-Dateiberechtigungen

Ändern Sie die Authentifizierungsmethode für den MySQL-Root-Benutzer in Ubuntu

Aufbau einer Linux Pluggable Authentication Modules (PAM) Konfigurationsdatei

Eine Einführung in Pluggable Authentication Modules (PAM) in Linux

So verbessern Sie die Benutzersicherheit von Linux mit Pluggable Authentication Module-Einstellungen

Prozesse unter Linux verstehen