GNU/Linux >> Linux Esercitazione >  >> Linux

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

I Pluggable Authentication Modules (PAM) sono in circolazione dal 1997. Mi è stato insegnato che PAM ha avuto origine da Solaris di Sun e sembra che il primo utilizzo e divulgazione aziendale sia avvenuto lì. Tuttavia, secondo un articolo del 1997 che ho trovato, la prima implementazione completa è stata la distribuzione Linux-PAM. L'articolo è ancora disponibile su Linux Journal. La premessa di base e l'implementazione non sono cambiate da allora. Ci sono alcune nuove parole chiave e molti nuovi moduli, ma nel complesso il processo è lo stesso di 20 anni fa.

Come A in PAM indica, PAM riguarda l'autenticazione. Nella maggior parte dei casi, quando si accede a un sistema tramite una console o attraverso la rete con SSH o Cockpit, è coinvolto PAM. Non importa se gli account utente sono conservati localmente o in una posizione centralizzata. Per quanto venga utilizzato, non è comune manipolare direttamente i file di configurazione PAM. Altre utilità lo fanno per te. Molte modifiche vengono apportate durante l'installazione, ad esempio durante l'installazione di sssd RPM o utilizzando ipa-client-install utilità. Le configurazioni aggiuntive più comuni possono essere gestite da authconfig (RHEL7 e precedenti) o authselect (RHEL8), o anche tramite l'interfaccia web Cockpit. La maggior parte degli amministratori non viene a conoscenza dei file di configurazione PAM finché non viene coinvolta in argomenti relativi all'autenticazione avanzata e alla sicurezza.

Cosa guadagniamo con PAM?

PAM separa le attività standard e specializzate di autenticazione dalle applicazioni. Programmi come login , gdm , sshd , ftpd e molti altri vogliono sapere che un utente è quello che dicono di essere, ma ci sono molti modi per farlo. Un utente può fornire un nome utente e una password credenziale che possono essere archiviate localmente o in remoto con LDAP o Kerberos. Un utente può anche fornire un'impronta digitale o un certificato come credenziale. Sarebbe doloroso chiedere a ogni sviluppatore di applicazioni di riscrivere i controlli di autenticazione per ogni nuovo metodo. Una chiamata alle librerie PAM lascia i controlli agli esperti di autenticazione. PAM è collegabile in quanto possiamo fare in modo che applicazioni diverse eseguano test diversi e modulare in quanto possiamo aggiungere nuovi metodi con nuove librerie.

Diamo un'occhiata ai passaggi di alto livello eseguiti quando un utente definito localmente accede a una console basata su testo:

  • L'applicazione di accesso richiede un nome utente e una password, quindi crea un libpam chiamata di autenticazione per chiedere "Questo utente è quello che dicono di essere?" Il pam_unix il modulo è responsabile del controllo dell'autenticazione dell'account locale. Possono essere controllati anche altri moduli e, alla fine, il risultato viene ritrasmesso al processo di accesso.
  • Il processo di accesso successivo chiede "Questo utente è autorizzato a connettersi?", quindi effettua una chiamata all'account a libpam . Il pam_unix il modulo controlla cose come se la password è scaduta. Altri moduli potrebbero controllare gli elenchi di controllo degli accessi basati sull'host o sul tempo. Una risposta generale viene restituita al processo.
  • Se la password è scaduta, l'applicazione risponde. Alcune applicazioni semplicemente non riescono ad accedere all'utente. Il processo di accesso richiede all'utente una nuova password.
  • Per ottenere la password verificata e scritta nella posizione corretta, il processo di accesso effettua una chiamata password a libpam . Il pam_unix il modulo scrive nella shadow locale file. Possono essere chiamati anche altri moduli per verificare la sicurezza della password.
  • Se a questo punto il processo di accesso continua, è pronto per creare la sessione. Una chiamata di sessione a libpam risulta nel pam_unix modulo scrivendo un timestamp di accesso al wtmp file. Altri moduli abilitano l'autenticazione X11 o i contesti utente SELinux.
  • Al logout, quando la sessione è chiusa, è possibile effettuare un'altra chiamata di sessione a libpam . Questo è quando il pam_unix il modulo scrive il timestamp di logout nel wtmp file.

Ci sono molti componenti in PAM

Se apporti una modifica all'autenticazione utilizzando un programma come authconfig o authselect e vuoi vedere cosa è cambiato, ecco alcuni dei posti dove guardare:

/usr/lib64/security
Una raccolta di librerie PAM che eseguono vari controlli. La maggior parte di questi moduli ha pagine man per spiegare il caso d'uso e le opzioni disponibili.

/etc/pam.d
Una raccolta di file di configurazione per applicazioni che chiamano libpam . Questi file definiscono quali moduli vengono controllati, con quali opzioni, in quale ordine e come gestire il risultato. Questi file possono essere aggiunti al sistema durante l'installazione di un'applicazione e vengono frequentemente modificati da altre utilità.

Poiché ci sono diversi controlli eseguiti da tutte le applicazioni, questi file possono anche includere istruzioni per chiamare altri file di configurazione in questa directory. La maggior parte dei moduli condivisi si trova in system-auth file per l'autenticazione locale e password-auth file per applicazioni in ascolto di connessioni remote.

/etc/security
Una raccolta di file di configurazione aggiuntivi per moduli specifici. Alcuni moduli, come pam_access e pam_time , consentire ulteriore granularità per i controlli. Quando un file di configurazione dell'applicazione richiama questi moduli, i controlli vengono completati utilizzando le informazioni aggiuntive dai relativi file di configurazione supplementari corrispondenti. Altri moduli, come pam_pwquality , facilita la modifica della configurazione da parte di altre utilità inserendo tutte le opzioni in un file separato anziché nella riga del modulo nel file di configurazione dell'applicazione.

/var/log/secure
La maggior parte degli errori di sicurezza e autenticazione vengono segnalati in questo file di registro. Le autorizzazioni sono configurate su questo file per limitare l'accesso.

man pam
Questa pagina man descrive il processo generale, inclusi i tipi di chiamate e un elenco di file coinvolti.

man pam.conf
Questa pagina man descrive il formato generale e definisce parole chiave e campi per pam.d file di configurazione.

man -k pam_
Questa ricerca di pagine man elenca le pagine disponibili per i moduli installati.

Concludi

PAM consente un ambiente di autenticazione molto più robusto di quello che potrebbero fornire i servizi per applicazione. È in Linux da molti, molti anni ed è coinvolto in quasi tutti i processi di identificazione degli utenti.

Nel prossimo articolo, analizzerò il formato del /etc/pam.d file di configurazione.

[ Corso online gratuito:panoramica tecnica di Red Hat Enterprise Linux. ]


Linux
  1. Che cos'è un utente Linux?

  2. Introduzione a Nmap su Kali Linux

  3. Un'introduzione al monitoraggio dell'account utente Linux

  4. Comando su Linux

  5. Come limitare l'accesso a un solo utente tramite PAM in Linux

Come scoprire se un utente utilizza l'autenticazione SSH basata su password o basata su chiave in Linux

su Comando in Linux

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

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

Autenticazione PAM

Come cambiare utente su Linux