# PAM - Pluggable Authentication Modules {{#include ../../banners/hacktricks-training.md}} ### Informazioni di Base **PAM (Pluggable Authentication Modules)** funge da meccanismo di sicurezza che **verifica l'identità degli utenti che tentano di accedere ai servizi informatici**, controllando il loro accesso in base a vari criteri. È simile a un custode digitale, assicurando che solo gli utenti autorizzati possano interagire con servizi specifici, limitando potenzialmente il loro utilizzo per prevenire sovraccarichi di sistema. #### File di Configurazione - I **sistemi Solaris e UNIX-based** tipicamente utilizzano un file di configurazione centrale situato in `/etc/pam.conf`. - I **sistemi Linux** preferiscono un approccio basato su directory, memorizzando configurazioni specifiche per i servizi all'interno di `/etc/pam.d`. Ad esempio, il file di configurazione per il servizio di login si trova in `/etc/pam.d/login`. Un esempio di configurazione PAM per il servizio di login potrebbe apparire così: ``` auth required /lib/security/pam_securetty.so auth required /lib/security/pam_nologin.so auth sufficient /lib/security/pam_ldap.so auth required /lib/security/pam_unix_auth.so try_first_pass account sufficient /lib/security/pam_ldap.so account required /lib/security/pam_unix_acct.so password required /lib/security/pam_cracklib.so password required /lib/security/pam_ldap.so password required /lib/security/pam_pwdb.so use_first_pass session required /lib/security/pam_unix_session.so ``` #### **Reami di Gestione PAM** Questi reami, o gruppi di gestione, includono **auth**, **account**, **password** e **session**, ciascuno responsabile di diversi aspetti del processo di autenticazione e gestione delle sessioni: - **Auth**: Valida l'identità dell'utente, spesso richiedendo una password. - **Account**: Gestisce la verifica dell'account, controllando condizioni come l'appartenenza a gruppi o restrizioni di orario. - **Password**: Gestisce gli aggiornamenti delle password, inclusi controlli di complessità o prevenzione di attacchi a dizionario. - **Session**: Gestisce le azioni durante l'inizio o la fine di una sessione di servizio, come il montaggio di directory o l'impostazione dei limiti delle risorse. #### **Controlli del Modulo PAM** I controlli determinano la risposta del modulo al successo o al fallimento, influenzando l'intero processo di autenticazione. Questi includono: - **Required**: Il fallimento di un modulo richiesto porta a un eventuale fallimento, ma solo dopo che tutti i moduli successivi sono stati controllati. - **Requisite**: Terminazione immediata del processo in caso di fallimento. - **Sufficient**: Il successo bypassa il resto dei controlli dello stesso reame a meno che un modulo successivo non fallisca. - **Optional**: Causa fallimento solo se è l'unico modulo nello stack. #### Scenario Esemplare In una configurazione con più moduli auth, il processo segue un ordine rigoroso. Se il modulo `pam_securetty` trova il terminale di accesso non autorizzato, i login come root vengono bloccati, ma tutti i moduli vengono comunque elaborati a causa del suo stato "required". Il `pam_env` imposta le variabili di ambiente, potenzialmente aiutando nell'esperienza utente. I moduli `pam_ldap` e `pam_unix` lavorano insieme per autenticare l'utente, con `pam_unix` che tenta di utilizzare una password fornita in precedenza, migliorando l'efficienza e la flessibilità nei metodi di autenticazione. ### Riferimenti - [https://hotpotato.tistory.com/434](https://hotpotato.tistory.com/434) {{#include ../../banners/hacktricks-training.md}}