Quicktipp: SOCAT LDAP über SSL bereitstellen

Zugegeben: Dieser Quicktipp ist schon sehr speziell. Wer aber nach einer Lösung sucht, seinen LDAP Server oder Microsoft AD Server mit einem gültigen SSL Zertifikat (nicht dem selbst generierten des AD) in der Cloud für Single Sign On verfügbar zu machen, der wird sich über diesen Eintrag sicherlich freuen.

Nützlich ist dies z.B. für eine Nextcloud, welche außerhalb des Netzwerks bei einem Provider läuft und dennoch ein Single Sing On/Gruppenmanagement über LDAP/ Microsoft AD möglich sein soll. Oder aber, wenn die Nextcloud in einem anderen Netzwerksegment läuft, welches keinen direkten Zugriff auf das AD hat.

Ausgangslage:

Wir haben einen Domain Controller/LDAP Server mit der IP „192.168.0.2“. Dieser soll nicht direkt über die Firewall gegattet werden bzw. er steht in einem separaten Netz oder VLAN, das so nicht mit dem Internet verbunden ist.

Um nun den LDAP Port verschlüsselt bereitzustellen, reicht ein Linux Server, welcher sowohl den LDAP Server Port via

telnet 192.168.0.2 389

erreicht und aus dem Internet über die Firewall via NAT erreichbar ist. Die Arbeit übernimmt das Tool „socat“, welches bei vielen Linux Distributionen bereist installiert ist bzw. sich aus den Standard Repositories nachinstallierten lässt. Hier mit Beispiel von Ubuntu Server:

apt-get install socat

Der folgende Befehl erledigt den Rest:

socat OPENSSL-LISTEN:636,reuseaddr,pf=ip4,fork,cert=/etc/apache2/ssl/wildcard.firma.de.pem,cafile=/etc/apache2/ssl/ca_bundle,verify=0 TCP4-CONNECT:192.168.0.2:389 &

Der SOCAT Prozess stellt dann den verschlüsselten LDAP Port 636 mit dem verwendeten Zertifikat wildcard.firma.de.pem bereit. In diesem Fall im PEM Format. Haben Sie das SSL Zertifikat in einem anderen Format, so lässt sich dieses mit den openssl Befehlen beliebig wanden.

Haben Sie eine CTR udn KEY Datei dann können Sie das Zertifikat im PEM Vormat einfach bereitstellen indem Sie beide Dateien kombinieren. Im Oberen Teil sollte das CRT und im Unteren Teil der Inhalt des KEY Files stehen.

z.B. über folgenden Befehl:

cat /etc/apache2/ssl/wildcard.firma.de.crt > /etc/apache2/ssl/wildcard.firma.de.pem && cat /etc/apache2/ssl/wildcard.firma.de.key >> /etc/apache2/ssl/wildcard.firma.de.pem

Testen kann man die Verbindung mit dem Befehl:

openssl s_client -connect SERVERIP:636

Hier sollte das Zertifikat angezeigt, der Aussteller und auch der Inhalt der des CRT.

Natürlich lässt sich dies nicht nur auf die Nextcloud anwenden, sondern auch für extern bereitgestellte Firmenportale, Kalender usw.

Zur Absicherung sollte der LDAPS Port 636 nur von den IP Adressen erreichbar sein, die LDAP auch benötigen. In diesem Fall die öffentliche IP der Nextcloud. Alle anderen IPs sollten in der Firewall blockiert werden.

Der socat Prozess auf dem Linux Server kann sich auch mal beenden. z.B. durch Serverneustart, Internemausfall etc. Hier bietet sich dann ein kleines Watchdog Shell Script an, welches den Prozess und den Port überwacht und ggf. selbst neu startet.

Sollten Sie Fragen zu dem Thema haben, insbesondere zur Anbindung einer Nextcloud an Active Directory oder generell am Nextcloud Hosting haben, dann stehen wir Ihnen gerne zur Verfügung. Sprechen Sie uns an!

Tobias Völker