ADMIN

2021

07

2021-07-01T12:00:00

Container- und Applikationsmanagement

PRAXIS

050

Collaboration

Univention Corporate Server

Nextcloud Hub manuell in Univention Corporate Server integrieren

Passgenau montiert

von Dirk Ahrnke

Veröffentlicht in Ausgabe 07/2021 - PRAXIS

Nextcloud Hub ist ein Werkzeug zum Synchronisieren und Teilen von Dateien. Die Open-Source-Anwendung lässt sich auch in Univention Corporate Server integrieren. Darüber lassen sich sämtliche Nextcloud-Dienste mit geringem Aufwand ausrollen. Um das Tool jedoch beliebig vielen Nutzern zur Verfügung zu stellen, eignet sich der übliche Weg über ein Docker-Image nicht. Wir zeigen die manuelle Bereitstellung von Nexcloud.

Univention Corporate Server (UCS) ist eine Open-Source-Software für Administration und Betrieb von IT-Umgebungen. UCS bringt ein Identitätsmanagement (IDM) für die Nutzerverwaltung mit und ermöglicht die zentrale Verwaltung sämtlicher Ressourcen und Server über die webbasierte Univention Management Console (UMC).
Warum eine manuelle Integration sinnvoll ist
Die Integration von Nextcloud Hub im Univention App Center basiert wie bei vielen anderen Anwendungen auf Docker. Das ist zwar praktisch, bringt jedoch architekturbedingt einige Nachteile mit sich. Dazu zählt zum einen die Limitierung bei der Nutzung von lokalem Festplattenspeicher: Die Docker-Instanz hat nur Zugriff auf die seitens der Integration vorgesehenen Overlay-Mounts der Host-Maschine und kann deshalb nicht ohne Weiteres zusätzliche lokale Festplatten nutzen. Bei der Einbindung von NFS- oder auf Amazon-S3-basiertem Netzwerkspeicher gibt es ähnliche Herausforderungen.
Bei stärkerer Nutzung der Nextcloud-Dienste ist es zudem sinnvoll, horizontal auf mehrere, gleichberechtigte Nextcloud-Instanzen skalieren zu können. Auch eine Herauslösung der Datenbank, die bei der App-Center-Integration auf PostgreSQL setzt, oder eine Nutzung eines hochverfügbaren Datenbank-Clusters – zum Beispiel auf der Basis von Galera – ist nicht von Haus aus unterstützt. Ergo: Eine Docker-basierte Integration ist für den professionellen Einsatz mit sehr vielen Nutzern nicht ideal und mit erheblichen Änderungen am System-Setup verbunden. Nachfolgend beschreiben wir daher, welche Schritte und weitergehenden Überlegungen für eine manuelle Integration von Nextcloud in UCS notwendig und sinnvoll sind.
Univention Corporate Server (UCS) ist eine Open-Source-Software für Administration und Betrieb von IT-Umgebungen. UCS bringt ein Identitätsmanagement (IDM) für die Nutzerverwaltung mit und ermöglicht die zentrale Verwaltung sämtlicher Ressourcen und Server über die webbasierte Univention Management Console (UMC).
Warum eine manuelle Integration sinnvoll ist
Die Integration von Nextcloud Hub im Univention App Center basiert wie bei vielen anderen Anwendungen auf Docker. Das ist zwar praktisch, bringt jedoch architekturbedingt einige Nachteile mit sich. Dazu zählt zum einen die Limitierung bei der Nutzung von lokalem Festplattenspeicher: Die Docker-Instanz hat nur Zugriff auf die seitens der Integration vorgesehenen Overlay-Mounts der Host-Maschine und kann deshalb nicht ohne Weiteres zusätzliche lokale Festplatten nutzen. Bei der Einbindung von NFS- oder auf Amazon-S3-basiertem Netzwerkspeicher gibt es ähnliche Herausforderungen.
Bei stärkerer Nutzung der Nextcloud-Dienste ist es zudem sinnvoll, horizontal auf mehrere, gleichberechtigte Nextcloud-Instanzen skalieren zu können. Auch eine Herauslösung der Datenbank, die bei der App-Center-Integration auf PostgreSQL setzt, oder eine Nutzung eines hochverfügbaren Datenbank-Clusters – zum Beispiel auf der Basis von Galera – ist nicht von Haus aus unterstützt. Ergo: Eine Docker-basierte Integration ist für den professionellen Einsatz mit sehr vielen Nutzern nicht ideal und mit erheblichen Änderungen am System-Setup verbunden. Nachfolgend beschreiben wir daher, welche Schritte und weitergehenden Überlegungen für eine manuelle Integration von Nextcloud in UCS notwendig und sinnvoll sind.
UCS-Benutzer überführen
Als Erstes müssen Sie Nextcloud so konfigurieren, dass die in UCS definierten Nutzer und Gruppen auch in Nextcloud zur Verfügung stehen. Da UCS diese Informationen in einem Verzeichnis auf der Basis von OpenLDAP speichert, liegt es nahe, dafür die "LDAP Application" [1] von Nextcloud zu verwenden. Diese Methode kommt grundsätzlich auch bei der Nextcloud-Integration aus dem Univen-tion-App-Center zum Einsatz. Dabei erfolgt der Vorgang wegen der Automatisierung der Konfiguration allerdings über das "occ"-Kommandozeilenwerkzeug. Falls noch nicht vorhanden, müssen Sie deshalb die Nextcloud-App "LDAP user and group backend" installieren und aktivieren.
Die oben genannte LDAP-Dokumentation erwähnt einige elementare Konfigurationsoptionen für die LDAP-Verbindung. Zunächst benötigen Sie den DNS-Namen oder die IP-Adresse des LDAP-Servers. Hier sind Sie vielleicht versucht, den ersten Domaincontroller einer UCS-Domäne ("DC Master" oder "Primary Directory Node") einzutragen. Ist jedoch die Nutzung des Dienstes durch mehrere tausend Anwender geplant, sollten Sie einen alternativen Domaincontroller auswählen. Der Grund ist, dass Nextcloud zwar versucht, bereits erhaltene LDAP-Informationen zu speichern, was aber auf einem gut ausgelasteten Nextcloud-Server so viele Anfragen erzeugt, dass diese viele Ressourcen auf dem LDAP-Server benötigen. Um das Problem zu vermeiden, ist es sinnvoll bei diesem Setup-Schritt einen anderen Domaincontroller einzutragen.
Sicherer LDAP-Einsatz
Der nächste Punkt ist die Auswahl des Ziel-Ports auf dem LDAP-Server sowie in direktem Zusammenhang damit die TLS-gesicherte Übertragung der Nutzerinformationen aus dem Verzeichnisdienst. Hier ist der LDAP-Standard-Port 389, den Nextcloud zur Nutzung vorschlägt, nicht die beste Wahl. Dieser Port wird nur auf Systemen, in denen kein Active-Directory-kompatibler Domaincontroller läuft, von OpenLDAP bedient. In einer solchen Konstellation erkennt Nextcloud vermutlich einen Windows-Server. Das kann zwar funktionieren, schränkt aber die weiteren Konfigurationsoptionen ein.
Besser geeignet ist der Port 7389, der immer auf jedem UCS-Domaincontroller von OpenLDAP verwendet wird. Nun sind die Ports 389 und 7389 aber die, auf denen in der Regel Klartext gesprochen wird, und eine Absicherung der Kommunikation gibt es dort nur optional über StartTLS. Dabei baut sich die Verbindungssicherheit jedoch erst nach dem initialen Aufbau einer Klartextverbindung auf. Dies mag ausreichend erscheinen, bietet aber keine Transparenz darüber, ob die Verbindung TLS-gesichert ist oder nicht. Auf der sicheren Seite sind Sie nur, wenn Sie explizit TLS-Ports verwenden. Für LDAP ist das Port 636 und unter UCS Port 7636. Aus Sicherheitsgründen sollten Sie daher im betreffenden Feld den Server in der Form "ldaps://directorynode.example.com" und als Port 7636 eintragen.
Damit das aber funktioniert, müssen Sie die LDAP-Konfiguration des Nextcloud-Servers noch mit dem Zertifikat von UCS vertraut machen. UCS-Systeme erledigen das automatisch während des Domain-Joins. Dort, genauer in der Datei "/etc/ ldap/ldap.conf", sehen Sie, dass in der Konfiguration "TLS_CACERT" der Pfad zu einem Zertifikat abgelegt ist. Dieses Zertifikat ist das der UCS-Root-CA und unter anderem in der Univention Management Console verlinkt. Im einfachsten Fall laden Sie es mit dem Befehl
wget https://<primarydirectorynode.example.com>/ucs-root-ca.crt
herunter und speichern es zum Beispiel unter "/etc/ssl/certs". Nach dem Anpassen der oben genannten Konfiguration in der ldap.conf-Datei sollte eine verschlüsselte LDAPS-Verbindung aufgebaut werden können. Sie prüfen die korrekte Konfiguration an dieser Stelle auf der Kommandozeile mit dem "ldapsearch"-Befehl.
Bild 1: Im Server-Tab sollte ein Konto mit geringen Privilegien eingerichtet werden, da das zugehörige Passwort im Klartext durchs Netz wandert.
Konten mit wenig Privilegien nutzen
Damit eine Anwendung Nutzer identifizieren kann, entsteht in den meisten Fällen zunächst eine initiale LDAP-Verbindung. Mittlerweile ist es aus Sicherheitsgründen jedoch nicht mehr üblich, ein LDAP-Verzeichnis für anonyme Leser zugänglich zu machen. Das ist auch unter UCS der Fall. Applikationen, die jedoch auf einem sogenannten "anonymous bind" beharren, lassen sich unter Angabe der Quell-IP-Adresse mit der UCR-Variablen "ldap/acl/read/ips" freischalten. Weitere Details dazu finden sich im UCS-Handbuch [2]. Für Nextcloud ist dies allerdings nicht nötig. Hier geben Sie einfach ein Bind-DN an. Sie nutzen also ein spezielles Konto, das das LDAP-Verzeichnis durchsuchen kann.
Beispielkonfigurationen für LDAP mit Nextcloud, die sich im Internet finden, zeigen an dieser Stelle ein "uid=admin,...". Diese Einstellung ist jedoch mit Vorsicht zu genießen, da davon auszugehen ist, dass darin das Kennwort eines sehr hoch privilegierten Nutzerkontos im Klartext vorliegt, das im Falle einer ungesicherten Verbindung zudem regelmäßig durchs Netz geschickt wird. Die aktuelle "LDAP Application" von Nextcloud benötigt keinerlei Schreibrechte im LDAP-Verzeichnis selbst. Sie sind also gut beraten, ein separates, niedrig privilegiertes Dienstkonto zu verwenden. Dessen Einrichtung unter UCS ist in der zugehörigen Dokumentation [3] detailliert beschrieben. Dort finden Sie auch, wie sich sowohl das Konto also auch das mit ausreichender Entropie versehene Kennwort vorab testen lassen. Damit ermitteln Sie, wie der in das Feld "User DN" einzutragende "Distinguished Name" des Dienstkontos (zum Beispiel "uid=ldapsearch-nextcloud,cn=users,dc= example,dc=com") sowie die LDAP-Basis für das Feld "Base DN" (zum Beispiel "dc= example,dc=com") lauten.
LDAP-Filter auswählen
Der nächste Schritt der Konfiguration ist die Angabe eines passenden LDAP-Filters zur Auswahl der Nutzerkonten, die Nextcloud verwenden darf. Die Nextcloud-App aus dem Univention-App-Center
bedient sich einer Erweiterung des LDAP-Verzeichnisses, um zusätzliche Informationen (wie zum Beispiel die Berechtigungen und Quota-Informationen) abzulegen und zu nutzen. Unter Beachtung der Lizenzbedingungen und mit den Hinweisen aus der Developer Reference [4] von Univention könnten Sie durchaus die dazu notwendige Nextcloud-Schemaanpassung [5] von GitHub laden und manuell konfigurieren. Damit diese Erweiterung in der Managementkonsole oder auf der Kommandozeile zugänglich wird, müssen Sie bestimmte Attribute [6] definieren. Zudem haben Sie die Möglichkeit, ohne die Manipulation des LDAP-Schemas auszukommen und stattdessen die Objektklasse "univentionFreeAttributes" [7] zu nutzen.
Bestehen bei Ihnen die Anforderungen an einen granularen Filter nicht, können Sie einen LDAP-Filter auf der Basis von existierenden Attributen und Zuordnungen modellieren. Als erstes Kriterium dienen oft Objektklassen, angefangen mit "inetOrgperson" oder auch "organizationalPerson". Eine weitere gebräuchliche Selektionsmethode führt über Gruppenmitgliedschaften. Die Nextcloud-Dokumentation erklärt, dass dazu das "member-of-overlay" im LDAP-Server aktiviert sein muss. Dies ist unter UCS für alle Installationen seit Version 4.3.0 der Fall. Damit wäre der im Nextcloud-Handbuch angegebene LDAP-Filter
 (&(objectClass=inetOrgPerson)(memberOf=cn=nextcloudusers,ou=groups,dc=example,dc=com))
