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.
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.
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
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.
Mit folgenden Befehl koennen die Zertifikate des Servers angezeigt werden.
openssl s_client -showcerts -connect ldap.example.com:636
openssl verify meincazertifikat.pem
Mit folgendem Befehl können die Informationen des Zertifikats angezeigt werden
openssl x509 -in meincazertifikat.crt -text -noout
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
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
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
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
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
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