Du hast wahrscheinlich schon einige Dienste auf deinem Server, welche eine Authentifizierung mittels LDAP erlauben. Mit LLDAP kannst du relativ einfach einen LDAP-Server aufsetzen. Somit erreichst du, dass du eine zentrale Benutzerverwaltung erhältst. LLDAP ist eine einfache und ressourcenschonende Alternative zu OpenLDAP. Ich zeige euch in dieser Anleitung, wie ihr LLDAP mittels Docker und Traefik auf eurem Server installieren könnt.
1. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu )
- Traefik V3 Installation, Konfiguration und CrowdSec-Security
2. Verzeichnis erstellen
Dazu gebt ihr folgenden Befehl ein:
mkdir -p /opt/containers/lldap
3. Docker Compose Datei erstellen
Dazu erstellt ihr folgende Datei:
nano /opt/containers/lldap/docker-compose.yml
Fügt folgendes ein:
services: lldap: image: lldap/lldap:stable container_name: lldap networks: - proxy volumes: - ./lldap_data:/data environment: - UID=1000 - GID=1000 - TZ=Europe/Berlin - LLDAP_JWT_SECRET=Supergeheim # verwende hier einen zufällligen Token. Ist nicht das Passwort. - LLDAP_KEY_SEED=Supersupergeheim # verwende hier einen zufällligen Token. Ist nicht das Passwort. - LLDAP_LDAP_BASE_DN=dc=deinedomain,dc=de labels: - traefik.enable=true - traefik.http.routers.lldap.rule=Host(`ldap.deinedomain.de`) - traefik.http.routers.lldap.entrypoints=websecure - traefik.http.services.lldap.loadbalancer.server.port=17170 - traefik.http.routers.lldap.service=lldap - traefik.http.routers.lldap.tls.certresolver=tls_resolver networks: proxy: name: proxy external: true
4. Domains anpassen
Nun ändern wir noch die Domains in der Konfiguration. Die Domain unter welcher die LLDAP-Weboberfläche später erreichbar ändert ihr so:
cd /opt/containers/lldap sed -i "s/ldap.deinedomain.de/<DeineDomain>/g" docker-compose.yml Beispiel: sed -i "s/ldap.deinedomain.de/ldap.euredomain.de/g" docker-compose.yml
- LLDAP_LDAP_BASE_DN=dc=deinedomain,dc=de ändert ihr auf die Domain, für welche ihr den LDAP-Server installiert.
5. LLDAP starten
Nun starten wir LLDAP mit folgendem Befehl:
docker compose -f /opt/containers/lldap/docker-compose.yml up -d
Geht anschließend auf eure Homepage ldap.euredomain.de
Dort solltet ihr folgendes sehen:
Hier könnt ihr euch mit den Standard-Benutzerdaten admin und password einloggen.
Sobald ihr eingeloggt seid. ändert ihr natürliche euer Admin-Passwort indem ihr auf den Benutzer admin klickt und danach Modify Password auswählt.
6. (Optional) Einen Read-Only Benutzer anlegen
Wir können für Applikationen, welchen wir nicht erlauben wollen, dass sie in die LDAP-Datenbank “zurückschreiben” können, einen Read-Only Benutzer erstellen.
Dazu klicken wir auf Create a User und füllen für User name readonly (du kannst hier aber auch einen anderen Benutzernamen wählen) aus und geben das gewünschte Passwort und eine E-Mail-Adresse ein (diese ist nicht relevant, wird vom Formular aber benötigt). Anschiessend klicken wir auf Submit.
Anschliessend klicken wir auf den Benutzer readonly und fügen ihn unter Group memberships der Gruppe lldap_strict_readonly hinzu. Das sollte nachher so aussehen.
7. Beispielhafte Konfiguration anhand von Portainer
7.1 LDAP-Benuzer erstellen
Als erstes erstellt ihr über die LLDAP-Weboberfläche einen neuen Benutzer. Diesen könnt ihr beliebig nennen. In diesem Beispiel nenne ich ihn einfach test. Bestätigen mit Submit.
7.2 In Portainer einloggen und die Einstellungen vornehmen
Nun loggt ihr euch mit eurem normalen Admin-Benuter (noch nicht mit einem LDAP-Benutzer) in Portainer ein. Danach geht ihr auf Settings > Authentication und wählt LDAP aus.
Dann scrollt ihr ein Wenig nach unten.
Bei LDAP-Server gebt ihr folgendes ein:
lldap:3890
Als nächstes deaktiviert ihr die Auswahl “Anonymous mode”.
Die Eingabe bei Reader DN hängt davon ab, ob ihr den optionalen Readonly-Benutzer (Schritt 6.) angelegt habt oder nicht.
Wenn ihr keinen Readonly-Benutzer angelegt habt, gebt ihr folgendes ein:
cn=admin,ou=people,dc=deinedomain,dc=de
Wenn ihr einen Readonly-Benutzer erstellt habt, gebt ihr das ein:
cn=readonly,ou=people,dc=deinedomain,dc=de
In beiden Fällen müsst ihr aber eure Domain unter dc=deinedomain,dc=de anpassen.
Dann gebt ihr noch das entsprechende Passwort ein und testet die Verbindung zum LDAP-Server indem ihr auf Test connectivity klickt.
Anschliessend müsst ihr unter User search configurations und Group search configurations noch die Domain anpassen, da wo ou=people,dc=deinedomain,dc=de bzw. ou=groups,dc=deinedomain,dc=de geschrieben steht.
Zur guten Letzt scrollt ihr ganz nach unten und speichert mit Save settings eure Eingaben.
7.3 Benutzer als Administrator festlegen
Der Benutzer (im Beispiel genannt test) ist standardmässig nicht Administrator und kann in Portainer nur sehr wenig tun. Um dies zu ändern gehen wir wie folgt vor.
Als erstes loggen wir uns mit dem neu erstellten user test an, damit dieser in Portainer erstellt wird. Danach melden wir uns gleich wieder ab und loggen uns anschliessend als normaler Administrator an (nicht der LDAP-Administrator).
Nun klickt ihr auf euren Benutzer, in diesem Falle test, und aktiviert die Auswahl Administator im darauffolgenden Fenster.
So, nun ist der Benutzer Administrator und kann in Portainer alles tun, was ein Administrator darf. Um dies zu testen loggen wir uns wieder aus und loggen uns anschliessend als Benutzer test an.
8. Anleitungen zur Integration von LLDAP
Nun geht es darum, weitere Dienste mit LLDAP zu verbinden. Dazu geht ihr einfach auf folgende Seite: https://github.com/lldap/lldap/blob/main/example_configs/. Hier findet ihr detaillierte Konfigurationen für sehr viele Dienste.