Hopp til hovedinnhold

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/gidNumber innenfor intervallet når du oppretter brukere/grupper i LDAP.
  • På SSSD-klienter: sett min_id til 10001 for å ignorere lavere LDAP-UIDer dersom du ønsker å unngå overlap med lokale brukere.
  • Migrer lokale brukere inn i LDAP med samme uidNumber for å beholde eierskap på filer, eller endre eierskap på filer med chown -R når du endrer UID.
  • Unngå like brukernavn både lokalt og i LDAP. Hvis navn må være like, sørg for at uidNumber er 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_mkhomedir og verifiser /etc/skel.
  • UID mismatch: sammenlign id brukernavn lokalt og i LDAP, korriger uidNumber eller 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
Robert Kristoffersen
Fullstack-utvikler • Webno