Inhaltsverzeichnis

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 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