Domain Controller mit LDAP Channel Binding und LDAP Signing absichern

    LDAPDie Ver­wendung von unver­schlüs­seltem LDAP stellt ein Risiko dar. Es ermög­licht Angreifern das Aus­nutzen einer Schwach­stelle, um erhöhte Privilegien zu erlangen. Diese lassen sich wiederum für Man-In-The-Middle-Angriffe nutzen. Admins können ihre Systeme über mehrere LDAP-Einstellungen davor schützen.

    Zur Behebung dieser Sicherheits­lücke wollte Microsoft ursprünglich LDAP-Signing und Channel-Binding per Update generell aktivieren. Dieses Vorhaben ist nun aber einer aus­drücklichen Empfehlung gewichen, welche man dem Support-Dokument ADV190023 entnehmen kann.

    Im Netz findet man einige Beiträge, welche LDAP-Signing mit LDAP over SSL (LDAPS) gleichsetzen. Es handelt sich dabei aber um ein zertifikats­basiertes Protokoll, welches sich technisch von LDAP-Signing unterscheidet.

    LDAPS behebt zwar ebenfalls die Gefahr einer möglichen Man-In-The-Middle-Attacke, Microsoft empfiehlt aber die Nutzung von LDAP-Signing und Channel-Binding. Die folgenden Abschnitte erklären die verschiedenen Techniken im Detail und grenzen sie voneinander ab.

    LDAPS

    Domain Controller und Clients stehen in ständigem Austausch. Dazu wird vorrangig das LDAP-Protokoll verwendet, welches über den Port 389 (TCP und UDP) kommuniziert. Hierüber schicken Clients Authenti­fizierungs­anfragen an Domain Controller, Exchange Server fragen Mail-Adressen ab und Domänen-Admins verwalten das Active Directory über dieses Protokoll.

    Es ist also naheliegend, den LDAP-Traffic zu verschlüsseln. LDAPS schützt die Verbindung durch die Nutzung von SSL-Zertifikaten. Anzumerken ist dabei, dass die verschlüsselte Version nicht über Port 389, sondern über 636 kommuniziert.

    Ob die Verbindung per LDAPS möglich ist, kann mit dem Tool ldp.exe herausgefunden werden, welches Bestandteil der RSAT ist. Über den Port 389 prüft man zuerst, ob eine unver­schlüsselte Verbindung zum Server abgewiesen wird. Auf Port 636 und einem Haken bei SSL kann die Kommunikation über LDAPS getestet werden.

    Überprüfen der LDAPS-Verbindung mit ldp.exe

    Der Nachteil von LDAPS besteht darin, dass nicht alle Geräte damit kompatibel sind. Alte Telefon­anlagen oder Legacy-Applikationen verwenden LDAP zur Authenti­fizierung und bieten dabei keine Unterstützung für die Kommunikation über SSL an.

    Des Weiteren sind manche Administratoren, die kleine Infrastrukturen betreuen und sich nur selten auf Servern bewegen, nicht mit der Verwaltung von Zertifikaten vertraut und würden gerne einen ein­facheren Weg der Absicherung bevorzugen.

    Channel-Binding

    Channel-Binding verbindet die Applikations- mit der Transportschicht. Dadurch wird ein eindeutiger Fingerabdruck für die LDAP-Kommunikation erzeugt.

    Eine Unter­brechung, wie sie bei einem Man-in-the-Middle-Angriff der Fall wäre, führt zu einem Reconnect. Innerhalb der neuen Verbindung ist der bisherige Finger­abdruck nicht mehr gültig.

    LDAP-Signing

    LDAP-Signing versieht die LDAP-Verbindung mit einer digitalen Signatur. Sie stellt Authentizität und Integrität der übermittelten Daten sicher. Dies bedeutet, dass der Empfänger den Sender verifizieren und zusätzlich ermitteln kann, ob die Daten auf dem Weg manipuliert wurden.

    Der Mechanismus lässt sich über die Registry der Clients und Server konfigurieren, in der Regel mittels Group Policy.

    LDAP-Absicherung nach Empfehlung Microsofts

    Wichtig bei der Implementierung dieser Best Practice ist das Einhalten der richtigen Reihenfolge. Zuerst müssen die Clients so konfiguriert werden, dass sie LDAP-Signing anfordern (dieses also optional nutzen können).

    Sobald diese Einstellung per GPO gesetzt wurde, muss man nun warten, bis sich diese Änderung auf alle Clients auswirkt. Erst dann werden die Domain Controller so angepasst, dass sie eine Signatur erfordern. Abschließend erzwingt man LDAP-Signing auch auf den Clients. Hält man diese Abfolge nicht ein, dann kann sich im schlimmsten Fall kein Client mehr anmelden.

    Konfiguration der Clients

    Mittels einer neuen Gruppen­richtlinie passt man zuerst die Einstellung Netzwerksicherheit: Signaturanforderungen für LDAP-Clients (Englisch: Network security: LDAP client signing requirements) an.

    Sie findet sich unter Computer­konfiguration => Richtlinien => Windows-Einstellungen => Sicherheits­einstellungen => Lokale Richtlinien => Sicherheits­optionen (Englisch: Computer Configuration => Policies => Windows Settings => Security Settings => Local Policies => Security Options).

    Gruppenrichtlinie, um die Clients auf LDAP-Signing vorzubereiten

    Die Option wird hierbei auf Signatur aushandeln (Engl: Negotiate Signing) gesetzt. Anschließend wartet man, bis sich die Einstellung auf alle Clients ausgewirkt hat.

    Anpassen der Domain Controller

    Sobald die Änderung alle Clients erreicht hat, legt man eine weitere Gruppenrichtlinie an. Im selben Pfad wie im Schritt zuvor wird nun Einstellung Domänencontroller: Signatur­anforderungen für LDAP-Server (Englisch: Domain controller: LDAP server signing requirements) bearbeitet.

    Signieren der LDAP-Kommunikation für Domain Controller erzwingen

    Dort wählt man die Option Signatur erforderlich (Englisch: Require Signing) aus. Anschließend verknüpft man das GPO mit dem Container Domänen­controller.

    Finalisieren der Clients

    Sind nun auch die Änderungen auf den DCs aktiv, so kann die Gruppenrichtlinie aus dem ersten Schritt so angepasst werden, dass auch die Clients LDAP-Signing verlangen.

    Die Option Netzwerk­sicherheit: Signaturanforderungen für LDAP-Clients (Englisch: Network security: LDAP client signing requirements) ändert man nun einfach von Signatur aushandeln auf Signatur erforderlich (Englisch: Require Signing).

    Aktivieren von Channel-Binding

    Channel Binding konfiguriert man auf den Domain Controllern durch einen entsprechenden Eintrag in der Registry. Falls noch nicht vorhanden, legt man unter

    HKLM:\System\CurrentControlSet\Services\NTDS\Parameters

    einen neuer DWORD-Eintrag mit der Bezeichnung LdapEnforceChannelBinding an. Die Auswirkungen der Wertezuweisung sind wie folgt:

    • DWORD-Wert 0: deaktiviert
    • DWORD-Wert 1: aktiviert, falls unterstützt
    • DWORD-Wert 2: immer aktiviert

    Langfristig ist Wert 2 zu empfehlen, für die Übergangsphase kann aber die Option mit dem Wert 1 ein guter Kompromiss sein. Nach der Änderung muss der jeweilige Domain Controller neu gestartet werden.

    Seit dem März-Update 2020 steht dafür die Gruppenrichtlinie Domänencontroller: Anforderungen an das LDAP-Serverkanal-Bindungstoken (Englisch: Domain controller: LDAP server channel binding token requirements) zur Verfügung. Dort kann man zwischen den Optionen Never, When supported und Always wählen.

    Channel-Binding für Domänen-Controller über GPO konfigurieren

    LDAP-Signing und Channel-Binding sind nun aktiv. Mittels LDP kann man dies nun wieder überprüfen.

    Nach einer erfolgreichen Verbindung über den Port 389 prüft man mit Hilfe der Bind-Option (erreichbar über Connection), ob die Konfiguration korrekt funktioniert. Dazu wählt man Simple Bind aus und gibt die Anmelde­daten eines Benutzers ein.

    Channel-Binding mit ldp.exe überprüfen

    Hier sollte nun die Fehlermeldung Error <8>: ldap_simple_bind_s() failed: Strong Authentication Required erscheinen, welche die erfolgreiche Konfiguration bestätigt.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    1 Kommentar

    waugal sagt:
    27. Juli 2021 - 11:04

    Sollte ich zusätzlich noch LDAP über SSL/TLS aktivieren?