User Tools

Site Tools


teknik:infrastruktur:ldap

This is an old revision of the document!


## 1. LDAP: Grundlaget for centraliseret brugerstyring ### Hvad er LDAP? LDAP (Lightweight Directory Access Protocol) er en åben standard (RFC 4510) til at hente, opdatere og søge i hierarkiske directory-tjenester over et netværk. Den bruges primært til: - Centraliseret lagring af brugere, grupper, enheder og rettigheder. - Autentificering (login) og autorisation (adgangskontrol). - Multi-platform understøttelse (Linux, Windows, applikationer, tjenester).

Typisk struktur i LDAP: ``` dc=example,dc=com ├── ou=users │ ├── uid=bruger1 │ └── uid=bruger2 └── ou=groups

  ├── cn=admins
  └── cn=developers

```

Implementeringer: - OpenLDAP (open source, fleksibel). - 389 Directory Server (Red Hat, enterprise-venlig). - Apache Directory Server (Java-baseret, skalerbar).

— ### LDAP i Linux-miljøer I Linux integreres LDAP med: - `nsswitch.conf`: Konfigurerer systemet til at hente brugere/grupper fra LDAP. - `pam_ldap` eller `sssd` (System Security Services Daemon): Håndterer autentificering via LDAP. - Kerberos: Til Single Sign-On (SSO) med LDAP som backend.

Eksempel på opsætning: ```bash # /etc/nsswitch.conf (Ubuntu/Debian) passwd: compat ldap group: compat ldap shadow: compat ldap ```

— — ## 2. Keycloak: Identity and Access Management (IAM) lag ### Hvad er Keycloak? Keycloak er en open-source IAM-løsning (udviklet af Red Hat) til: - Federeret identitet (understøtter LDAP, Active Directory, SAML 2.0, OIDC, OAuth2). - Single Sign-On (SSO) på tværs af applikationer. - Centraliseret autentificering med multi-factor authentication (MFA). - Brugerselvbetjening (self-service password reset, profiladministration).

— ### Integration mellem LDAP og Keycloak Keycloak kan synkronisere brugere fra LDAP og fungere som en identity provider (IdP) for både Linux- og Windows-tjenester.

#### Opsætning af LDAP i Keycloak: 1. Opret en LDAP User Federation i Keycloak:

  1. Angiv LDAP-serverens URL (f.eks. `ldap://ldap.example.com:389`).
  2. Konfigurer bind DN (admin-bruger til LDAP-adgang) og adgangskode.
  3. Definer bruger- og gruppe-mapping (f.eks. `uid` → username, `memberOf` → grupper).
  4. Indstil søgefiltre for at hente specifikke brugere/grupper.

2. Synkronisering:

  1. Keycloak kan importere brugere fra LDAP ved opstart eller på planlagte tidspunkter.
  2. Ændringer i LDAP (f.eks. ny bruger) reflekteres automatisk i Keycloak.

3. Autentificeringsflow:

  1. Brugere logger ind via Keycloak login-portal (web, API, eller integrerede applikationer).
  2. Keycloak validerer credentials mod LDAP.
  3. Udsteder JWT-tokens (OIDC) eller SAML-assertions til klienter.

— ### Fordele ved Keycloak + LDAP: ✅ Enkelt login (SSO) på tværs af Linux/Windows/applikationer. ✅ Understøttelse af MFA (SMS, TOTP, hardware tokens). ✅ Fleksibel integration med både åbne og proprietary systemer. ✅ Audit logs og compliance (GDPR, ISO 27001).

— — ## 3. Parallel integration med Windows (Active Directory) ### Hvorfor beholde Windows-miljøet? - Eksisterende infrastruktur: AD bruges til Windows-klienter, GPO, og legacy-applikationer. - Kerberos/NTLM: Nødvendigt for ældre Windows-tjenester. - Group Policy: Centraliseret konfiguration af Windows-maskiner.

— ### Løsninger for interoperabilitet

