Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
fhc:ldap [2018/06/13 16:55] pollmann angelegt |
— (aktuell) | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | [[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. | ||
- | |||
- | <code> | ||
- | BASE dc=example,dc=com | ||
- | URI ldaps://ldap.example.com | ||
- | TLS_CACERT /etc/ldap/meincazertifikat.pem | ||
- | TLS_REQCERT demand | ||
- | </code> | ||
- | |||
- | Zu Testzwecken und zur Fehlersuche kann es sinnvoll sein, die Zertifikatsprüfung zu deaktivieren: | ||
- | |||
- | <code> | ||
- | TLS_REQCERT never | ||
- | </code> | ||
- | 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: | ||
- | |||
- | <code> | ||
- | LDAPVerifyServerCert off | ||
- | </code> | ||
- | |||
- | |||
- | 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. | ||
- | <code> | ||
- | cp ca_name.pem /usr/local/share/ca-certificates/ldap-ca.crt | ||
- | update-ca-certificates | ||
- | </code> | ||
- | |||
- | 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: | ||
- | <code> | ||
- | TLS_CACERT /etc/ssl/certs/ca-certificates.crt | ||
- | </code> | ||
- | |||
- | Die Zertifikate können auch unter /usr/share/ca-certificates/ abgelegt werden und mittels | ||
- | <code> | ||
- | dpgk-reconfigure ca-certificates | ||
- | </code> | ||
- | können die neuen Zertifikate dann über eine Liste aktiviert werden. | ||
- | ===== Troubleshooting ===== | ||
- | ==== ldap_search_ext_s() for user failed][Operations error] ==== | ||
- | |||
- | <code> | ||
- | auth_ldap authenticate: user foo authentication failed; URI /secret [ldap_search_ext_s() for user failed][Operations error] | ||
- | </code> | ||
- | |||
- | Falls dieser Fehler Auftritt muss folgender Eintrag in der Datei /etc/ldap/ldap.conf hinzugefügt werden: | ||
- | <code> | ||
- | REFERRALS off | ||
- | </code> | ||
- | |||
- | Wird auf einen Active Directory zugegriffen muss in diesem Fall in der .htaccess Datei in der AuthLDAPURL der Port 3268 angegeben werden: | ||
- | |||
- | <code> | ||
- | AuthLDAPURL ldap://ad.example.com:3268/dc=example,dc=com?sAMAccountName?sub | ||
- | </code> | ||
- | |||
- | === 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. | ||
- | <code> | ||
- | openssl s_client -showcerts -connect ldap.example.com:636 | ||
- | </code> | ||
- | |||
- | ==== Prüfen ob das Zertifikat valide ist ==== | ||
- | <code> | ||
- | openssl verify meincazertifikat.pem | ||
- | </code> | ||
- | |||
- | Mit folgendem Befehl können die Informationen des Zertifikats angezeigt werden | ||
- | <code> | ||
- | openssl x509 -in meincazertifikat.crt -text -noout | ||
- | </code> | ||
- | |||
- | ==== 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 | ||
- | <code> | ||
- | openssl x509 -inform der -in meincazertifikat.crt -out meincazertifikat.pem | ||
- | </code> | ||
- | |||
- | ==== 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: | ||
- | <code> | ||
- | apt-get install ldap-utils | ||
- | </code> | ||
- | |||
- | Danach kann der Zugriff auf den LDAP Server und der Login geprüft werden: | ||
- | |||
- | Zugriff ohne Verschlüsselung: | ||
- | <code> | ||
- | ldapsearch -LLL -x -H ldap://ldap.example.com:389 "samaccountname=testuser" | ||
- | </code> | ||
- | |||
- | Zugriff mit STARTTLS Verschlüsselung | ||
- | <code> | ||
- | ldapsearch -LLL -x -ZZ -H ldap://ldap.example.com:389 "samaccountname=testuser" | ||
- | </code> | ||
- | |||
- | Zugriff mit SSL Verschlüsselung | ||
- | <code> | ||
- | ldapsearch -LLL -x -H ldaps://ldap.example.com:636 "samaccountname=testuser" | ||
- | </code> | ||
- | |||
- | |||
- | Sollte der LDAP Server einen Bind User benötigen kann folgender Befehl verwendet werden: | ||
- | <code> | ||
- | ldapsearch -LLL -x -D "cn=administrator,dc=example,dc=com" -W -H ldap://ldap.example.com:389 "samaccountname=testuser" | ||
- | </code> | ||
- | |||
- | 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 | ||
- | <code> | ||
- | samba-tool group add teacher | ||
- | </code> | ||
- | User anlegen auf der Commandline | ||
- | <code> | ||
- | samba-tool user add fhcomplete | ||
- | </code> | ||
- | User zu Gruppen hinzufügen | ||
- | <code> | ||
- | samba-tool group addmembers teacher fhcomplete | ||
- | </code> | ||
- | Passworteinstellungen prüfen | ||
- | <code> | ||
- | samba-tool domain passwordsettings show | ||
- | </code> | ||
- | Standardmäßig darf das Passwort nur alle 24 Stunden geändert werden. Diese Einschränkung lässt sich deaktivieren: | ||
- | <code> | ||
- | samba-tool domain passwordsettings set --min-pwd-age=0 | ||
- | </code> | ||
- | Passworthistorie deaktivieren | ||
- | <code> | ||
- | samba-tool domain passwordsettings set --history-length=0 | ||
- | </code> | ||
- | 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: | ||
- | <code> | ||
- | AuthLDAPURL "ldap://ldap.example.com ldap2.example.com/ou=People,dc=oesi,dc=org?uid?one?objectclass=posixAccount" | ||
- | </code> | ||
- | |||
- | 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 | ||
- | |||