Externe Authentifizierung - Nextcloud

Autor des Abschnitts: @cweikl , @rettich

Eine Nextcloud-Instanz kann extern oder intern betrieben werden. Hierbei kann diese so konfiguriert werden, dass das Active Directory (AD) der linuxmuster.net 7 als zentrale Authentifizierungsinstanz genutzt wird.

Nachstehende Konfigurationsschritte sind auf der Nextcloud-Instanz auszuführen.

App installieren

Um via LDAP eine Authentifizierung vornehmen zu können, musst Du zuerst oben rechts als admin auf Dein Profil-Icon klicken, dann auf Apps. Es erscheinen links im Menü die Einträge Deine Apps, Aktive Apps, Deaktivierte Apps, App-Pakete. Klicke auf deaktiverte Apps und wähle dort die App LDAP user and group backend aus und aktiviere diese.

Danach klickst Du wieder oben rechts als admin auf Dein Profil-Icon und klickst danach auf Einstellungen. Danach klickst Du links im Menü Verwaltung den Eintrag LDAP/AD Integration.

Die nachstehenden Schritte führst Du dann dort entsprechend aus.

Einstellungen: Server

Hinweis

Die Einstellungen kannst Du schrittweise testen (z.B. Base-DN testen). Hier musst Du ggf. mehrfach den Test durchführen, bevor eine erfolgreiche Bestätigung erfolgt. Z.T. werden vier Versuche - trotz korrekter Einstellungen - benötigt.

Sollte der Nextloud-Server extern betrieben werden, so muss die OPNsense®-Firewall so konfiguriert werden, dass Anfragen über den LDAPs-Port 636 an den Server weitergeleitet werden. Siehe Firewallregeln.

In der Konfigurationsoberfläche ist unter Firewall -> NAT -> Portweiterleitung eine entsprechende Regel anzulegen.

Bind-User

Achtung

Grundsätzlich sollten alle externen Dienste, die via LDAP an das AD angebunden werden, mit einem eigens dafür angelegten Bind-User genutzt werden. Für Nextcloud sollte so z.B. ein Benutzer nextcloud-binduser angelegt werden, der für die Verbindung zum AD genutzt wird. Hinweise hierzu findest Du unter https://github.com/linuxmuster/sophomorix4/wiki/bindusers

Vorgehen zur Anlage eines neuen Bind-Users

  1. Auf dem linuxmuster.net Server folgenden Befehl in der Konsole als Benutzer root absetzen, um einen neuen Benutzer (nextcloud-binduser) für den Bind-Zugriff zu definieren. Das zufällig erzeugte Kennwort wird in einer Datei auf dem Server hinterlegt.

# sophomorix-admin --create-school-binduser nextcloud-binduser --school default-school --random-passwd-save
  1. Gib für den neu angelegten Benutzer einen Kommentar an, um später einen Hinweis zu erhalten, für welchen Zweck der Benutzer genutzt wird.

# sophomorix-user -u nextcloud-binduser --comment "AD access from nextcloud"
  1. Lasse nun die Daten für den neu angelegten Benutzer anzeigen, die dann in den Nextcloud-Einstellungen als bind-user einzutragen sind.

# sophomorix-admin -i -a nextcloud-binduser
  1. Trage auf dem Nextcloud-Server im Konfigurationsmenü die Daten wie in nachstehender Abb. ein. Ändere dabei aber den Bind-User von global-binduser in den neu angelegten Bind-User z.B. nextcloud-binduser:

Trage auf dem Nextcloud-Server im Konfigurationsmenü folgende Werte ein:

Server - Einstellungen

Sollte der Nextcloud Server extern betrieben werden, so ist als URL für den LDAP-Server eine Adresse nach diesem Schema anzugeben: ldaps://hostname.subdomain.domain.topleveldomain - z.B. ldaps://nextcloud.schule.meineschule.de. Als Port ist dann 636 einzutragen, um eine gesicherte Verbindung aufzubauen.

Für den binduser ist die Domäne anzupassen, so dass mit o.g. Beispiel die Eintragungen dort wie folgt aussehen könnten:

