GNU/Linux >> Linux Esercitazione >  >> Linux

Comprensione dell'autenticazione collegabile MySQL

MySQL supporta una serie di meccanismi di autenticazione disponibili tramite l'autenticazione collegabile. MySQL utilizza una serie di algoritmi per crittografare le password memorizzate nella tabella utente:

  • Il plug-in mysql_native_password implementa il formato password standard, un hash largo 41 byte.
  • Il plugin mysql_old_password implementa un vecchio formato meno sicuro, essendo largo 16 byte.
  • Il plug-in sha256_password implementa l'algoritmo di hash SHA-256 ampiamente utilizzato nell'informatica sicura.

Il valore della variabile di sistema old_passwords specifica l'algoritmo di PASSWORD() la funzione utilizza per creare le password, come segue:

  • 0 :L'algoritmo standard, utilizzato da MySQL 4.1.1
  • 1 :Il vecchio algoritmo, utilizzato prima di MySQL 4.1.1
  • 2 :L'algoritmo SHA-256

Avvia il server con il plug-in-autenticazione-predefinita opzione impostata su sha256_password per utilizzare le password SHA-256 per tutti i nuovi utenti o utilizzare CREATE USER con IDENTIFIED WITH sha256_password clausola per specificare le password SHA-256 per un utente specifico.

Plugin di autenticazione con testo in chiaro lato client

Alcuni metodi di autenticazione, come l'autenticazione PAM (Pluggable Authentication Modules), richiedono che il client invii una password in testo normale al server in modo che il server possa elaborare la password nella sua forma normale. La mysql_clear_password plugin abilita questo comportamento.

La libreria client MySQL include un plug-in di autenticazione Cleartext integrato, mysql_clear_password. Il plug-in viene utilizzato per inviare una password di testo normale al server:la password è solitamente sottoposta a hash. Il plugin è abilitato dalla variabile di ambiente LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN e specificando –enable-cleartext-plugin durante l'esecuzione di applicazioni client MySQL come mysql e mysqladmin. L'opzione MYSQL_ENABLE_CLEARTEXT_PLUGIN della funzione API C mysql_options() può essere utilizzata anche per abilitare il plugin.

Plugin di autenticazione caricabili

Oltre ai plug-in predefiniti predefiniti, MySQL fornisce diversi plug-in caricabili:

  • Il plug-in Test Authentication (test_plugin_server ) si autentica utilizzando l'autenticazione con password nativa o precedente ed è destinato a scopi di test e sviluppo.
  • Il plug-in Socket Peer-Credential (auth_socket) consente agli utenti di connettersi tramite il file socket UNIX solo se il loro nome utente Linux corrisponde al loro account MySQL.
  • Il plug-in di autenticazione PAM (authentication_pam) è un plug-in Enterprise Edition che consente di accedere utilizzando un meccanismo di autenticazione esterno. MySQL non memorizza la tua password, ma utilizza il meccanismo UNIX PAM (Pluggable Authentication Modules) per trasmettere il nome utente e la password forniti dal client per l'autenticazione da parte del sistema operativo.

Puoi sviluppare i tuoi plugin di autenticazione. Il plug-in Test Authentication è destinato all'uso da parte degli sviluppatori per creare i propri plug-in; il suo codice sorgente è disponibile come parte della distribuzione del codice sorgente di MySQL. Carica un plug-in di autenticazione caricabile avviando il server con il caricamento plug-in opzione dalla riga di comando o nel file my.cnf, come nell'esempio seguente:

[mysqld] 
plugin-load=authentication_pam.so

Plugin di autenticazione PAM

Il plug-in PAM Authentication è un plug-in Enterprise Edition che autentica gli account MySQL rispetto al sistema operativo. PAM definisce i servizi che configurano l'autenticazione. Questi sono archiviati in /etc/pam.d . PAM cerca in /etc/pam.d i servizi che autentica. Ad esempio, per creare un servizio PAM chiamato mysql-pam, crea il file /etc/pam.d/mysql-pam con il seguente contenuto:

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

Oltre all'autenticazione MySQL, PAM si integra con altri metodi di autenticazione tra cui LDAP e Active Directory, quindi puoi utilizzare PAM per autenticare molti servizi (incluso MySQL) su un singolo negozio nella tua rete. Per creare un utente MySQL che esegue il mapping direttamente a un utente del sistema operativo, utilizzare un'istruzione come la seguente:

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

Quando bob accede, MySQL passa il nome utente e la password che riceve dal client a PAM, che esegue l'autenticazione rispetto al sistema operativo. Il cliente deve inviare la password in chiaro. Abilita il plug-in Cleartext Authentication lato client per questo scopo:

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

Per abilitare gli accessi basati su gruppo con il plug-in di autenticazione PAM, crea un account proxy anonimo abilitato per PAM che non corrisponda a nessun utente, ma specifichi una serie di mappature dal gruppo del sistema operativo all'utente MySQL:

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

L'esempio precedente presuppone che tu abbia gruppi del sistema operativo vendite e finanza e utenti MySQL m_sales e m_finance. Devi quindi concedere il privilegio PROXY all'account proxy anonimo, assegnandogli i diritti per accedere come utenti MySQL m_sales e m_finance:

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

Gli utenti che sono membri dei gruppi di vendita e finanza possono ora fornire le credenziali del loro sistema operativo al prompt della riga di comando di mysql, che li registra rispettivamente come utenti MySQL m_sales o m_finance, dando loro tutti i privilegi concessi a tali account. Ad esempio, se Peter è un membro del gruppo di vendita, può accedere come segue:

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)
Guida per principianti alla gestione degli utenti MySQL
Informazioni sui privilegi MySQL


Linux
  1. Installa MariaDB o MySQL su Linux

  2. Passaggi per installare il plug-in di monitoraggio Percona MySQL per Zabbix

  3. Comprendere YAML per Ansible

  4. Capire Linux Desktop?

  5. Backup MySQL 1.1

Comprendere i permessi dei file Linux

Modifica il metodo di autenticazione per l'utente root MySQL in Ubuntu

Anatomia di un file di configurazione di Linux Pluggable Authentication Modules (PAM).

Un'introduzione ai Pluggable Authentication Modules (PAM) in Linux

Come migliorare la sicurezza degli utenti Linux con le impostazioni del modulo di autenticazione pluggable

Comprensione dei processi su Linux