Bei Ausfall des Linuxmuster-Servers während Wartungsarbeiten oder eines Backupprozesses ist der LDAP-Dienst nicht verfügbar. Somit kann man sich auch nicht auf externe Dienste wie z. B. einem Moodle oder einem Schulportfolio anmelden, da diese meist auf den internen LDAP zugreifen.
Als Lösung bietet sich an, einen zusätzlichen (virtuellen) Server, einen sogenannten „Consumer“ (im Folgenden server2), mit einem Slave-LDAP aufzusetzen und die Replikation mit der Funktion „syncrepl“ durchzuführen. Dabei holt sich der Consumer im festgelegten Zeitintervall Änderungen am Master=Provider automatisch ab. In der Firewall und dem Router kann man dann für beide LDAP-Server eine Portweiterleitung eintragen. Der zusätzliche Server wird in dieser Anleitung ins grüne Netz gesetzt, möglich wäre auch ihn in die DMZ (oranges Netz) zu setzen.
Der neue „server2“ sollte mit seiner MAC in die Workstations aufgenommen werden (per Konsole oder Schulkonsole) so dass er per dhcp seine IP für das grüne Netz bekommt (z. B. 10.16.1.2) und auch Internetzugriff hat.
Dann die Base-DN und das ldap-admin-Kennwort abfragen und notieren:
# grep BASE /etc/ldap/ldap.conf # grep rootpw /etc/ldap/slapd.conf
Es bietet sich dafür bei virtuellen Umgebungen natürlich ein „kostenloser“ neuer Server an.
# apt-get install slapd ldap-utils
Am linuxmuster.net server als root anmelden. Der server2 sollte in den Workstations importiert sein, sonst seine IP benutzen:
# cd /etc/ldap # scp /etc/ldap/slapd.conf server2:/etc/ldap # scp /etc/ldap/schema/samba.schema server2:/etc/ldap/schema # scp /etc/ldap/schema/sophomorix.schema server2:/etc/ldap/schema
Datei editieren, fehlende Zeilen ergänzen in /etc/ldap/slapd.conf
... modulepath /usr/lib/ldap moduleload syncprov # neue Zeile einfügen moduleload back_hdb ... checkpoint 512 30 # diese Zeile suchen, danach 3 neue Zeilen: overlay syncprov syncprov-checkpoint 100 2 syncprov-sessionlog 100 ...
Danach Konfigdatei aktivieren (auf dem Server reicht oft auch schon ein einfaches service slapd restart
:
# rm -r /etc/ldap/slapd.d/* # slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d # chown -R openldap:openldap /etc/ldap # service slapd restart
Datei editieren, fehlende Zeilen ergänzen: /etc/ldap/slapd.conf
. Dabei folgende vier Punkte dem eigenem System anpassen:
... checkpoint 512 30 # diese Zeile suchen, danach die folgenden einfügen syncrepl rid=1 provider=ldap://10.16.1.1:389 type=refreshOnly interval=00:00:10:00 retry="300 +" searchbase="dc=linuxmuster-net,dc=lokal" filter="(objectClass=*)" attrs="*,+" scope=sub schemachecking=off bindmethod=simple binddn="cn=admin,dc=linuxmuster-net,dc=lokal" credentials=12345678 ... # TLS... # TLS... # TLS... # TLS... ...
Die TLS-Optionen zunächst auskommentieren, wenn noch kein ssl-Zertifikat erzeugt wurde (oder Punkt 6 vorziehen).
Danach Konfigdatei aktivieren, etwaige Datenbank-Reste in /var/lib/ldap
löschen und dort die Rechte korrekt setzen:
slapd.conf
werden vom slapd-Dienst nicht direkt benutzt.slaptest
wird aus der slapd.conf-Datei die aktive Konfiguration im Verzeichnis slapd.d
neu erzeugt.# systemctl stop slapd # rm -r /etc/ldap/slapd.d/* # slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d (Fehlermeldung ignorieren) # chown -R openldap:openldap /etc/ldap # chown -R openldap:openldap /var/lib/ldap # rm -rf /var/lib/ldap/* # systemctl start slapd # systemctl status slapd (Hier darf es keine Fehlermeldung geben, ansonsten diese Schritte wiederhoen)
Nach einem Test (siehe unten) kann der Slave-LDAP benutzt werden, z. B. mit einem → LDAP-Browser abgefragt werden.
Beim ersten Start wird die Datenbank komplett übertragen, das dauert eine Weile.
ggf. noch installieren
# apt-get install openssh-server
Zertifikat für ldap erzeugen und Rechte setzen:
# mkdir /etc/ldap/ssl # cd /etc/ldap/ssl # openssl req -newkey rsa:1024 -x509 -nodes -out slapd.pem -keyout slapd.pem -days 3650 # chown openldap:openldap /etc/ldap/ssl/slapd.pem # chmod 400 /etc/ldap/ssl/slapd.pem
Editieren: /etc/ldap/slapd.conf
... # TLSCipherSuite HIGH:MEDIUM:-SSLv2 TLSCACertificateFile /etc/ldap/ssl/slapd.pem TLSCertificateFile /etc/ldap/ssl/slapd.pem TLSCertificateKeyFile /etc/ldap/ssl/slapd.pem ...
Editieren: /etc/default/slapd
... SLAPD_SERVICES="ldap:/// ldaps:///" ...
Konfigdatei aktivieren und Dienst neu starten:
# rm -r /etc/ldap/slapd.d/* # slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d # chown -R openldap:openldap /etc/ldap # service slapd restart
Im Router und im IPFire müssen die Anfragen von außen durchgereicht werden, z.B. für ldap-Port 389 (für ldaps dann entsprechend mit Port 636):
Im Router bzw. virtuellem NAT o.ä.:
<externe IP>:389 --> <IPFire>:389 <externe IP>:390 --> <IPFire>:390
Im IPFire:
<Default IP>:389 --> 10.16.1.1:389 <Default IP>:390 --> 10.16.1.2:389
Standard-Port ist 389, der Port 390 wird bei manchen Systemen ebenfalls für LDAP-Anfragen benutzt.
Bei manchen Diensten kann man mehrere LDAP-Server eintragen. Dabei die eingestellten Ports benutzen.
Z.B. bei moodle:
„Geben Sie einen LDAP-Server in URL-Form an, wie etwa „ldap:/ /ldap.meinserver.de“ oder „ldaps:/ /ldap. meinserver.de“. Mehrere LDAP-Server trennen Sie bitte mit “;„ (Semikolon), z.B. als LDAP-Failover.“
Ein schneller Test ist eine Abfrage mit ldapsearch
:
# ldapsearch -x -w "" -H "ldap://127.0.0.1" -b "dc=linuxmuster-net,dc=lokal"
Wenn hier die Ausgabe auf dem Server und dem Comsumer gleich aussieht, insbesondere etwa ganz am Ende der Wert bei numEntries
, dann hat die Synchronisation geklappt.
So kann man alle Attribute eines einzelnen Users (username ersetzen) ausgeben:
# ldapsearch -x -W -H "ldap://127.0.0.1" -b "dc=linuxmuster-net,dc=lokal" -D "cn=admin,dc=linuxmuster-net,dc=lokal" "(uid=username)"
Hier wird man nach einem Passwort gefragt, es ist das rootpw
, das man im ersten Schritt notiert hat. Dies ist hier erforderlich, da bei einer anonymen Abfrage wie im ersten Test nicht alle Felder ausgegeben werden, es fehlen zum Beispiel die Passworthashes. Auch hier vergleicht man wieder die Ausgabe auf dem Server und dem Consumer.
Nun kann man beispielsweise das Passwort eines Users ändern und beobachten, wie bei der nächsten Synchronisation die Änderungen übernommen werden.
Von einem Windows-Client kann man mit dem → Softerra-LDAP-Browser (Freeware) die LDAP-Datenbank abfragen.
Von einem Ubuntu-Client gibts viele Tools, z.B. „Luma“ oder „JXplorer“.
Bei Verbindungsproblemen: den ldap-Dienst im debug-Modus starten mit vielen, vielen Ausgaben an der Konsole:
# service slapd stop # slapd -d -1
ssl-Zertifikat testen:
# openssl s_client -connect localhost:636 -showcerts
Natürlich nur am Consumer/server2!
# systemctl stop slapd # rm -f /var/lib/ldap/* # systemctl start slapd
Danach einen Test wie weiter oben beschrieben nicht vergessen!