Metode Beskrivelse Fordele Ulemper
————————–——————————————————————————-——————————————–——————————————–
Samba som AD DC Samba kan fungere som en fuldgyldig AD Domain Controller. Fuldt kompatibelt med Windows-klienter. Kræver avanceret opsætning.
LDAP + AD Sync Synkroniser brugere fra AD til LDAP (f.eks. med `ldap-sync` eller FreeIPA). Beholder AD som kilden. Risiko for synkroniseringskonflikter.
Keycloak + AD Keycloak forbinder direkte til AD via LDAP eller Kerberos. Ingen manuel synkronisering. Kræver AD-adgang for Keycloak.
Cross-Forest Trust Opret en trust-relation mellem Linux LDAP (f.eks. FreeIPA) og AD. Transparent adgang på tværs af miljøer. Kompleks opsætning.

— ### Anbefalet opsætning: Keycloak + LDAP + AD 1. LDAP som primær brugerdatabase:

  1. Alle brugere (Linux/Windows) lagres i LDAP (eller AD, hvis AD er primært).
  2. Keycloak forbinder til LDAP/AD for autentificering.

2. Samba som AD-medlem:

  1. Linux-servere slutter sig til AD-domænet via Samba.
  2. Brugere kan logge ind på Linux-maskiner med AD-credentials (via `sssd` + `ad` backend).

3. Keycloak som SSO-portal:

  1. Applikationer (f.eks. Nextcloud) autentificerer via Keycloak.
  2. Keycloak validerer mod LDAP/AD og udsteder tokens.

— — ## 4. Nextcloud og andre applikationer ### Integration med Nextcloud Nextcloud kan integreres med LDAP + Keycloak på to måder:

#### Option 1: Direkte LDAP-integration - Nextcloud forbinder direkte til LDAP-serveren. - Fordele: Simpel opsætning, ingen ekstra lag. - Ulemper: Ingen SSO (brugere skal logge ind separat).

Opsætning: 1. Installer LDAP/Active Directory app i Nextcloud. 2. Konfigurer LDAP-server, bind DN, og søgefiltre. 3. Map LDAP-felter til Nextcloud-brugere (f.eks. `uid` → username).

#### Option 2: Keycloak SSO (anbefalet) - Nextcloud autentificerer via Keycloak (OIDC eller SAML). - Fordele:

  1. Single Sign-On (brugere logger ind én gang).
  2. Understøttelse af MFA.
  3. Centraliseret styring via Keycloak.

Opsætning: 1. Konfigurer Keycloak:

  1. Opret en OIDC-klient for Nextcloud.
  2. Tildel roller/grupper (f.eks. `nextcloud-users`).

2. Konfigurer Nextcloud:

  1. Installer Social Login & OIDC app.
  2. Angiv Keycloak client ID, client secret, og discovery endpoint (f.eks. `https://keycloak.example.com/auth/realms/master/.well-known/openid-configuration`).

3. Test login:

  1. Brugere klikker på “Log ind med Keycloak” → omdirigeres til Keycloak → logger ind med LDAP/AD-credentials → får adgang til Nextcloud.

— ### Eksempel på andre applikationer

Applikation Integrationsmetode Protokol
————————————————————–——————–
Jira/Confluence Keycloak (SAML/OIDC) SAML 2.0 / OIDC
GitLab LDAP eller Keycloak (OIDC) LDAP / OIDC
Mattermost Keycloak (OIDC) OIDC
Grafana LDAP eller Keycloak (OAuth2) LDAP / OAuth2

— — ## 5. Arkitekturoverblik Her er et visuelt overblik over integrationen:

```mermaid graph TD

  A[Windows AD] -->|Synkronisering| B[LDAP]
  A -->|Kerberos/NTLM| C[Samba]
  B -->|User Federation| D[Keycloak]
  C -->|AD Domain Join| E[Linux Servere]
  D -->|OIDC/SAML| F[Nextcloud]
  D -->|OIDC/SAML| G[Andre Applikationer]
  E -->|PAM/SSSD| B
  F -->|LDAP| B

```

— ### Workflow for brugerlogin: 1. Bruger åbner Nextcloud (eller anden applikation). 2. Viderestilles til Keycloak login-portal. 3. Keycloak validerer credentials mod LDAP/AD. 4. Hvis godkendt, udsteder Keycloak et JWT-token (OIDC) eller SAML-assertion. 5. Nextcloud modtager tokenet og giver adgang.

