{{tag> nextcloud ldap ldaps}} ====== Nextcloud mit LDAP oder LDAPS ====== Doku direkt bei nextcloud -> [[https://docs.nextcloud.com/server/12/admin_manual/configuration_user/user_auth_ldap.html]] **Szenario:** Die NextCloud (Version 12.04, Jan'2018) befindet sich auf einem Ubuntu-Server im grünen Netz und ist mit ihrer IP (hier 10.16.1.9) in den Workstations aufgenommen. Zuerst an der Weboberfläche als NextCloud-Administrator anmelden und das LDAP-Modul aktivieren:\\ **''→ Apps → deaktivierte Apps → LDAP user and group backend → aktivieren''** ===== LDAP einrichten ===== Am linuxmuster.net-Server muss der anonyme LDAP-Zugriff von der IP des vorliegenden Ubuntu-Servers (hier z.B. 10.16.1.9) zugelassen werden. Am linuxmuster.net-Server in der Datei **''/etc/ldap/slapd.conf''** eine Zeile mit der IP des NextCloud-Servers ergänzen: ... #Limits Access: access to .......... by anonymous peername.ip=10.16.1.9 auth ... Dann am linuxmuster.net-Server den ldap-Dienst neu starten: # service slapd restart Im Web-Browser als NextCloud-Administrator das LDAP-Modul aufrufen unter:\\ **''→ Verwaltung → LDAP / AD Integration''** Die ersten vier Konfigurations-Reiter mit dem Button „Fortsetzen“ bis zum Reiter „Gruppen“ durcharbeiten, beginnend mit den Einstellungen zum „1. Server“ : * Host: **server** * Port: **389** * Benutzer-DN und Passwort leer lassen * Basis DN: **dc=linuxmuster-net,dc=lokal** (ggf. den eigenen Werten anpassen) * Benutzer → Objektklasse: **posixAccount** (ergibt den Filter: „(|(objectclass=posixAccount))“ ) * Gruppen → Objektklasse: **posixGroup** (ergibt den Filter: „(&(|(objectclass=posixGroup)))“ ) Abmelden und als ein Lehrer oder ein Schüler an der NextCloud anmelden. Falls eine Konfiguration nicht funktioniert und editiert werden muss, empfiehlt es sich diese komplett zu löschen und neu anzulegen. Die Konfigurationsoberfläche von Nextcloud hat manchmal Probleme Änderungen korrekt zu übernehmen. ===== LDAPS einrichten ===== Zunächst das Server-Zertifikat in den Nextcloud-Server kopieren. Trotz abschaltbarer Zertifikatsprüfung war das notwendig.\\ Dazu am Ubuntu-Server, der die NextCloud enthält, an der Konsole als root anmelden und das Zertifikat kopieren: # scp 10.16.1.1:/etc/ssl/private/server.crt /etc/ssl/certs/server.crt Im Web-Browser als NextCloud-Administrator das LDAP-Modul aufrufen unter:\\ **''→ Verwaltung → LDAP / AD Integration''** Ggf. eine alte Konfiguration __löschen__ und eine neue anlegen. Die Konfigurations-Reiter mit dem Button „Fortsetzen“ bis zum Reiter „Gruppen“ durcharbeiten, ebenso den Reiter "Fortgeschritten". Den Reiter "Fortgeschritten" dabei zuerst abarbeiten und alle anderen Reiter durchklicken! * Fortgeschritten:\\ * **Konfiguration aktiv** * **Schalte die SSL-Zertifikatsprüfung aus** * Host: **%%ldaps://server%%** * Port: **636** * Benutzer-DN und Passwort leer lassen * Basis DN: **dc=linuxmuster-net,dc=lokal** * Benutzer → Objektklasse: **posixAccount** (ergibt den Filter: „(|(objectclass=posixAccount))“ ) * Gruppen → Objektklasse: **posixGroup** (ergibt den Filter: „(&(|(objectclass=posixGroup)))“ ) Ein Eintrag des NextCloud-Server in der **''slapd.conf''** am linuxmuster.net-Server ist nicht nötig. In der Datei wird durch die Zeile „by anonymous ssf=56 auth“ jede Anfrage per LDAPS zugelassen (ssf=Security-Strength-Factor mit Keylänge 56). Abmelden und als ein Lehrer oder ein Schüler an der NextCloud anmelden. ===== Nur Lehrer zulassen ===== Der bisherige LDAP-Dienst von linuxmuster.net unterstützt leider nicht die Option "member-of-overlay", so dass man eine Gruppenfilterung manuell eingeben muss. Im Web-Browser als NextCloud-Administrator das LDAP-Modul aufrufen unter:\\ **''→ Verwaltung → LDAP / AD Integration''** und dann die manuelle Eingabe aktivieren: {{ :anwenderwiki:nextcloud:ldap-manuell.jpg?500 |}} Nun bei den Anmelde-Attributen den Filter/LDAP-Abfrage bearbeiten wie folgt. Die Gruppe Lehrer hat die gidNumber 10000. {{ :anwenderwiki:nextcloud:ldap-gidnumber.jpg?500 |}} Weiterklicken bis zum Reiter Gruppen. Nun testen, ob sich nur Lehrer anmelden können. Beim Anmelden eines Schülers erscheint die Fehlermeldung: "Falsches Passwort, soll es zurückgesetzt werden?" ==== Lehrer, Schüler, aber keine Computeraccounts zulassen ==== Wie im letzten Abschnitt, aber man muss beim Reiter "Benutzer" die LDAP-Abfrage so anpassen: (&(objectClass=posixAccount)(!(|(cn=Computer)(cn=ExamAccount)))) Ebenso im Reiter "Anmelde-Attribute" die LDAP-Abfrage anpassen: (&(objectClass=posixAccount)(!(|(cn=Computer)(cn=ExamAccount)))(uid=%uid)) was so viel bedeutet wie: ist die Objektklasse ein Posixaccount UND ist die uid=%uid UND ist WEDER der cn=Computer noch der cn=ExamAccount. Es geht aber noch einfacher. Zumindest bis zur 6.x funktioniert folgender Trick: Alle Administratoren, Computerkonten und Klassenarbeitskonten haben den LDAP-Wert sophomorix-status: P. Daher sollte genauso funktionieren bei "Benutzer": (&(objectClass=posixAccount)(!(sophomorixstatus=P))) und dementsprechend: (&(objectClass=posixAccount)(!(sophomorixstatus=P))(uid=%uid)) ==== Nur sinnvolle Gruppen anzeigen lassen (whitelist) ==== Dafür muss man im Reiter "Gruppen" folgende LDAP-Abfrage einstellen: (&(objectclass=posixGroup)(|(cn=p_*)(cn=teachers)(cn=5*)(cn=6*)(cn=7*)(cn=8*)(cn=9*)(cn=1*)(cn=k*))) was so viel bedeutet wie: die Objektklasse ist eine posixGruppe UND der cn beginnt ENTWEDER mit p_* ODER ist gleich "teachers" ODER mit 5 ODER mit 6 ODER mit 7 ODER mit 8 ODER mit 9 ODER mit 1 ODER mit "k". Bei uns gibt es eben Klassen mit 5-11 und k1 und k2 als Gruppen. Es gibt da immernoch Gruppen, die man eventuell nicht drin haben will, wie z.B. "p_wifi" aber wenn ich den Suchfilter ergänzt habe, die auszunehmen (zusätzliche Blacklist), dann ist mein PHP abgestürzt...