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:
- Angiv LDAP-serverens URL (f.eks. `ldap://ldap.example.com:389`).
- Konfigurer bind DN (admin-bruger til LDAP-adgang) og adgangskode.
- Definer bruger- og gruppe-mapping (f.eks. `uid` → username, `memberOf` → grupper).
- Indstil søgefiltre for at hente specifikke brugere/grupper.
2. Synkronisering:
- Keycloak kan importere brugere fra LDAP ved opstart eller på planlagte tidspunkter.
- Ændringer i LDAP (f.eks. ny bruger) reflekteres automatisk i Keycloak.
3. Autentificeringsflow:
- Brugere logger ind via Keycloak login-portal (web, API, eller integrerede applikationer).
- Keycloak validerer credentials mod LDAP.
- 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:
- Alle brugere (Linux/Windows) lagres i LDAP (eller AD, hvis AD er primært).
- Keycloak forbinder til LDAP/AD for autentificering.
2. Samba som AD-medlem:
- Linux-servere slutter sig til AD-domænet via Samba.
- Brugere kan logge ind på Linux-maskiner med AD-credentials (via `sssd` + `ad` backend).
3. Keycloak som SSO-portal:
- Applikationer (f.eks. Nextcloud) autentificerer via Keycloak.
- 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:
- Single Sign-On (brugere logger ind én gang).
- Understøttelse af MFA.
- Centraliseret styring via Keycloak.
Opsætning: 1. Konfigurer Keycloak:
- Opret en OIDC-klient for Nextcloud.
- Angiv redirect URIs (f.eks. `https://nextcloud.example.com/apps/sociallogin/custom_oidc`).
- Tildel roller/grupper (f.eks. `nextcloud-users`).
2. Konfigurer Nextcloud:
- Installer Social Login & OIDC app.
- 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:
- 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:
- MFA via Keycloak.
- Centraliseret audit (hvem loggede ind, hvornår, fra hvor).
- 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:
- Prometheus + Grafana til overvågning af LDAP/Keycloak.
- ELK Stack (Elasticsearch, Logstash, Kibana) til logs.
- Backup:
- LDAP: `slapcat` (OpenLDAP) eller `db2ldif` (389 DS).
- Keycloak: Database dump (PostgreSQL/MySQL).
- High Availability:
- LDAP-replikering (multi-master eller master-slave).
- 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:
- Gå til User Federation → Add provider → LDAP.
- Udfyld LDAP-serverdetaljer (URL, bind DN, password).
- Test forbindelse med “Test connection” og “Test authentication”.
5. Opret en OIDC-klient for Nextcloud:
- Gå til Clients → Create.
- Client ID: `nextcloud`.
- Root URL: `https://nextcloud.example.com`.
- Tilføj Redirect URI: `https://nextcloud.example.com/apps/sociallogin/custom_oidc`.
— ### Fase 4: Integrer Nextcloud med Keycloak 1. Installer Social Login & OIDC app i Nextcloud:
- Gå til Apps → Social Login & OIDC → Enable.
2. Konfigurer OIDC:
- Client ID: `nextcloud`.
- Client Secret: (Hentes fra Keycloak under klienten).
- 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:
- 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):
- Opret en ny LDAP User Federation i Keycloak for AD:
- LDAP URL: `ldap://ad.example.com:389`.
- Bind DN: `CN=admin,CN=Users,DC=example,DC=com`.
- Base DN: `DC=example,DC=com`.
— — ## 8. Eksempel på brugeroplevelse - Bruger på Linux-maskine:
- Logger ind med AD/LDAP-credentials (via `sssd`).
- Åbner Nextcloud → automatisk logget ind via Keycloak SSO.
- Bruger på Windows-maskine:
- Logger ind på Windows med AD-credentials.
- Åbner Nextcloud i browser → viderestilles til Keycloak → logger ind med samme AD-credentials.
- Admin:
- Styrer alle brugere/grupper centralt i LDAP/AD.
- Konfigurerer rettigheder i Keycloak (f.eks. hvilke grupper har adgang til Nextcloud).
— — ## 9. Sikkerhedsanbefalinger - LDAP:
- Brug LDAPS (port 636) eller StartTLS for krypteret kommunikation.
- Begræns bind DN-rettigheder (kun læs/adgang til nødvendige felter).
- Keycloak:
- Aktiver HTTPS (aldrig HTTP i production).
- Brug stærke adgangskoder til admin-brugere.
- Aktiver brute-force beskyttelse (f.eks. max 5 forsøg).
- Nextcloud:
- Konfigurer CORS korrekt for at tillade Keycloak-domænet.
- 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ø:
- Brug Docker til at køre LDAP (f.eks. `osixia/openldap`) og Keycloak.
- Test integration med Nextcloud (Docker-container).
2. Vurder SUSE-certificeringer:
- SUSE Certified Administrator (SCA) i Enterprise Linux (dækker LDAP, Samba, og IAM).
- SUSE Certified Engineer (SCE) i Identity Management (fokus på FreeIPA og integration).
3. Overvej FreeIPA:
- Red Hat’s løsning til integreret LDAP + Kerberos + DNS + Certificate Authority.
- God til fuld erstatning af AD i Linux-miljøer.
4. Automatiser med Ansible:
- Skriv playbooks til at deploye LDAP, Keycloak, og Nextcloud.
—