— — ## 6. Praktiske overvejelser ### Fordele ved denne opsætning ✔ Digital suverænitet: LDAP og Keycloak er open source (ingen vendor lock-in). ✔ Fleksibilitet: Understøtter både Linux og Windows uden at erstatte AD. ✔ Skalerbarhed: LDAP og Keycloak kan håndtere tusindvis af brugere. ✔ Sikkerhed:

  1. MFA via Keycloak.
  2. Centraliseret audit (hvem loggede ind, hvornår, fra hvor).
  3. Krypteret kommunikation (LDAPS, HTTPS).

### Udfordringer og løsninger

Udfordring Løsning
—————————————-—————————————————————————–
Synkronisering mellem AD og LDAP Brug FreeIPA (Red Hat) eller Univention Corporate Server (UCS).
Performance med mange brugere Implementér LDAP-replikering og caching i Keycloak.
Kompleksitet i opsætning Brug Ansible/Terraform til automatiseret deployment.
Legacy Windows-applikationer Behold AD og brug Keycloak som broker til moderne applikationer.

— ### Anbefalede værktøjer til drift - Monitorering:

  1. Prometheus + Grafana til overvågning af LDAP/Keycloak.
  2. ELK Stack (Elasticsearch, Logstash, Kibana) til logs.

- Backup:

  1. LDAP: `slapcat` (OpenLDAP) eller `db2ldif` (389 DS).
  2. Keycloak: Database dump (PostgreSQL/MySQL).

- High Availability:

  1. LDAP-replikering (multi-master eller master-slave).
  2. Keycloak clustering (flere instanser bag en load balancer).

— — ## 7. Trin-for-trin implementeringsguide ### Fase 1: Opsæt LDAP 1. Installer OpenLDAP eller 389 Directory Server:

 ```bash
 # Ubuntu/Debian
 sudo apt install slapd ldap-utils
 ```

2. Konfigurer base DN (f.eks. `dc=example,dc=com`). 3. Opret admin-bruger og ou=users/ou=groups. 4. Test med `ldapsearch`:

 ```bash
 ldapsearch -x -H ldap://localhost -b "dc=example,dc=com"
 ```

— ### Fase 2: Integrer LDAP med Linux 1. Installer `sssd` og `ldap-utils`:

 ```bash
 sudo apt install sssd ldap-utils
 ```

2. Konfigurer `/etc/sssd/sssd.conf`:

 ```ini
 [sssd]
 services = nss, pam
 domains = example.com
 [domain/example.com]
 id_provider = ldap
 auth_provider = ldap
 ldap_uri = ldap://ldap.example.com
 ldap_search_base = dc=example,dc=com
 ldap_id_use_start_tls = true
 cache_credentials = true
 ```

3. Opdater `nsswitch.conf` og test login:

 ```bash
 sudo systemctl restart sssd
 id bruger1  # Skal vise LDAP-brugerinfo
 ```

— ### Fase 3: Opsæt Keycloak 1. Download og start Keycloak:

 ```bash
 docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=password quay.io/keycloak/keycloak:24.0 start-dev
 ```

2. Log ind på http://localhost:8080 (admin/password). 3. Opret et realm (f.eks. `example`). 4. Tilføj LDAP User Federation:

  1. Gå til User Federation → Add provider → LDAP.
  2. Udfyld LDAP-serverdetaljer (URL, bind DN, password).
  3. Test forbindelse med “Test connection” og “Test authentication”.

5. Opret en OIDC-klient for Nextcloud:

  1. Gå til Clients → Create.
  2. Client ID: `nextcloud`.

— ### Fase 4: Integrer Nextcloud med Keycloak 1. Installer Social Login & OIDC app i Nextcloud:

  1. Gå til Apps → Social Login & OIDC → Enable.

2. Konfigurer OIDC:

  1. Client ID: `nextcloud`.
  2. Client Secret: (Hentes fra Keycloak under klienten).
  3. Button Text: `Log ind med Keycloak`.

3. Test login via Keycloak.

— ### Fase 5: Integrer med Windows AD (valgfrit) 1. Option A: Samba som AD-medlem:

  1. Installer Samba og slut til AD:

