Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
|
fhc:ldap [2018/06/22 15:20] pollmann gelöscht |
— (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 | ||
| - | |||