Come funziona e configura PAM in Linux

La sicurezza nella gestione degli utenti in ambienti Linux è essenziale e dobbiamo sempre cercare le migliori opzioni disponibili per questo scopo sia internamente che esternamente.Uno dei metodi più sicuri per aumentare la sicurezza nei sistemi Linux è amministrare in modo molto più efficiente. modalità di autenticazione degli utenti nel sistema, questo consente l'accesso al sistema solo agli utenti in possesso delle credenziali corrette.

Per questo caso abbiamo una funzionalità chiamata Linux-PAM (Pluggable Authentication Modules for Linux - Pluggable Authentication Modules for Linux) che è stata sviluppata come un insieme di librerie con cui sarà possibile per l'amministratore di sistema selezionare il modo in cui le applicazioni autenticare gli utenti sulla rete locale.
Quando si compila un'applicazione compatibile con PAM, siamo in grado di alternare i meccanismi di autenticazione utilizzati.

Per capire un po' meglio questo concetto, possiamo analizzare il modo in cui gli utenti sono attualmente autenticati, prima di tutto l'identità dell'utente viene verificata quando viene inserita la password assegnata all'utente, queste password vengono memorizzate nel file /etc/passwd, quindi il privilegio è definito sotto forma di un identificatore utente personale chiamato UID e l'appartenenza ai gruppi, servizi e applicazioni disponibili è disponibile in base all'identità personale e di gruppo di ciascun utente.

La libreria PAM è configurata localmente nel file di sistema /etc/pam.conf o in una serie di file situati in /etc/pam.d/ in modo da autenticare una richiesta dell'utente tramite i moduli di Autenticazione disponibili solo localmente.

I moduli sono disponibili nella directory /lib/security o /lib64/security. La sintassi del file di configurazione /etc/pam.conf è costituita da un elenco di regole e ogni regola si trova su una singola riga, ma può essere estesa con una riga che termina con "\". I commenti sono preceduti da segni '#' e si estendono fino alla fine successiva della riga selezionata.

Il formato di ogni regola è una raccolta di schede separate da spazi, le prime tre non fanno distinzione tra maiuscole e minuscole in questo modo:

 tipo di servizio controllo modulo-percorso modulo-argomenti
I parametri utilizzati sono:

ServizioÈ il vero nome dell'applicazione.
TipoÈ il tipo di modulo/contesto/interfaccia.
ControlloSi riferisce al comportamento dell'API PAM nel caso in cui il modulo non possa eseguire l'attività di autenticazione
Percorso del moduloÈ il nome del file assoluto o il percorso relativo del PAM.
argomenti-moduloIndica un elenco di token separati da spazi allo scopo di controllare il comportamento del modulo.

La sintassi di ogni file in /etc/pam.d/ è identica ed è composta da righe con la seguente struttura:

 tipo control-flag modulo modulo-argomenti
Ad esempio, una definizione di regola (senza argomenti del modulo) disponibile nel file /etc/pam.d/sshd, che non consente accessi non root quando /etc/nologin è disponibile è:
 account richiesto pam_nologin.so

1. Come gestire i controlli e i gruppi PAM su Linux


Le attività di autenticazione PAM sono catalogate in quattro gruppi di amministrazione separati, ciascuno di questi gruppi gestisce diversi aspetti della richiesta di un utente per un servizio limitato.

Un modulo è associato a uno di questi tipi di gruppi di amministrazione nel modo seguente:

accountQuesto valore offre i servizi per la verifica dell'account con aspetti come la scadenza della password dell'utente o se l'utente è autorizzato ad accedere al servizio richiesto.
autenticazioneCon questo valore un utente viene autenticato e le credenziali utente possono essere configurate.
parola d'ordineConsentono agli utenti di aggiornare le password e sono integrati con i moduli di autenticazione PAM
sessioneHa il compito di gestire le azioni svolte all'inizio e alla fine di una sessione.

I file oggetto PAM si trovano nella seguente directory /lib/security/o /lib64/security a seconda dell'architettura utilizzata.

I flag di controllo supportati in PAM sono:

requisitoCon questo indicatore il guasto restituisce istantaneamente il controllo all'applicazione, indicando la natura del guasto del primo modulo.
necessarioViene indicato che tutti i moduli sono necessari affinché libpam venga eseguito correttamente e restituisca esito positivo all'applicazione
sufficienteQuesto modulo porta ad un immediato e corretto ritorno dell'applicazione, in questo caso il fallimento di questo modulo viene ignorato.
opzionaleIl successo o il fallimento di questo modulo generalmente non viene registrato in questo indicatore

Ci sono altri valori come:

includereInclude tutte le righe del tipo basato sul file di configurazione specifico come argomento per questo controllo.
sottostackInclude tutte le righe del tipo specificato dal file di configurazione specificato come argomento per questo controllo specifico.

