LDAP (Lightweight Directory Access Protocol)
Kapittel 40
Viktig merknad
Dette er avansert systemadministrasjon. LDAP påvirker innlogging og identitetsforvaltning på tvers av systemer. Ikke klipp-og-lim. Test i lab, ta backup, bruk versjonskontroll for konfig og ha fall-back (lokal sudo-bruker) før du ruller ut.
Hva LDAP er
LDAP er et katalogtjeneste-protokoll og brukes til å lagre og hente ut identiteter (brukere, grupper, maskiner), samt tilhørende attributter. I Linux brukes LDAP ofte sammen med NSS og PAM for å la brukere autentisere mot en sentral katalog.
Server og klient – oversikt
Serveren (slapd, OpenLDAP) lagrer objekter (for eksempel under dc=example,dc=com). Klienter slår opp brukere/grupper i katalogen for innlogging og autorisasjon. Typiske objekttyper: inetOrgPerson (persondata), posixAccount (UNIX-bruker), shadowAccount (passord-policy), posixGroup (UNIX-gruppe).
Installasjon – server (OpenLDAP)
apt update
apt install slapd ldap-utils
# Alternativt i én linje:
apt install slapd ldap-utils
Under installasjonen blir du bedt om å sette admin-passord og base-DN (for eksempel dc=example,dc=com). Du kan kjøre konfigurasjonsdialogen på nytt med:
dpkg-reconfigure slapd
LDAP-verktøy
ldapsearch, ldapadd og ldapmodify brukes til å lese og endre innhold (LDIF). Eksempler på bruksområder: opprette base-OU-er (ou=People, ou=Groups), legge inn brukere (uid=…), sette grupper (cn=…).
Web-administrasjon (frivillig)
phpldapadmin forenkler administrasjon via nettleser.
apt update
apt install phpldapadmin
Skjema og viktige attributter (minimum for UNIX-innlogging)
posixAccount: uid, uidNumber, gidNumber, homeDirectory, loginShell
shadowAccount: shadowLastChange, shadowMax osv.
posixGroup: cn, gidNumber, memberUid
Passord lagres som hash i userPassword. Bruk slappasswd for å generere hash før du skriver inn i LDIF.
UID/GID-strategi (unngå konflikter)
Linux-maskiner har ofte lokale brukere fra UID 1000 og opp. Sett en høy start-range for LDAP-brukere (for eksempel 10001 og oppover) slik at UID ikke kolliderer med lokale. På serveren: tildel uidNumber og gidNumber fra en reservert LDAP-range. På klienter: sørg for at lokale brukere fortsatt fungerer, og at identiske navn ikke får ulike UID. Se løsningsforslag i avsnittet “Håndtering av UID-konflikter”.
Installasjon – klient (klassisk NSS/PAM-stack)
Installer autentiseringsklient og konfigdialog:
apt update
apt install ldap-utils ldap-auth-config libnss-ldapd libpam-ldapd nscd
Kjør konfigurasjonsdialog på nytt ved behov:
dpkg-reconfigure ldap-auth-config
Oppdater /etc/nsswitch.conf så LDAP brukes for passwd, group og shadow:
passwd: compat ldap
group: compat ldap
shadow: compat ldap
Oppdater PAM til å bruke LDAP (pam-auth-update kan hjelpe deg å aktivere nødvendige moduler). Bekreft at PAM-filer refererer til ldap:
grep ldap /etc/pam.d/*
Opprett hjemmemapper ved første innlogging (valgfritt, men ofte ønsket): aktiver pam_mkhomedir i PAM common-session, og bruk /etc/skel som mal.
Restart caches for navneoppslag hvis du bruker nscd:
systemctl restart nscd
Alternativ klient – SSSD (anbefalt i mange miljøer)
SSSD erstatter nslcd/nscd og gir caching, offline-innlogging og enklere policy. Pakker: sssd, sssd-ldap. Konfigurer /etc/sssd/sssd.conf (domene, base-DN, bind-bruker, TLS) og aktiver sssd. Fordeler: bedre caching, enklere UID-policy (min_id), robusthet ved nettverksbrudd.
TLS og sikkerhet
Bruk StartTLS eller LDAPS for å beskytte legitimasjon og data i transitt. Distribuer CA-sertifikat til klienter og pek konfigurasjonen til riktig CA-fil. Åpne kun nødvendige porter (389 for LDAP, 636 for LDAPS) og begrens til interne nett. Bruk service-konto med minst mulig rettigheter til oppslag (bind DN), ikke admin-bruker.
Håndtering av UID-konflikter (konkrete strategier)
- Reservér UID/GID-intervall for LDAP (for eksempel 10001–19999). Sett
uidNumber/gidNumberinnenfor intervallet når du oppretter brukere/grupper i LDAP. - På SSSD-klienter: sett
min_idtil 10001 for å ignorere lavere LDAP-UIDer dersom du ønsker å unngå overlap med lokale brukere. - Migrer lokale brukere inn i LDAP med samme
uidNumberfor å beholde eierskap på filer, eller endre eierskap på filer medchown -Rnår du endrer UID. - Unngå like brukernavn både lokalt og i LDAP. Hvis navn må være like, sørg for at
uidNumberer identisk, eller prioriter “files” først i nsswitch for de kontoene du vil beholde lokalt. - Dokumentér og lås ID-tildeling (for eksempel en enkel “ID-allocator” tabell eller script) slik at UID/GID ikke gjenbrukes.
Operasjonelle råd
Ha alltid minst én lokal sudo-bruker som ikke er avhengig av LDAP, i tilfelle katalogen er nede. Overvåk bind-latens og feil i syslog/journal. Ta backup av slapd-konfig og data (slapcat/slapadd), og test restore. Sett passordpolicy (ppolicy overlay) og vurder to-faktor via PAM der det er fornuftig.
Dine noter – konkretisering og presisering
Installere server:
apt install ldap-utils slapd
Kjør konfig på nytt:
dpkg-reconfigure slapd
Installer webadmin:
apt install phpldapadmin
Installer klient:
apt install ldap-utils ldap-auth-config libnss-ldapd libpam-ldapd nscd
Kjør konfig på nytt:
dpkg-reconfigure ldap-auth-config
Oppdater nsswitch: endre linjene for passwd, group og shadow til å inkludere ldap som du skisserte
Sjekk PAM:
grep ldap /etc/pam.d/*
pam-auth-update
Bruk /etc/skel om nye LDAP-brukere skal få standardinnhold ved første innlogging (sammen med pam_mkhomedir)
Restart cache:
systemctl restart nscd
Advarsel om UID-serier
Start LDAP-brukere på en høy nummerserie (for eksempel 10001) for å unngå kollisjon med lokale brukere som ofte starter på 1000. Dette gjør det enklere å se hva som er LDAP vs. lokalt, og hindrer at samme navn får forskjellig UID på tvers av maskiner.
Feilsøking – rask sjekkliste
ldapsearch -x -H ldap://server -b "dc=example,dc=com"etterspørsel feiler? Sjekk DNS, brannmur og TLS.- Innlogging henger: sjekk nscd/nslcd/sssd status og nsswitch-rekkefølge.
- Bruker finner ikke hjemmemappe: aktiver
pam_mkhomedirog verifiser/etc/skel. - UID mismatch: sammenlign
id brukernavnlokalt og i LDAP, korrigeruidNumbereller fil-eierskap. - Sudo feiler for LDAP-bruker: verifiser gruppemedlemskap (for eksempel sudo) og at sudoers tillater gruppen.
Hurtigoversikt
Server: slapd (OpenLDAP), ldap-utils
dpkg-reconfigure slapd → kjør server-konfig på nytt
phpldapadmin → valgfri web-admin
Klient: ldap-utils, ldap-auth-config, libnss-ldapd, libpam-ldapd, nscd (evt. sssd, sssd-ldap som alternativ)
dpkg-reconfigure ldap-auth-config → kjør klient-konfig på nytt
/etc/nsswitch.conf → legg til ldap for passwd, group, shadow
pam-auth-update → aktiver PAM-moduler (mkhomedir, ldap)
systemctl restart nscd → restart navne-cache
UID-policy: bruk høy UID-range for LDAP (for eksempel 10001+)
Sikkerhet: bruk TLS (StartTLS/LDAPS), service-konto for bind, minst mulig rettigheter
Fall-back: behold én lokal sudo-konto som ikke avhenger av LDAP
