GNU/Linux >> Linux Esercitazione >  >> Linux

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

In un articolo precedente, ho descritto il flusso di un'applicazione che chiama le librerie PAM per l'autenticazione a un livello molto alto. In questo articolo, analizzeremo i file di configurazione per un sudo locale comando.

Quando si utilizza sudo , cambiamo utente e facciamo qualcosa. Questo cambio di privilegio richiede la verifica che siamo chi diciamo di essere e siamo autorizzati a eseguire l'azione data. Il /etc/sudoers il file controlla chi può fare cosa, ma il processo chiama comunque PAM per eventuali controlli di autenticazione. Come parte di queste chiamate, il processo si identifica e quindi libpam cerca un file di configurazione corrispondente in /etc/pam.d directory.

$ cat /etc/pam.d/sudo
#%PAM-1.0
#Type       ReturnCode   Modules       Options
auth       include      system-auth
account    include      system-auth
password   include      system-auth
session    optional     pam_keyinit.so revoke
session    required     pam_limits.so
session    include      system-auth

Come molte altre directory *.d, la gestione dei pacchetti può aggiungere o rimuovere un file da questa directory. Il sudo RPM aggiunge il /etc/pam.d/sudo file.

$ rpm -qf /etc/pam.d/sudo
sudo-1.9.0-0.1.b4.fc31.x86_64

Una versione upstream potrebbe avere una varietà di voci, ma questo pacchetto fornito dalla distribuzione include un file di configurazione che ha diversi include istruzioni al comune /etc/pam.d/system-auth file fornito da pam pacchetto.

Campi del file di configurazione

Il primo campo di questo file identifica un Tipo di chiamata effettuata verso PAM. Le righe dello stesso tipo sono raggruppate. Esistono quattro tipi:autenticazione, account, password e sessione. Guarda man pam per una descrizione di ogni tipo.

Il secondo campo è noto come ReturnCode . Questo campo consente a PAM di sapere come gestire i risultati del test del modulo. I codici di ritorno indicano se un test è obbligatorio o facoltativo. I codici possono anche essere usati per indicare che la riga non è un test del modulo con opzioni ma piuttosto il nome di un altro file di configurazione con controlli aggiuntivi. Una descrizione completa dei codici di ritorno si trova in man pam.conf e quelli più comuni sono discussi più avanti in questo articolo.

Il resto della riga contiene il nome del modulo e le opzioni per quel modulo. Il nome del modulo deve corrispondere a un modulo disponibile in /etc/lib64/security directory. Le opzioni possono variare a seconda del tipo di chiamata effettuata. Alcuni moduli eseguono test solo per alcuni tipi di chiamate. Usa la pagina man di ogni modulo per vedere esempi e conoscere gli usi e le opzioni disponibili.

L'ordine delle voci all'interno di un tipo di chiamata è importante. Ciò è dovuto principalmente al modo in cui vengono elaborati i codici di ritorno, ma in alcuni casi a un'azione del modulo. Quando libpam riceve un messaggio "fatto" o "morire", riporta il risultato complessivo al processo di chiamata.

La configurazione per sudo ha diversi include Linee. Queste righe dicono a libpam per includere tutte le righe di un determinato tipo dal file di configurazione specificato. C'è anche un sottostack opzione, che è simile nel modo in cui include le righe da un determinato file di configurazione, ma su un "fatto" o "morire", riporta al sottostack istruzione invece del processo originale che chiama libpam . Le versioni precedenti di PAM avevano altre variazioni su come venivano inclusi altri file di configurazione. Ad esempio, quando ho iniziato a esplorare PAM quasi 20 anni fa, c'era un modulo specifico chiamato con i file di configurazione come argomento. La parola chiave "include" non era valida per il Codice di ritorno campo.

Codici di ritorno nei file di configurazione centrale

Il /etc/pam.d/sudo il file mostrato in precedenza è piuttosto breve. Tre dei quattro tipi di chiamata hanno solo un include di un altro file. Il /etc/pam.d/system-auth è più tipico di un file di configurazione, con molti controlli per ogni tipo di chiamata.

$ cat /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        sufficient    pam_sss.so forward_pass
auth        required      pam_deny.so
...omitted...