2. Come verificare che un programma sia compatibile con PAM in Linux


Per implementare PAM in un'applicazione, deve essere stato scritto e compilato appositamente per utilizzare PAM, per verificare se quell'applicazione è compatibile o meno, ad esempio SSH, eseguiremo quanto segue:
 sudo ldd / usr / sbin / sshd | grep libpam.so

INGRANDIRE

3. Come limitare l'accesso root tramite SSH con PAM su Linux


PAM può essere utilizzato per disabilitare l'accesso dell'utente root a un sistema tramite SSH e programmi di accesso e questo aiuta ad aumentare le opzioni di sicurezza del sistema.

Se vogliamo farlo, useremo il modulo /lib/security/pam_listfile.so che ci dà la possibilità di limitare i privilegi di account specifici.

Passo 1
Per eseguire questa azione, accederemo al file /etc/pam.d/ come segue:

 sudo nano /etc/pam.d/sshd
O
 sudo nano /etc/pam.d/login
Passo 2
Lì vedremo quanto segue:

INGRANDIRE

Passaggio 3
In questo caso aggiungeremo alla fine le seguenti righe:

 auth richiesto pam_listfile.so \ onerr = successo elemento = senso utente = nega file = / etc / ssh / negato utenti

INGRANDIRE

In questo caso sono stati aggiunti i seguenti parametri:

autÈ il tipo di modulo da utilizzare
necessarioÈ un flag di controllo con il quale, se il modulo viene utilizzato, deve essere passato o il risultato complessivo fallirà indipendentemente dallo stato degli altri moduli.
pam_listfile.soÈ un modulo con il quale è consentito negare o consentire servizi basati su un file arbitrario.
onerr = successoÈ l'argomento del modulo.
elemento = utenteÈ l'argomento del modulo in cui viene indicato quanto riportato nel file e che deve essere verificato.
senso = negareSi riferisce all'argomento del modulo in cui viene specificata l'azione da compiere se presente nel file, in caso contrario viene richiesta l'azione opposta.
file = / etc / ssh / negato utentiÈ l'argomento del modulo in cui viene specificato un file contenente un elemento per riga.

Salviamo le modifiche usando i tasti Ctrl + O ed usciamo dall'editor usando Ctrl + X.

Dopodiché dobbiamo creare il file /etc/ssh/negatedusers e aggiungere al suo interno l'utente root e successivamente assegnare i rispettivi permessi:

 sudo chmod 600 / etc / ssh / negato utenti

4. Come configurare in modo avanzato PAM su Linux


Un valore speciale è il valore predefinito in PAM, quindi tutti i valori non sono menzionati esplicitamente, pertanto il valoreN corrisponde al codice di ritorno della funzione invocata nel modulo per il quale è definita la riga.
L'azione ha alcuni argomenti come:

ignorareIn caso di utilizzo di questa azione con uno stack di moduli, lo stato di ritorno del modulo non genera un codice di ritorno dall'applicazione.
CattivoIndica che il codice di ritorno è da considerarsi indicativo dei guasti del modulo utilizzato.
morireSvolge la stessa funzione di bad, ma è in grado di terminare lo stack di moduli e PAM ritorna immediatamente all'applicazione.
va beneQuesto valore indica a PAM che l'amministratore di sistema utilizzerà questo codice restituito direttamente nel codice restituito dell'intero stack di moduli.
fattoSvolge lo stesso ruolo di Ok, ma può terminare lo stack del modulo
n(un intero senza segno) - Equivalente a ok, ma può saltare i successivi N moduli nello stack.
RipristinaL'utilizzo di questo parametro cancella tutta la memoria dello stato dello stack del modulo e si riavvia con il modulo successivo nello stack.

Ognuna delle parole di base PAM, richiesta; requisito; sufficiente e facoltativa, avere un'espressione equivalente in termini di […] sintassi, con la quale sarà possibile scrivere regole più complesse come:

necessario[success = ok new_authtok_reqd = ok ignore = ignora default = bad]
requisito[successo = ok new_authtok_reqd = ok ignore = ignora default = die]
sufficiente[successo = fatto new_authtok_reqd = fatto default = ignora]
opzionale[successo = ok new_authtok_reqd = ok default = ignora]

Passo 1
Ad esempio, in CentOS 7 possiamo vedere le regole del file PAM eseguendo:

 sudo nano /etc/pam.d/postlogin

INGRANDIRE

Passo 2
Se accediamo al file:

 sudo nano /etc/pam.d/smartcard-auth

INGRANDIRE

Per accedere a più aiuto PAM possiamo eseguire:

 uomo pam.d
Con PAM sarà possibile creare o modificare regole per una migliore amministrazione dei processi di autenticazione in Linux.

wave wave wave wave wave