CN=nextcloud-binduser,OU=Management,OU=GLOBAL,DC=schule,DC=meineschule,DC=de

In der Zeile darunter ist das Kennwort des binduser einzutragen. Dieses Passwort des neuen Bind-Users erhälst Du mit dem Befehl unter 3., den Du auf dem linuxmuster.net Server absetzen musst. Dass Passwort trägst Du hier ein.

Als Base-DN trägst Du OU=default-school,OU=SCHOOLS, gefolgt von Deiner Domain (z.B. DC=schule,DC=meineschule,DC=de) ein.

Solltest Du auf Deinem Sever ein self-signed certificate verwenden, so sind die Einstellungen unter Fortgeschritten -> Verbindungseinstellungen wichtig, die später in dieser Dokumentation dargestellt werden.

Einstellungen: Benutzer

Wenn Du mit einem Tool wie Apache Directory Studio die Attribute eines Lehrer-Accounts anschaust, siehst Du, dass Du sie an zwei Attributen erkennst: objectClass=person und sophomorixRole=teacher.

Bei Schüler-Accounts ist sophomorixRole=student.

Daraus ergibt sich die Filterregel:

Benutzer - Einstellungen

Trage also unter Benutzer in die LDAP-Abfrage folgendes ein:

(&(objectClass=person)(|(sophomorixRole=teacher)(sophomorixRole=student)))

Um den Zugriff auf die Nextcloud auf Lehrer zu begrenzen, ist unter Benutzer diese LDAP-Abfrage einzutragen.

(&(objectClass=person)(sophomorixRole=teacher))
Benutzer (Lehrer) - Einstellungen

Anmelde-Attribute

Bei der Anmeldung suchen wir den Eintrag, bei dem zusätzlich samaccountname=%uid gilt. In dem Fall ist %uid der Benutzername, den wir bei der Anmeldung eingeben.

Nehme folgende Einstellungen vor:

Anmelde-Attribute
(&(objectClass=person)(sAMAccountName=%uid))

Einstellungen: Gruppe

Wir wollen nicht die Gruppen attic und wificlass. Aber wir wollen Schüler, Lehrer, Projekte und alle Untergruppen der Gruppe students.

Filterregel Gruppe

Nehme folgende Einstellungen vor:

Einstellungen Gruppe Lehrer
(&(objectclass=group)(!(|(cn=attic)(cn=wificlass)))(|(cn=teachers)(cn=role-student)(memberof=CN=students,OU=Students,OU=default-school,OU=SCHOOLS,DC=linuxmuster,DC=lan)(sophomorixType=project)))

Die nachstehende Abfrage liefert nur die Gruppe der Lehrer:

(&(objectclass=group)(cn=teachers))

Einstellungen Experte

Klicke in dem Einstellungsmenü oben rechts auf den Eintrag Experte und trage nachstehende Werte ein:

Einstellungen Experte

Trage dort folgenden Wert ein:

samaccountname

Einstellungen Fortgeschritten

Verbindungseinstellungen

Setze eine Häkchen bei Konfiguartion aktiv und, falls Dein Server mit einem selbstsigniertem Zertifikat arbeitet, auch bei Schalten Sie die SSL-Zertifikatsprüfung aus.

Ordnereinstellungen

In Benutzersucheigenschaften gibst Du sn und givenName ein. So können Benutzer über ihren Vor- und Nachnamen gefunden werden.

Spezielle Eigenschaften

Im Feld Standard-Kontingent wird festgelegt, wie viel Speicher dem Benutzer auf der Nextcloud zur Verfügung steht. Da die Benutzer ihre Daten eigentlich auf dem Schulserver und nicht auf der Nextcloud speichern sollen, hälst Du diesen Wert eher klein.

Das "$home"Platzhalter-Feld brauchst Du, wenn Du die Home-Verzeichnisse auch in der Nextcloud zur Verfügung stellen möchtest.

So, das war’s. Sicherheitshalber gehst Du nochmal auf den Reiter Experte und klicks auf Lösche LDAP-Benutzernamenzuordung und Lösche LDAP-Gruppennamenzuordung.