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