geeignet. Unter UCS liegen die Standardgruppen allerdings in "cn=groups". Bei der Suche nach einem passenden LDAP-Filter ist die Schaltfläche "Einstellungen überprüfen und Benutzer zählen" sehr hilfreich.
Ein abschließender Tipp: Bei einer nachträglichen Justierung des Filters empfiehlt es sich ebenso wie bei der Ersteinrichtung, einen lokalen Nextcloud-Nutzer und kein über LDAP definiertes Administrationskonto zu verwenden. Da alle Änderungen sofort gespeichert werden, sperren Sie sich ansonsten bei einem Konfigurationsfehler sehr leicht aus.
Bild 2: Die LDAP-Filter des Users-Tabs erlauben die granulare Zugriffssteuerung auf Nextcloud.
Feintuning der Integration
Unter dem Tab "Anmeldeattribute" sollten Sie neben dem vorgewählten "LDAP/AD-Benutzername" auch eine Anmeldung über "LDAP/AD E-Mail-Adresse" zulassen. Dies bewirkt eine Änderung des LDAP-Filters hinsichtlich der neben dem Attribut geltenden primären E-Mail-Adresse ("mailPrimaryAddress"). Dieses Attribut hält bei einer E-Mail-Integration unter UCS sowohl die Haupt-SMTP-Adresse des Kontos vor als auch eine optional unter den Kontaktinformationen frei definierbare E-Mail-Adresse. Diese lässt sich zugleich zur Anmeldung an Nextcloud verwenden und ist für Anwender meist leichter zu merken als ein zusätzlicher Benutzername.
Um die Administration von Rechten auf Nextcloud-Apps oder Freigaben zu vereinfachen, kann ein Abgleich der Gruppen mit dem zentralen LDAP-Verzeichnis hilfreich sein. Wie beim Filter für Benutzer kommt es lediglich darauf an, dass Sie passende Objektklassen und optional bestimmte Gruppen zur Synchronisation auswählen.
Die bislang durchgeführten Konfigurationsschritte sollten bereits zu einer funktionierenden LDAP-Anbindung geführt haben. Diese hat allerdings noch einen kleinen Schönheitsfehler, den Sie möglichst gleich am Anfang korrigieren sollten: In den Experteneinstellungen der LDAP-Konfiguration finden Sie den Hinweis, dass Nextcloud standardmäßig das "UUID"-Attribut als internen Benutzernamen verwendet. OpenLDAP benutzt das Attribut "entryUUID" zur Definition eines universell eindeutigen Identifikators. Diese Eindeutigkeit macht es allerdings schwerer, einem Eintrag wie "597ae2f6-16a6-1027-98f4-d28b5365dc14" auf den ersten Blick ein LDAP-Konto zuzuordnen. Alternativ können Sie die "uid", also den LDAP-Benutzernamen, als internen Namen in Nextcloud angeben.
Eine hinsichtlich der Verfügbarkeit redundant aufgebaute UCS-Umgebung stellt immer mehrere Domaincontroller (Directory Nodes) mit einer kompletten Kopie des LDAP-Datenbestands bereit. Damit ist es möglich, LDAP-basierte Dienste hochverfügbar anzubinden – auch Nextcloud bietet eine solche Option. Ein unter dem Tab "Fortgeschritten" eingetragener Backup-Host [8] benutzt die beim Hauptserver hinterlegte Konfiguration und übernimmt im Fehlerfall dessen Aufgaben.
Mit Nextcloud-Bordmitteln können Sie jedoch keine echte Lastverteilung der LDAP-Verbindungen erreichen. Hierzu müssen Sie bei Bedarf auf einen passenden Loadbalancer zurückgreifen.
Fazit
Bei der Einrichtung von Nextcloud ist ein gut geplantes und durchdachtes Vorgehen empfehlenswert. Damit der Datei-Sharing-Dienst sicher funktioniert, gilt es, LDAP richtig einzubinden, um so UCS-Benutzerkonten Nextcloud zur Verfügung zu stellen. Mit den hier gezeigten Tipps und Erklärungen sollte das Aufsetzen eines leistungsfähigen Nextcloud-Servers jedoch sicher gelingen.
(jp)
Dirk Ahrnke ist Open-Source-Software-Consultant bei Univention.
Link-Codes
[2] Zugriffskontrolle auf das LDAP-Verzeichnis: https://docs.software-univention.de/handbuch-4.4.html#domain-ldap:acls
[6] Erweiterung der UMC mit erweiterten Attributen: https://docs.software-univention.de/handbuch-4.4.html#central:extendedattrs/