Il richiesto la parola chiave è forse la più comune. Indica che il modulo deve superare il controllo per restituire un pass complessivo all'applicazione. Tuttavia, anche in caso di errore, le seguenti righe di quel tipo verranno comunque controllate. Questa è una pratica di lunga data di non condividere alcun motivo per un errore di autenticazione. Sui sistemi di 20 anni fa, sarebbe stato possibile indovinare come l'autenticazione non è riuscita in base al tempo impiegato per fallire.

Il requisito la parola chiave è simile a richiesto in quanto il controllo deve passare, ma in caso di fallimento restituisce un messaggio di "morire". Requisito consente libpam sapere che le seguenti righe non verranno controllate e informare il processo di chiamata dei risultati complessivi, in questo caso un errore.

Il sufficiente parola chiave è quasi l'opposto di requisito . In caso di successo, viene restituito un messaggio "done" e libpam va avanti e invia i risultati complessivi all'applicazione chiamante. Gli altri risultati di questo modulo vengono ignorati e il controllo continua.

Il sufficiente parola chiave è comune quando potrebbero esserci più modi per verificare un criterio. Ad esempio, durante la verifica di una password, l'utente potrebbe essere definito nel /etc/passwd locale e /etc/shadow file, oppure potrebbero essere definiti solo in un sistema centrale a cui si accede con sssd . Il pam_unix modulo controlla i file locali. Se c'è successo, non c'è bisogno di continuare e controllare i servizi centralizzati. Tuttavia, se l'utente non è definito localmente, non vogliamo registrare un errore, vogliamo ignorare il risultato e provare il pam_sss modulo. Dal momento che il sufficiente la parola chiave non fallisce mai veramente, è comune aggiungere un pam_deny richiesto riga dopo una serie di sufficienti Linee. Il pam_deny il modulo fallisce sempre in modo molto simile a /bin/false eseguibile.

Il opzionale la parola chiave è simile a sufficiente in quanto ignora eventuali fallimenti. Tuttavia, in caso di successo, si comporta più come il richiesto parola chiave impostando un valore "ok" e continuando a eseguire eventuali controlli aggiuntivi.

Poiché entrambi i requisiti e sufficiente possono essere punti di uscita dalla pila di moduli, l'ordine nel file di configurazione è importante. Le righe dopo quelle parole chiave possono essere eseguite o meno.

Codici di reso complessi

Oltre alla semplice sintassi delle parole chiave, i codici di ritorno complessi sono definiti con coppie chiave-valore all'interno di parentesi quadre. Il /etc/pam.d/system-auth il file ha un esempio nella sezione della sessione della sintassi più complessa.

$ cat /etc/pam.d/system-auth
...omitted...
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

Puoi trovare la sintassi complessa che corrisponde a ciascuna parola chiave nel pam.conf pagina man. Il - mostrato sopra è anche definito nella pagina man. Indica che la registrazione può essere saltata se il modulo non è installato sul sistema.

Cosa c'è dopo?

Ora che possiamo esaminare quando si verifica una chiamata e un'uscita con libpam , il passaggio successivo consiste nel comprendere meglio il caso d'uso per ciascun modulo. La maggior parte dei moduli ha una pagina man che spiega l'uso e mostra esempi di righe che dovrebbero apparire nel pam.d file di configurazione. Alcuni dei moduli fanno anche riferimento a file supplementari in /etc/security directory. Quei file sono ben commentati e spesso hanno anche la loro pagina man. Il pam_pwquality e pam_limits i moduli sono buoni esempi con cui iniziare.

Concludi

Nel prossimo articolo, illustrerò alcune delle modifiche apportate utilizzando authconfig utilità. Se vuoi passare direttamente alla modifica dei file e disponi di un abbonamento Red Hat Learning, dai un'occhiata al capitolo su PAM nel corso Red Hat Security:Linux in Physical, Virtual, and Cloud (RH415).

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


Linux
  1. Linux:tutto è un file?

  2. Guida per principianti alla configurazione del modulo del kernel in Linux

  3. Comprensione del file di configurazione /etc/profile in Linux

  4. Come salvare o esportare una configurazione del kernel Linux personalizzata?

  5. Posizione non predefinita per il file di configurazione ssh in Linux

Meno comandi in Linux

Comando Gzip in Linux

Comando Gunzip in Linux

Comando Stat in Linux

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

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