[[fhc:server|zurück zur Übersicht]]
====== LDAP ======
FH-Complete unterstützt die Authentifizierung gegen Openldap und Active Directory.
Um eine Verbindung mit dem LDAP Server herstellen zu können muss das [[https://github.com/FH-Complete/FHC-AddOn-LDAP|LDAP Addon]] installiert sein.
===== Einstellungen =====
Falls eine Verschlüsselte Verbindung zum LDAP Server möglich ist, muss in der Datei
/etc/ldap/ldap.conf das entsprechende Zertifikat eingetragen werden wenn dieses selbst signiert ist oder nicht öffentlich bekannt.
BASE dc=example,dc=com
URI ldaps://ldap.example.com
TLS_CACERT /etc/ldap/meincazertifikat.pem
TLS_REQCERT demand
Zu Testzwecken und zur Fehlersuche kann es sinnvoll sein, die Zertifikatsprüfung zu deaktivieren:
TLS_REQCERT never
Dies betrifft jedoch nur die PHP ldap Funktionen und die Commandline Funktionen (zB ldap_search)
Die Änderungen in der ldap.conf sind für die Commandline Tools sofort wirksam. Damit diese Konfiuration von Apache auch übernommen wird, muss der Apache neu gestartet werden.
Die Authentifizierung über .htaccess prüft das Zertifikat weiterhin. Um diese Prüfung zu deaktivieren wird in der Datei /etc/apache2/mods-enabled/ldap.conf foglendes gesetzt:
LDAPVerifyServerCert off
Das CA Zertifikat kann auch global installiert werden.
Dazu wird das Zertifikat zuerst in das Verzeichnis /usr/local/share/ca-certificates/ kopiert. (Base64 Codiert mit Endung .crt) und danach update-ca-certificates aufgerufen.
cp ca_name.pem /usr/local/share/ca-certificates/ldap-ca.crt
update-ca-certificates
Wenn dies funktioniert hat, ist das Zertifikat anschließend in der Datei /etc/ssl/certs/ca-certificates.crt enthalten.
Dies kann dann in der ldap.conf über folgenden Eintrag verwendet werden:
TLS_CACERT /etc/ssl/certs/ca-certificates.crt
Die Zertifikate können auch unter /usr/share/ca-certificates/ abgelegt werden und mittels
dpgk-reconfigure ca-certificates
können die neuen Zertifikate dann über eine Liste aktiviert werden.
===== Troubleshooting =====
==== ldap_search_ext_s() for user failed][Operations error] ====
auth_ldap authenticate: user foo authentication failed; URI /secret [ldap_search_ext_s() for user failed][Operations error]
Falls dieser Fehler Auftritt muss folgender Eintrag in der Datei /etc/ldap/ldap.conf hinzugefügt werden:
REFERRALS off
Wird auf einen Active Directory zugegriffen muss in diesem Fall in der .htaccess Datei in der AuthLDAPURL der Port 3268 angegeben werden:
AuthLDAPURL ldap://ad.example.com:3268/dc=example,dc=com?sAMAccountName?sub
=== SSL Zugriff funktioniert nicht - Mögliche Gründe ===
==== Grundlegendes ====
LDAP Default Port: 389
LDAPS Default Port: 636
LDAP Global Catalog Port: 3268
LDAPS Global Catalog Port: 3269
Der Zugriff erfolgt entweder über Port 389 mit anschließendem STARTTLS oder über Port 636.
Eine Kombination aus Port 636 (ldaps) und STARTTLS ist nicht sinnvoll.
==== Prüfen ob der Server das Zertifikat korrekt liefert: ====
Mit folgenden Befehl koennen die Zertifikate des Servers angezeigt werden.
openssl s_client -showcerts -connect ldap.example.com:636
==== Prüfen ob das Zertifikat valide ist ====
openssl verify meincazertifikat.pem
Mit folgendem Befehl können die Informationen des Zertifikats angezeigt werden
openssl x509 -in meincazertifikat.crt -text -noout
==== Datum des Servers prüfen ====
Beim prüfen des Zertifikats wird das Start und Ende Datum des Zertifikats geprüft. Deshalb ist es wichtig dass da Datum und Uhrzeit korrekt sind
==== Servername muss korrekt sein ====
Bei der ldapsearch Abfrage muss der Servername verwendet werden der im Zertifikat angegeben ist.
Eine Verbindung mit IP Adresse oder einem alternativen Namen funktioniert hier nicht
==== Zertifikat konvertieren (.cer, .crt, .der nach PEM) ====
Für die Verwendung des Zertifikats in der ldap.conf sollte das Zertifikat im .pem Format vorliegen.
Mit folgendem Befehl kann das Zertifikat von .cer oder .crt nach .pem konvertiert werden
openssl x509 -inform der -in meincazertifikat.crt -out meincazertifikat.pem
==== Testen des LDAP Zugriffs auf der Commandline ====
Sollte der Login im FH-Complete nicht funktionieren, kann der Zugriff auf den LDAP Server von der Commandline geprüft werden.
Dazu werden die LDAP-Utils benötigt:
apt-get install ldap-utils
Danach kann der Zugriff auf den LDAP Server und der Login geprüft werden:
Zugriff ohne Verschlüsselung:
ldapsearch -LLL -x -H ldap://ldap.example.com:389 "samaccountname=testuser"
Zugriff mit STARTTLS Verschlüsselung
ldapsearch -LLL -x -ZZ -H ldap://ldap.example.com:389 "samaccountname=testuser"
Zugriff mit SSL Verschlüsselung
ldapsearch -LLL -x -H ldaps://ldap.example.com:636 "samaccountname=testuser"
Sollte der LDAP Server einen Bind User benötigen kann folgender Befehl verwendet werden:
ldapsearch -LLL -x -D "cn=administrator,dc=example,dc=com" -W -H ldap://ldap.example.com:389 "samaccountname=testuser"
Mit dem Parameter "-d 99" kann der Debug Modus gesetzt werden damit zusätzliche Informationen und ggf Fehlermeldungen angezeigt werden
==== Samba 4 - Cheatsheet ====
Gruppen anlegen auf der Commandline
samba-tool group add teacher
User anlegen auf der Commandline
samba-tool user add fhcomplete
User zu Gruppen hinzufügen
samba-tool group addmembers teacher fhcomplete
Passworteinstellungen prüfen
samba-tool domain passwordsettings show
Standardmäßig darf das Passwort nur alle 24 Stunden geändert werden. Diese Einschränkung lässt sich deaktivieren:
samba-tool domain passwordsettings set --min-pwd-age=0
Passworthistorie deaktivieren
samba-tool domain passwordsettings set --history-length=0
Weitere Funktionen
[[https://www.samba.org/samba/docs/man/manpages/samba-tool.8.html]]
===== Verwendung mehrerer LDAP-Server =====
Es ist möglich 2 LDAP Server zu verwenden.
Dazu wird im Config der LDAP2_SERVER gesetzt
Im .htaccess File werden die LDAPServer mit Leerzeichen getrennt angegeben:
AuthLDAPURL "ldap://ldap.example.com ldap2.example.com/ou=People,dc=oesi,dc=org?uid?one?objectclass=posixAccount"
Der zweite Eintrag hat kein ldap:/ /
Die Filter werden nur beim 2. Eintrag angegeben. Unterschiedliche Filter sind nicht möglich.
Bei angabe von mehreren LDAP Servern müssen diese unter doppelten Hochkomma geschrieben werden