π 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