Getting to know PAM

πŸ” Hoofdstuk 16.1: PAM (Pluggable Authentication Modules) in Linux

PAM (Pluggable Authentication Modules) biedt een flexibele en uitbreidbare authenticatiestructuur voor Linux. Het laat applicaties dynamisch authenticatiemodules gebruiken en beheren, waardoor systeembeheerders gedetailleerde controle krijgen over inlogprocedures, wachtwoordbeleid en sessiebeheer.

────────────────────────────────────────────
🧩 Wat is PAM?
────────────────────────────────────────────

PAM is een modulaire authenticatielaag waarmee Linux verschillende verificatiemethoden kan combineren. In plaats van hardcoded authenticatie, gebruiken toepassingen modulaire regels in `/etc/pam.d/`.

Voordelen:
β€’ Flexibel beheer van inlogbeleid
β€’ Ondersteunt brute-force bescherming
β€’ Kan wachtwoordsterkte afdwingen
β€’ Instelbaar per applicatie (bijv. SSH, sudo, login)

────────────────────────────────────────────
πŸ“¦ Belangrijke PAM-modules
────────────────────────────────────────────

β€’ `pam_unix.so` β†’ Standaard authenticatie via `/etc/passwd` en `/etc/ shadow`
β€’ `pam_pwhistory.so` β†’ Voorkomt hergebruik van oude wachtwoorden
β€’ `pam_pwquality.so` β†’ Dwingt complexe wachtwoorden af
β€’ `pam_tally2.so` / `pam_faillock.so` β†’ Vergrendelen van accounts na mislukte pogingen
β€’ `pam_nologin.so` β†’ Blokkeert logins als `/etc/nologin` aanwezig is

────────────────────────────────────────────
βš™οΈ PAM-configuratie en beheer
────────────────────────────────────────────

Configuratiebestanden:
PAM-regels worden opgeslagen in `/etc/pam.d/`, met 1 bestand per toepassing.

πŸ“Œ Syntaxis:
`type control_flag module [opties]`

Soorten type:
β€’ **auth** – Verifieert de gebruiker (wachtwoord, biometrie, etc.)
β€’ **account** – Controleert of toegang is toegestaan (bijv. tijd, groepslidmaatschap)
β€’ **password** – Beheer van wachtwoordinstellingen en -veranderingen
β€’ **session** – Regelt sessiestatus (bijv. logboeken, mappen mounten)

πŸ“Œ Control flags:
β€’ **required** – Module moet slagen, anders mislukt de authenticatie (maar andere modules blijven draaien)
β€’ **requisite** – Als deze faalt, stopt de hele authenticatie meteen
β€’ **sufficient** – Als deze slaagt, is authenticatie direct succesvol (mits geen eerdere failures)
β€’ **optional** – Alleen relevant als het de enige module is van dat type

────────────────────────────────────────────
πŸ” Sterke wachtwoorden afdwingen
────────────────────────────────────────────

Instellingen worden vaak beheerd via `/etc/security/pwquality.conf`:

β€’ `minlen=N` β†’ Minimale lengte
β€’ `dcredit=-N` β†’ Minimaal aantal cijfers
β€’ `ucredit=-N` β†’ Minimaal aantal hoofdletters
β€’ `lcredit=-N` β†’ Minimaal aantal kleine letters
β€’ `difok=N` β†’ Aantal tekens dat moet verschillen van vorige wachtwoord

Doel: voorkomen van zwakke of hergebruikte wachtwoorden

────────────────────────────────────────────
🚫 Brute-force bescherming & root-beperkingen
────────────────────────────────────────────

πŸ“Œ Vergrendeling van accounts na mislukte pogingen (met `pam_faillock.so` of `pam_tally2.so`):

β€’ `deny=N` β†’ Vergrendelt account na N mislukte pogingen
β€’ `unlock_time=N` β†’ Ontgrendelt automatisch na N seconden

πŸ“Œ Root-login beperken:
β€’ `pam_securetty.so` β†’ Staat root-login alleen toe vanaf specifieke terminals (gedefinieerd in `/etc/securetty`)
β€’ `/etc/nologin` β†’ Als dit bestand bestaat, mogen normale gebruikers niet inloggen
β€’ In `/etc/ shadow` β†’ Root-account kan geblokkeerd worden door het wachtwoordveld op `*` of `!` te zetten

────────────────────────────────────────────
βœ… Samenvatting
────────────────────────────────────────────

β€’ PAM maakt dynamisch en modulair authenticatiebeheer mogelijk
β€’ Wachtwoordbeleid, brute-force bescherming en sessiebeheer worden via PAM-modules geregeld
β€’ Beveiligingsniveaus zijn aanpasbaar per toepassing en gebruikersgroep
β€’ Root- en servicebeperkingen verhogen de veiligheid van het systeem