From 7551912bd322bca919355831d0551002187aca25 Mon Sep 17 00:00:00 2001 From: Bernd Kalbfuss Date: Wed, 7 Apr 2021 17:34:36 +0200 Subject: Adjusted size of ldap configuration screenshot. --- Infrastruktur/Cloud-Server.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Infrastruktur/Cloud-Server.mdwn b/Infrastruktur/Cloud-Server.mdwn index 0b7c7aea..6cd052a9 100644 --- a/Infrastruktur/Cloud-Server.mdwn +++ b/Infrastruktur/Cloud-Server.mdwn @@ -436,7 +436,7 @@ Die Datei */etc/crontab* wurde um den folgenden Eintrag erweitert, damit Hintegr ### LDAP -![ldap-config.png]() +![ldap-config.png size="800x"]() ### Apps -- cgit v1.2.1 From 098c4365844c6a8bb8ddfa456b64d2bef7b8d654 Mon Sep 17 00:00:00 2001 From: Bernd Kalbfuss Date: Wed, 7 Apr 2021 17:45:52 +0200 Subject: Corrected section of Nextcloud LDAP configuration. --- Infrastruktur/Cloud-Server.mdwn | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Infrastruktur/Cloud-Server.mdwn b/Infrastruktur/Cloud-Server.mdwn index 6cd052a9..0a9928ae 100644 --- a/Infrastruktur/Cloud-Server.mdwn +++ b/Infrastruktur/Cloud-Server.mdwn @@ -434,9 +434,13 @@ Die Datei */etc/crontab* wurde um den folgenden Eintrag erweitert, damit Hintegr */5 * * * * root /usr/bin/docker exec nextcloud runuser -u www-data -- php -f /var/www/html/cron.php >/dev/null 2>&1 ... -### LDAP +### Authenitifizierung via LDAP -![ldap-config.png size="800x"]() +In den Einstellungen unter "LDAP / AD Integration" wurde die Authentifizierung gegen den lokal installierten *LDAP*-Server aktiviert: + +[[!img ldap-config.png align="left" alt=""]] + +***Warnung:*** Eine inkorrekte LDAP-Konfiguration - insbesondere die unsachgemäße Manipulation einer existierenden Konfiguration - kann dazu führen, dass die NextCloud-Instanz nicht mehr startet. ### Apps -- cgit v1.2.1 From aa2565decd27ec642ffb6a2ac15fcae3dd315f00 Mon Sep 17 00:00:00 2001 From: Bernd Kalbfuss Date: Wed, 7 Apr 2021 17:50:09 +0200 Subject: Fix Nextcloud LDAP configuration. --- Infrastruktur/Cloud-Server.mdwn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Infrastruktur/Cloud-Server.mdwn b/Infrastruktur/Cloud-Server.mdwn index 0a9928ae..cc4531e1 100644 --- a/Infrastruktur/Cloud-Server.mdwn +++ b/Infrastruktur/Cloud-Server.mdwn @@ -438,7 +438,7 @@ Die Datei */etc/crontab* wurde um den folgenden Eintrag erweitert, damit Hintegr In den Einstellungen unter "LDAP / AD Integration" wurde die Authentifizierung gegen den lokal installierten *LDAP*-Server aktiviert: -[[!img ldap-config.png align="left" alt=""]] +[[!img ldap-config.png align="left" alt="LDAP configuration screenshot"]] ***Warnung:*** Eine inkorrekte LDAP-Konfiguration - insbesondere die unsachgemäße Manipulation einer existierenden Konfiguration - kann dazu führen, dass die NextCloud-Instanz nicht mehr startet. -- cgit v1.2.1 From 98e638564482dd7a4114231f5ae223e58bf22995 Mon Sep 17 00:00:00 2001 From: Bernd Kalbfuss Date: Sun, 11 Apr 2021 09:33:56 +0200 Subject: =?UTF-8?q?Aktualisierung/Erg=C3=A4nzug=20der=20Cloud-Server-Dokum?= =?UTF-8?q?entation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Infrastruktur/Cloud-Server.mdwn | 309 +++++++++++++++++++++++++++++++------ Infrastruktur/ldap-config.png.mdwn | Bin 87422 -> 61195 bytes 2 files changed, 262 insertions(+), 47 deletions(-) diff --git a/Infrastruktur/Cloud-Server.mdwn b/Infrastruktur/Cloud-Server.mdwn index cc4531e1..f48af0b3 100644 --- a/Infrastruktur/Cloud-Server.mdwn +++ b/Infrastruktur/Cloud-Server.mdwn @@ -4,11 +4,11 @@ Der Cloud-Server dient zum Austausch von Dateien und Informationen zwischen den Der Cloud-Server wurde von Bernd Kalbfuss (aka Langweiler) eingerichtet. Er wird aktuell von den folgenden Personen administriert: -| Name | Spitzname | E-Mail | -| --------------- | ---------- | ------------------------- | -| Bernd Kalbfuss | Langweiler | langweiler@rueblitorte.de | -| Fabian Thoma | | f@bianthoma.me | -| Cedric Spindler | | cedric.spindler@gmail.com | +| Name | Spitzname/Benutzername | E-Mail | +| --------------- | ---------------------- | ------------------------- | +| Bernd Kalbfuss | langweiler | langweiler@rueblitorte.de | +| Fabian Thoma | fabianthoma | f@bianthoma.me | +| Cedric Spindler | zedcat | cedric.spindler@gmail.com | ## Hardware @@ -47,7 +47,7 @@ Der Server ist über eine Gigabit-Ethernetschnittstelle mit dem lokalen Netz der | Netzwerk | Hostnamen | IPv4 | Bemerkung | | -------- | ------------------------------------------------------------ | ------------- | ---------------------------- | -| LAN | cloud.lab.starship-factory.ch
ldab.lab.starship-factory.ch | 100.64.1.200 | Interne Adresses des Servers | +| LAN | cloud.lab.starship-factory.ch
ldab.lab.starship-factory.chsind | 100.64.1.200 | Interne Adresses des Servers | | WAN | cloud.lab.starship-factory.ch
ldap.lap.starship-factory.ch | 5.226.148.123 | Externe Adresse des Routers | Auf dem WAN-Router sind für IPv4 die folgenden Port-Weiterleitungen eingerichtet: @@ -60,6 +60,16 @@ Auf dem WAN-Router sind für IPv4 die folgenden Port-Weiterleitungen eingerichte ## Grundkonfiguration +Als Betriebssystem kommt *GNU/Linux* zum Einsatz. Als Distribution wird [OpenMediaVault](https://www.openmediavault.org/), welches auf *Debian* basiert, verwendet. + +Soweit nicht anders angegeben, wurden zusätzliche Pakete/Software stets aus dem offiziellen Debian-Repository mittels *apt* installiert. Aktuell sind die folgenden Komponenten zusätzlich installiert: + +* System Security Services Daemon +* Uncomplicated Firewall +* Fail2Ban +* Let's encrypt Certbot +* Docker + ### Volumen und Partitionierung Die Laufwerke sind wie folgt partitioniert und in das Dateisystem eingebunden: @@ -79,54 +89,167 @@ Die Laufwerke sind wie folgt partitioniert und in das Dateisystem eingebunden: | | | md0p2 | / | | | 3 | sdd | md1 | /srv/dev-disk-by-id-md-name-debian-1 | RAID0 device | - Die RAID-Speicher sind als Soft-Raids mittels *md* konfiguriert. Der Bootloader *Grub* ist im MBR des Laufwerks *sda* installiert. Er ist so konfiguriert, dass er aus der Partition *sda1* bootet. +Das Verzeichnis */var/lib/docker/volumes* wurde mittels eines symbolischen Links vom Wurzeldateisystem auf *md0p2* in das Verzeichnis */srv/dev-disk-by-id-md-name-debian-1/docker/volumes* auf der grösseren Datenpartition *md1* verlagert. -### Betriebssystem +### Openmediavault -Als Betriebssystem kommt *GNU/Linux* zum Einsatz. Als Distribution wird [OpenMediaVault](https://www.openmediavault.org/), welches auf *Debian* basiert, verwendet. Die Web-Konfigurationsoberfläche von *OpenMediaVault* ist über die folgenden Adressen zu erreichen: +Die Web-Konfigurationsoberfläche von *OpenMediaVault* ist über die folgenden Adressen zu erreichen: | Protokoll | URL | | --------- | --------------------- | | http | http://:5000/ | | https | https://:5001/ | -Die Anfrage via *http* wird automatisch auf *https* umgeleitet. Die Anmeldung erfolgt mittels des Benutzers *admin* oder einem anderen zuvor angelegten Benutzerkontos. +Die Anfrage via *http* wird automatisch auf *https* umgeleitet. Bisher wurde nur ein selbstgezeichnetes Zertifikat hinterlegt, so dass beim ersten Zugriff eine Ausnahmeregel eingerichtet werden muss. -Das Verzeichnis */var/lib/docker/volumes* wurde mittels eines symbolischen Links vom Wurzeldateisystem auf *md0p2* in das Verzeichnis */srv/dev-disk-by-id-md-name-debian-1/docker/volumes* auf der grösseren Datenpartition *md1* verlagert. +Die Anmeldung erfolgt mittels des Benutzers *admin* oder eines anderen zuvor angelegten Benutzerkontos. Die System-Administratoren wurden der Unix-Gruppe *openmediavault-admin* hinzugefügt, um ihnen administrative Rechte innerhalb der Konfigurationsoberfläche zu gewähren. + +Die Konfiguration von OMV wurde mittels der folgenden Einträge in der Systemkonfigurationsdatei angepasst: + +**/etc/default/openmediavault** + + ... + OMV_NFSD_MOUNTDOPTS="-p 32767" + +Der Eintrag für *OMV_NFSD_MOUNTDOPTS* zwingt den *NFS-mountd* auf einen festen Port, so dass eine statische Firewall-Regel angelegt werden kann. Informationen zur erweiterten Konfiguration können dem [OMV-Handbuch](https://openmediavault.readthedocs.io/en/5.x/various/advset.html) entnommen werden. + +Die restliche Konfiguration wurde mittels der Konfigurations-Oberfläche vorgenommen und ist im Folgenden nicht weiter dokumentiert. ### Sicherheit -Um die Sicherheit zu erhöhen, wurde die *Uncomplicated Firewall (ufw)* installiert und aktiviert. Die *default policy* ist *deny*. Die folgenden Ports wurden für den externen Zugriff explizit freigegeben: +Das Authentifizierungssystem ist um den *System Security Services Demon (sssd)* erweitert, um die Authentifizierung gegen *LDAP* zu ermöglichen. Die LDAP-Benutzer werden lokal zwischengespeichert, so dass die Autentifizierung auch im Fall eines Ausfalls des LDAP-Servers weiterhin möglich ist. + +**/etc/sssd/sssd.conf** + + [sssd] + config_file_version = 2 + services = nss, pam + domains = starship-factory.ch + #debug = 7 + + [nss] + filter_groups = root + filter_users = root + #debug = 7 + + [pam] + + [domain/starship-factory.ch] + # SSSD can resolve user information from a number of different sources + # such as LDAP, local files, and Active Directory. This option sets + # the domain's source of identity information. + id_provider = ldap + + # As with identity providers, SSSD can authenticate in a variety of ways. + # By default, SSSD will use the value of id_provider. + #auth_provider = ldap + + # The access provider controls the source for determining who is allowed + # to access the system. Even if a user successfully authenticates, if they + # don't meet the criteria provider by the access provider, they will be + # denied access. + access_provider = ldap + + # The verbosity of this domains log file. + #debug = 7 + + # Enumeration is discouraged for performance reasons. + enumerate = true + + # The URI(s) of the directory server(s) used by this domain. + ldap_uri = ldaps://ldap.lab.starship-factory.ch + + # The LDAP search base you want SSSD to use when looking + # for entries. There are options for search bases for various types + # of searches, such as users. Read the sssd-ldap man page for details. + ldap_search_base = dc=starship-factory,dc=ch + + # The DN used to search your directory with. It must have read access to + # everything your system needs. + ldap_default_bind_dn = cn=omv-ldap-user,ou=system-users,dc=starship-factory,dc=ch + + # The password of the bind DN. + ldap_default_authtok = + + # This enables or disables credential caching. I.e. after successfully + # authenticating a user, the credentials will be stored locally. If the + # domain is unavailable, users will still be able to login using the + # cached information. + cache_credentials = true + + # By default, the credential cache never expires. If you want sssd to + # remove cached credentials, this option will cause them to expire + # after the number of days it is set to. + #account_cache_expiration = 0 + + # These define the criteria the access provider uses to control who + # is allowed to login. In this case, any user that matches the + # LDAP filter in this example will be allowed access. Any entry + # that has an objectClass of posixAccount will be allowed access. + ldap_access_order = filter + ldap_access_filter = (objectClass=posixAccount) + + # The file containing CA certificates you want sssd to trust. + ldap_tls_cacert = /etc/ssl/certs/ca-certificates.crt + + # The TLS ciphers you wish to use. SSSD uses OpenSSL style cipher + # suites + #ldap_tls_cipher_suite = HIGH + + # This defines how sssd will handle server certificates. Demand means + # that we are requiring the host portion of the URI to match the + # certificate's subject or an SAN, the current time is within the valid + # times on the certificate, and that it's signing chain ends with a CA + # in the file defined by ldap_tls_cacert. + ldap_tls_reqcert = demand + + # Use this if users are being logged in at /. + # This example specifies /home/DOMAIN-FQDN/user as $HOME. Use with pam_mkhomedir.so + override_homedir = /home/%u + + # Always use bash shell. This is required since Synology diskstation + # returns "sh" as the default setting and the shell cannot be modified + # in the web interface. + override_shell = /bin/bash + +Um die Sicherheit zu erhöhen, ist die *Uncomplicated Firewall (ufw)* installiert und aktiviert. Die *default policy* ist *deny*. Die folgenden Ports bzw. Anwendungen sind für den externen Zugriff freigegeben: ```3 To Action From -- ------ ---- -22/tcp ALLOW Anywhere -80/tcp ALLOW Anywhere -443/tcp ALLOW Anywhere Samba ALLOW Anywhere 21/tcp ALLOW Anywhere -115/tcp ALLOW Anywhere 5001 ALLOW Anywhere 5000 ALLOW Anywhere -389 ALLOW 172.0.0.0/8 -22/tcp (v6) ALLOW Anywhere (v6) -80/tcp (v6) ALLOW Anywhere (v6) -443/tcp (v6) ALLOW Anywhere (v6) +32767 ALLOW Anywhere +NFS ALLOW Anywhere +SSH ALLOW Anywhere +WWW ALLOW Anywhere +WWW Secure ALLOW Anywhere +LDAP ALLOW Anywhere +LDAPS ALLOW Anywhere Samba (v6) ALLOW Anywhere (v6) 21/tcp (v6) ALLOW Anywhere (v6) -115/tcp (v6) ALLOW Anywhere (v6) 5001 (v6) ALLOW Anywhere (v6) 5000 (v6) ALLOW Anywhere (v6) +32767 (v6) ALLOW Anywhere (v6) +NFS (v6) ALLOW Anywhere (v6) +SSH (v6) ALLOW Anywhere (v6) +WWW (v6) ALLOW Anywhere (v6) +WWW Secure (v6) ALLOW Anywhere (v6) +LDAP (v6) ALLOW Anywhere (v6) +LDAPS (v6) ALLOW Anywhere (v6) ``` -Weiterhin wurde das Paket *fail2ban* installiert, um *"Brute force"*-Angriffen vorzubeugen. Die Möglichkeit der Anmeldung von *root* mittels *SSH* wurde deaktiviert. +Der Port 21 ist für den FTP-Dienst geöffnet, die Ports 5000 und 5001 für die OMV-Konfigurationsoberfläche (*http* und *https*). Der Port 32767 wird für die Verbindung zum NFS-mountd benötigt. + +Weiterhin ist das Paket *fail2ban* installiert, um *"Brute force"*-Angriffen vorzubeugen. Die Möglichkeit der Anmeldung von *root* mittels *SSH* wurde deaktiviert. -### Nginx +### Reverse Proxy -Auf dem Cloud-Server ist ein *Nginx*-Web-Server installiert und als inverser Proxy konfiguriert. Über diesen werden externe *http*-Anfragen an die Docker-Container weitergeleitet und gegebenenfalls verschlüsselt (*https*). Konkret ermöglicht der Reverse Proxy den Zugriff auf die *NextCloud*-Instanz sowie die Konfigurationsoberfläche für den *LDAP*-Server. +Auf dem Cloud-Server ist ein *Nginx*-Web-Server installiert und als inverser Proxy konfiguriert. Über diesen werden externe *http*-Anfragen an die Docker-Container weitergeleitet und gegebenenfalls verschlüsselt (*https*). Konkret ermöglicht der Reverse Proxy den Zugriff auf die *NextCloud*-Instanz sowie die Konfigurationsoberflächen für den *LDAP*-Server. Die Konfiguration ist in der Datei */etc/nginx/sites-available/nextcloud-reverse-proxy* hinterlegt. Die Konfiguration ist durch Verlinkung in das Verzeichnis */etc/nginx/sites-enabled* aktiviert. @@ -191,8 +314,26 @@ Die Konfiguration ist in der Datei */etc/nginx/sites-available/nextcloud-reverse # Log Location. the Nginx User must have R/W permissions. Usually by ownership. access_log /var/log/nginx/access.log; - # Forward to NextCloud server - location / { + # Forward to LDAP account manager + location / { + # Allow access from local network, but deny rest of the world. + allow 100.64.0.0/16; + deny all; + + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_pass http://cloud.lab.starship-factory.ch:8100/; + proxy_read_timeout 30; + } + + # Forward to phpldapadmin + location /phpldapadmin/ { + # Allow access from local network, but deny rest of the world. + allow 100.64.0.0/16; + deny all; + proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; @@ -202,6 +343,8 @@ Die Konfiguration ist in der Datei */etc/nginx/sites-available/nextcloud-reverse } } +***Hinweis:*** Aus Sicherheitsgründen wurde der Zugriff auf die LAP-Konfigurationsoberflächen auf das lokale Netzwerk begrenzt. + Die SSL-Zertifikate wurden mittels des Let's Encrypt *certbot* erstellt und werden regelmässig erneuert. Hier zu ist das folgende Skript hinterlegt: **/etc/cron.monthly/renew-certificates** @@ -238,26 +381,44 @@ Um den Rechner in einen für das Backup sicheren Modus zu bringen und im Anschlu **/usr/local/bin/production-mode** - #!/bin/bash - - echo "Switching host to production mode." - - # Unpause critical docker containers - /usr/bin/docker unpause database - /usr/bin/docker unpause nextcloud +```3 +#!/bin/bash + +echo "Switching host to production mode." + +# Unpause critical docker containers +/usr/bin/docker unpause database +/usr/bin/docker unpause nextcloud +``` + +Um zu verhindern, dass der Server nach einem fehlgeschlagenen/abgebrochenen Backup im Backup-Modus verbleibt, wurde das *crontab* um den folgenden Eintrag erweitert: + +**/etc/crontab** + + ... + # Unpause docker containers in case of failed backup + 00 5 * * * root /usr/local/bin/production-mode >/dev/null 2>&1 + ... ## LDAP -Zur Benutzerverwaltung und Authentifizierung wurde auf dem Cloud-Server ein *OpenLDAP*-Server sowie die Konfigurationsoberfläche *phpldapadmin* installiert. Der LDAP-Server kann lokal auf dem Cloud-Server via *ldap* über der Port 389 unverschlüsselt sowie allgemein via *ldaps* über den Port 636 verschlüsselt angesprochen werden. Die Konfigurationsoberfläche ist über den Reverse Proxy unter der Adresse https://ldap.lab.starship-factory.ch/ zu erreichen. +Zur Benutzerverwaltung und Authentifizierung wurde auf dem Cloud-Server ein *OpenLDAP*-Server sowie die Konfigurationsoberflächen *LDAP Account Manager* und *phpldapadmin* installiert. + +Der LDAP-Server kann via *ldap* über der Port 389 unverschlüsselt sowie via *ldaps* über den Port 636 verschlüsselt angesprochen werden. *STARTTLS* auf dem Port 389 wurde bisher **nicht** konfiguriert. + +Die Konfigurationsoberfläche *LDAP Account Manager* ist über den Reverse Proxy unter der Adresse https://ldap.lab.starship-factory.ch/ zu erreichen, die Konfigurationsoberfläche *phpldapadmin* unter der der Adresse https://ldap.lab.starship-factory.ch/phpldapadmin/. + +Im Normallfall sollte die Konfigurationsoberfläche *LDAP Account Manager* verwendet werden, da diese einen wesentlich höheren Komfort bietet. Für Spezialfälle (z.B. die Verwaltung der Gruppen für die Administratoren und System-Benutzer) muss phpldapadmin verwendet werden, da der LDAP Account Manager entsprechende Funktionen in der freien Version nicht unterstützt. ### Docker -Der *OpenLDAP*-Server sowie die Administrationsoberfläche *phpldapadmin* wurden mittels *Docker* eingerichtet. Konkret wurden hierfür die folgenden Abbilder von *hub.docker.com* mittels `docker pull` bezogen: +Der *OpenLDAP*-Server sowie die Administrationsoberflächen *LDAP Account Manager* und *phpldapadmin* wurden mittels *Docker* eingerichtet. Konkret wurden hierfür die folgenden Abbilder von *hub.docker.com* mittels `docker pull` bezogen: -| Repository | Tag | Image ID | Size | -| ------------------- | ------ | ------------ | ----- | -| osixia/phpldapadmin | latest | dbb580facde3 | 309MB | -| osixia/openldap | latest | 31d1d6e16394 | 257MB | +| Repository | Tag | Image ID | Size | +| ---------------------- | ------ | ------------ | ----- | +| osixia/phpldapadmin | latest | dbb580facde3 | 309MB | +| osixia/openldap | latest | 31d1d6e16394 | 257MB | +| ldapaccountmanager/lam | stable | 8b4da396b5eb | 384MB | Die Container wurden mittels `docker-compose` anhand der folgenden Datei erstellt: @@ -270,6 +431,7 @@ Die Container wurden mittels `docker-compose` anhand der folgenden Datei erstell conf: certs: admin: + lam: services: ldap: @@ -297,7 +459,7 @@ Die Container wurden mittels `docker-compose` anhand der folgenden Datei erstell container_name: phpldapadmin restart: always volumes: - - admin:/var/www/phpldapadmin + - adminhinzufügt:/var/www/phpldapadmin links: - ldap:ldap-host ports: @@ -306,6 +468,26 @@ Die Container wurden mittels `docker-compose` anhand der folgenden Datei erstell environment: - PHPLDAPADMIN_LDAP_HOSTS=ldap-host - PHPLDAPADMIN_HTTPS=false + + lam: + image: ldapaccountmanager/lam:stable + container_name: lam + restart: always + volumes: + - lam:/var/lib/ldap-account-manager/config + ports: + - "8100:80" + environment: + - LDAP_DOMAIN=starship-factory.ch + - LDAP_ORGANISATION="Starship Factory" + - LDAP_BASE_DN=dc=starship-factory,dc=ch + - LDAP_USERS_DN=ou=users,dc=starship-factory,dc=ch + - LDAP_GROUPS_DN=ou=groups,dc=starship-factory,dc=ch + - LDAP_SERVER=ldaps://ldap.lab.starship-factory.ch:636 + - LAM_DISABLE_TLS_CHECK=false + - LDAP_USER=cn=admin,dc=starship-factory,dc=ch + - LAM_PASSWORD= + - LAM_LANG=de_DE ***Hinweis:*** Wird der OpenLDAP-Container mittels `docker-compose down` und im Anschluss `docker-compose up -d` erneut erstellt, so kommt es zu einer Fehlermeldung, da die Datei *ldap.conf* im Volumen *ldap_conf* fehlt. Es besteht lediglich ein symbolischer Link auf eine Datei, welche nicht mehr existiert. Der LDAP-Server startet in diesem Fall nicht, wie mittels `docker logs -f openldap` nachvollzogen werden kann. Um den Fehler zu beheben, muss die Datei aus dem Ordner *ldap_conf.bak* ergänzt werden. @@ -334,20 +516,49 @@ docker restart ${LDAP_CONTAINER} Weiterhin wurden in der Konfiguration des *OpenLDAP*-Servers der Gruppe *cn=ldap-admins,ou=groups,dc=starship-factory,dc=ch* vollständige Schreibrechte eingeräumt sowie der Gruppe *cn=ldap-auth-users,ou=groups,dc=starship-factory,dc=ch* vollständge Leserechte. -**ldap:/etc/ldap/slapd.d/cn=config/olcDatabase=\{1\}mdb.ldif** +**openldap:/etc/ldap/slapd.d/cn=config/olcDatabase=\{1\}mdb.ldif** ... - olcAccess: {2}to * by self read - by dn="cn=admin,dc=example,dc=org" write - by group.exact="cn=ldap-admins,ou=groups,dc=starship-factory,dc=ch" write - by group.exact="cn=ldap-auth-users,ou=groups,dc=starship-factory,dc=ch" read - by * none + olcAccess: {0}to * + by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage + by * break + olcAccess: {1}to attrs=userPassword,shadowLastChange,mail,labeledURI + by self write + by dn="cn=admin,dc=example,dc=org" write + by group.exact="cn=ldap-admins,ou=groups,dc=starship-factory,dc=ch" write + by anonymous auth + by * none + olcAccess: {2}to * + by dn="cn=admin,dc=example,dc=org" write + by group.exact="cn=ldap-admins,ou=groups,dc=starship-factory,dc=ch" write + by group.exact="cn=ldap-auth-users,ou=groups,dc=starship-factory,dc=ch" read + by self read + by * none ... Die erste Gruppe dient zur Verwaltung der Administratoren, die zweite Gruppe zur Anlage von System-Nutzern, welche zur Authentifizierung gegen den LDAP-Server benötigt werden. ***Hinweis:*** Die Datei *olcDatabase=\{1\}mdb.ldif* befindet sich im Docker-Volumen *ldap_conf*, welches im Verzeichnis */srv/dev-disk-by-id-md-name-debian-1/docker/volumes/ldap_conf/* gespeichert ist. Die Modifikation der *OpenLDAP*-Konfiguration sollte im Normalfall mittels des Befehls `ldapmodify` erfolgen. Da alle Versuche, die Zugriffsrechte mittels `ldapmodify` zu manipulieren scheiterten, wurde letztendlich der Weg der direkten Manipulation der Konfigurationsdatei gewählt. +Die Konfiguration von *phpldapadmin* wurde mit den folgenden Einträgen ergänzt, um sicherzustellen, dass der sichere Hash-Algorithmus *SSHA* verwendet wird und die Nummerierung der Benztzer und Gruppen im Bereich >10000 liegt. + +**phpldapadmin:/var/www/phpldapadmin/config/config.php** + + ... + /* Default password hashing algorithm. One of md5, ssha, sha, md5crpyt, smd5, + blowfish, crypt or leave blank for now default algorithm. */ + $servers->setValue('appearance','pla_password_hash','ssha'); + + /* This feature allows phpLDAPadmin to automatically determine the next + available uidNumber for a new entry. */ + $servers->setValue('auto_number','enable',true); + + /* The minimum number to use when searching for the next available number + (only when 'search' is used for auto_number. */ + $servers->setValue('auto_number','min',array('uidNumber'=>10000,'gidNumber'=>10000)); + +Die erweiterte Konfiguration des *LDAP Account Manager* wurde mittels der Web-Oberfläche durchgeführt und ist im Folgenden nicht weiter beschrieben. + ## NextCloud Zum Austausch von Dateien und Informationen zwischen den Mitgliedern der Starship Factory wurde auf dem Cloud-Server eine *NextCloud*-Intanz installiert. Die *NextCloud* ist über den Reverse Proxy unter der Adresse https://cloud.lab.starship-factory.ch/ zu erreichen. @@ -425,7 +636,7 @@ Damit integrierte Apps, insbesondere *OnlyOffice* in Kombination mit dem inverse ***Hinweis:*** Die Datei *config.php* befindet sich im Docker-Volumen *nextcloud_nextcloud*, welches im Verzeichnis */srv/dev-disk-by-id-md-name-debian-1/docker/volumes/nextcloud_nextcloud/* gespeichert ist. -Die Datei */etc/crontab* wurde um den folgenden Eintrag erweitert, damit Hintegrundaufgaben in der *NextCloud* zuverlässig ausgeführt werden. +Das *crontab* wurde um den folgenden Eintrag erweitert, damit Hintegrundaufgaben in der *NextCloud* zuverlässig ausgeführt werden: **/etc/crontab** @@ -440,6 +651,10 @@ In den Einstellungen unter "LDAP / AD Integration" wurde die Authentifizierung g [[!img ldap-config.png align="left" alt="LDAP configuration screenshot"]] +Der System-Benutzer *nextcloud-ldap-user* wurde zuvor im LDAP-Verzeichnis angelegt und in die Gruppe *ldap-admins* aufgenommen, um ihm Schreibrechte auf das LDAP-Verzeichnis zu gewähren. + +***Hinweis***: Auf Grund einer Beschränkung in der LDAP-Implementierung in Nextcloud ist es aktuell notwendig, dass der LDAP-Benutzer Schreibrechte auf das Verzeichnis hat, um Benutzern das Ändern ihrer Passwörter zu ermöglichen. + ***Warnung:*** Eine inkorrekte LDAP-Konfiguration - insbesondere die unsachgemäße Manipulation einer existierenden Konfiguration - kann dazu führen, dass die NextCloud-Instanz nicht mehr startet. diff --git a/Infrastruktur/ldap-config.png.mdwn b/Infrastruktur/ldap-config.png.mdwn index e23495bb..1d2b1d11 100644 Binary files a/Infrastruktur/ldap-config.png.mdwn and b/Infrastruktur/ldap-config.png.mdwn differ -- cgit v1.2.1 From 417e08dcdfc2ff526cc0cce605e8b4ebec52a448 Mon Sep 17 00:00:00 2001 From: Bernd Kalbfuss Date: Sun, 11 Apr 2021 09:36:39 +0200 Subject: Aktualisierung der Cloud-Server-Dokumentation. --- Infrastruktur/Cloud-Server.mdwn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Infrastruktur/Cloud-Server.mdwn b/Infrastruktur/Cloud-Server.mdwn index f48af0b3..51dfb76c 100644 --- a/Infrastruktur/Cloud-Server.mdwn +++ b/Infrastruktur/Cloud-Server.mdwn @@ -676,3 +676,5 @@ Die folgenden Anwendungen wurden zusätzlich installiert und aktiviert: * Announcements * Notes + + -- cgit v1.2.1 From 233702a3869d6d27819a8295511d8ab85d6a4345 Mon Sep 17 00:00:00 2001 From: Bernd Kalbfuss Date: Sun, 11 Apr 2021 09:42:02 +0200 Subject: Aktualisierung der Cloud-Server-Dokumentation. --- Infrastruktur/Cloud-Server.mdwn | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Infrastruktur/Cloud-Server.mdwn b/Infrastruktur/Cloud-Server.mdwn index 51dfb76c..6840bf0e 100644 --- a/Infrastruktur/Cloud-Server.mdwn +++ b/Infrastruktur/Cloud-Server.mdwn @@ -668,13 +668,20 @@ Die folgenden Apps wurden in NextCloud deaktiviert, da sie mit der Anwendung Onl Die folgenden Anwendungen wurden zusätzlich installiert und aktiviert: * Community Document Server + * ONLYOFFICE + * Group Folders + * Decks + * Tasks + * Circles + * Announcements -* Notes +* Notes + -- cgit v1.2.1