Apache Guacamole – LDAP auf LDAPS umstellen (Teil 3)

In vorherigen Artikel Apache Guacamole – LDAP Authentifizierung mit Active Directory (Teil 2) habe ich beschrieben, wie die Guacamole sich das Active Directory zu nutzen macht. unter anderem wird die Abfrage bzw. Authentifizierung das Protokoll LDAP (Port 389/TCP) verwendet. Dabei handelt es sich standardmäßig um unverschlüsselten Verbindungen. Vor 10-20 Jahren hätte sich dabei niemand etwas gedacht. Heutzutage ist die Verschlüsselung der Verbindungen immer vorzusehen, wenn dies möglich ist. Dafür gibt es das Protokoll LDAPS (LDAP over SSL) welches für TLS-Verbindungen den Port 636/TCP benutzt.

Vorraussetzung dafür ist, dass auf dem Domain Controller bereits LDAPS eingerichtet, konfiguriert und erfolgreich getestet ist. Ich möchte an dieser Stelle nicht näher auf die Konfiguration eingehen, da dies den Rahmen sprengen würde.

Zuerst muss das aktuelle, aktive Zertifikat auf dem Domain Controller exportiert werden. Grund dafür ist, dass Guacamole auf Java basiert. Java bringt traditionell einen eigenen Zertifikatsspeicher mit (keystore). Das Zertfikat muss im Format BASE64 und ohne den privaten Schlüssel exportiert werden. In meinem Fall heißt die Datei dc01.lab01.wydler.eu.crt.

Diese Datei mit Hilfe von WinSCP o.ä. Tools auf dem Guacamole Server unter /etc/guacamole/ ablegen. Alternativ die exportierte Datei in einem Editor öffnen und parallel dazu auf dem Guacamole Server mit Hilfe von vi /etc/guacamole/dc01.lab01.wydler.eu.crt eine neue Datei öffnen. Anschlißend per Copy & Paste den Inhalt 1:1 übertragen, speichern und die Datei wieder schließen.

Nun müssen wir den die Datei cacerts von Java finden. Dazu folgenen Befehl ausführen:

find "/usr/lib/jvm/" -name "cacerts"
/usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts

Anschließend fügen wir das Zertifkat dem Keystore hinzu:

keytool -importcert -alias "ldaps" -keystore "/usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts"  -storepass "changeit" -file /etc/guacamole/dc01.lab01.wydler.eu.crt -noprompt
Warnung: Verwenden Sie die Option -cacerts für den Zugriff auf den cacerts Keystore
Zertifikat wurde Keystore hinzugefügt

Die Warnung kann igoniert werden. Wir importieren in diesem Fall ein Zertifikat eines DNS-Namens. Möchte man noch die Zertifikate der (Zwischen) Zertifizierungsstellen importieren, ist die Option zu nutzen.

Damit Guacamole auch „Bescheid“ weiß, müssen die Parameter der Konfigurationsdatei (/etc/guacamole/guacamole.properties) angepasst werden:

#The port your LDAP server listens on. If omitted, the standard LDAP or LDAPS port will be used, depending on the encryption method specified with ldap-encryption-method (if any). Unencrypted LDAP uses the standard port of 389, while LDAPS uses port 636. Unless you manually configured your LDAP server to do otherwise, your LDAP server probably listens on port 389.
ldap-port: 636

#The encryption mechanism that Guacamole should use when communicating with your LDAP server. Legal values are "none" for unencrypted LDAP, "ssl" for LDAP over SSL/TLS (commonly known as LDAPS), or "starttls" for STARTTLS. If omitted, encryption will not be used.
ldap-encryption-method: ssl

Damit die Änderungen wirksam werden, muss der Apache Tomcat neu gestartet werden.

systemctl restart tomcat8.service

Falls zwischen Guacamole Server und Domain Controller eine Firewall steht, nicht vergessen den Port 636/TCP freizugeben. Die Windows-Firewall auf dem Domain Controller muss nicht angepasst werden. Grund dafür ist, dass die notwendigen Regeln bereis vorhanden und aktiv sind.

Nachdem Neustart lohnt sich oft ein Blick ins Protokoll, ob es zu Warnungen oder Fehler gekommen ist:

tail -f -n 50 /var/log/tomcat8/catalina.out

Viel Spaß beim Ausprobieren. 🙂