```bash

   sudo apt install samba krb5-config winbind
   sudo net ads join -U admin
   ```
 - Konfigurer `/etc/sssd/sssd.conf` til at bruge `ad` provider.

2. Option B: Keycloak + AD (direkte):

  1. Opret en ny LDAP User Federation i Keycloak for AD:
    1. Bind DN: `CN=admin,CN=Users,DC=example,DC=com`.
    2. Base DN: `DC=example,DC=com`.

— — ## 8. Eksempel på brugeroplevelse - Bruger på Linux-maskine:

  1. Logger ind med AD/LDAP-credentials (via `sssd`).
  2. Åbner Nextcloud → automatisk logget ind via Keycloak SSO.

- Bruger på Windows-maskine:

  1. Logger ind på Windows med AD-credentials.
  2. Åbner Nextcloud i browser → viderestilles til Keycloak → logger ind med samme AD-credentials.

- Admin:

  1. Styrer alle brugere/grupper centralt i LDAP/AD.
  2. Konfigurerer rettigheder i Keycloak (f.eks. hvilke grupper har adgang til Nextcloud).

— — ## 9. Sikkerhedsanbefalinger - LDAP:

  1. Brug LDAPS (port 636) eller StartTLS for krypteret kommunikation.
  2. Begræns bind DN-rettigheder (kun læs/adgang til nødvendige felter).

- Keycloak:

  1. Aktiver HTTPS (aldrig HTTP i production).
  2. Brug stærke adgangskoder til admin-brugere.
  3. Aktiver brute-force beskyttelse (f.eks. max 5 forsøg).

- Nextcloud:

  1. Konfigurer CORS korrekt for at tillade Keycloak-domænet.
  2. Brug AppArmor/SELinux til at begrænse Nextclouds adgang.

— — ## 10. Alternativer og udvidelser

Komponent Alternativ Bemærkninger
————————————————————–————————————————–
LDAP FreeIPA, Univention Corporate Server Inkluderer Kerberos, DNS, og certificate authority.
Keycloak Authelia, LemonLDAP::NG Lettervægtsalternativer til IAM.
Nextcloud ownCloud, Seafile Andre open-source fil-delingsløsninger.
Samba Winbind (del af Samba) Til integration med AD.

— — ## 11. Opsummering: Hvorfor denne opsætning?

Krav Løsning
———————————–—————————————————————————–
Central brugerstyring LDAP + Keycloak (alle brugere ét sted).
Single Sign-On (SSO) Keycloak (OIDC/SAML) til Nextcloud og andre applikationer.
Windows-kompatibilitet Samba (AD-integration) + Keycloak (federeret identitet).
Digital suverænitet OpenLDAP, Keycloak, Nextcloud (alle open source).
Skalerbarhed LDAP-replikering, Keycloak clustering.
Sikkerhed MFA, LDAPS, HTTPS, audit logs.

— — ## 12. Næste skridt for dig, Søren Da du har erfaring med Microsoft-systemer og digital suverænitet, kunne følgende være relevante: 1. Prøv opsætningen i et testmiljø:

  1. Brug Docker til at køre LDAP (f.eks. `osixia/openldap`) og Keycloak.
  2. Test integration med Nextcloud (Docker-container).

2. Vurder SUSE-certificeringer:

  1. SUSE Certified Administrator (SCA) i Enterprise Linux (dækker LDAP, Samba, og IAM).
  2. SUSE Certified Engineer (SCE) i Identity Management (fokus på FreeIPA og integration).

3. Overvej FreeIPA:

  1. Red Hat’s løsning til integreret LDAP + Kerberos + DNS + Certificate Authority.
  2. God til fuld erstatning af AD i Linux-miljøer.

4. Automatiser med Ansible:

  1. Skriv playbooks til at deploye LDAP, Keycloak, og Nextcloud.

—

teknik/infrastruktur/ldap.1784628102.txt.gz · Last modified: by smarken

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

Brug af AI : Al tekst kán være uddrag af AI genereret tekst og kan være fejlbehæftet.
AI kan lave fejl og det kan mennesker også, men al tekst er gennemgået af et menneske for fejl, og personlig bias kan være tilføjet.