LDAPS ist nicht LDAP Signing + Channel Binding

Seit der Ankündigung von Microsoft das LDAP Signing und Channel Binding verbindlich zu aktivieren gibt es sichtlich Verwirrung in der IT-Welt.

Wir bekommen regelmäßig Anfragen, ob z.B. ARM (SolarWinds Access Rights Manager – ehemals 8MAN) noch funktionieren wird, wenn LDAP Signing aktiviert wird.
Hierzu sei gesagt: In unserer Test-Umgebung funktioniert ARM nach wie vor.

Dabei verwenden einige leider den Begriff LDAPS (und auch Heise macht hier Fehler), der etwas völlig anderes ist als LDAP Signing:
LDAPS steht für Secure LDAP und beinhaltet das Verwenden von Zertifikaten. Das ist erst einmal nicht nötig, und wenn man es schon einsetzt, ist LDAP Signing nicht relevant.

Was möchte Microsoft mit der Änderung erreichen?

Durch die Aktivierung von LDAP Signing sollen „Man in the middle“-Angriffe verhindert werden. Bisher war standardmäßig die Kommunikation via LDAP weder verschlüsselt noch signiert. Die einfachste Möglichkeit sich zu schützen ist das Signieren der LDAP-Verbindung. Dieses ist allerdings auch nicht mit allen Geräten und Programmen kompatibel (z.B. mit Multifunktionsgeräten).

Die nachfolgende Tabelle gibt einen Überblick, welche Anmeldeverfahren noch funktionieren werden und welche nicht.

Anmeldeverfahren

Port LDAP/GC

Aktuell

Ab Q3/Q4 2020

Simple Bind

389/3268

Simple Bind mit TLS

636/3269

Unsigned SASL

389/3268

SASL over TLS

636/3269

SASL + LDAP Encryption

389/3268

Es werden also genau 2 Verfahren wegfallen, aber genau diese sind auch die beiden einzig wirklich unsicheren Verfahren.

Wie sollte man vorgehen?

Man sollte früh möglichst vor der zwingenden Umstellung durch den Microsoft-Patch damit anfangen, seine Systeme umzustellen. Somit wird  man nicht überrascht, dass man am Ende eine nicht mehr funktionierende Umgebung hat.

Man hat somit auch Zeit, alle betroffenen Systeme ausfindig zu machen und die erforderlichen Maßnahmen zu treffen.

Es wäre noch möglich das alte Verhalten einfach wieder zu konfigurieren, allerdings ist das absolut nicht zu empfehlen.

Man sollte unbedingt mit den Client-Konfiguration beginnen vor der DC-Konfiguration, ansonsten wird sich kein Client mehr anmelden können:

  1. Für Clients aktivieren, dass diese LDAP Signing anfordern sollen (es also optional ist)
  2. Warten, bis alle Clients diese Konfiguration erhalten haben, dann konfigurieren der DCs, dass dort auch eine Signatur erforderlich ist
  3. Für Clients aktivieren, dass diese LDAP Signing benötigen

Clients so konfigurieren, dass sie LDAP Signing anfordern

Führen Sie die folgenden Schritte aus, um Clients so zu konfigurieren, dass diese eine LDAP Signing anfordern:

  1. Öffnen Sie die Group Policy-Management-Konsole (gpmc.msc)
  2. Erweitern Sie die Gesamtstruktur \ Domänen \ Aktuelle Domäne \ Gruppenrichtlinienobjekte
  3. Erstellen Sie eine neue Gruppenrichtlinie und vergeben Sie einen aussagekräftigen Namen (z. B. Client LDAP Signing)
  4. Erstellte Gruppenrichtlinie bearbeiten und wie folgt navigieren:
    Computerkonfiguration \ Richtlinien \ Windows-Einstellungen \ Sicherheitseinstellungen \ Lokale Richtlinien \ Sicherheitsoptionen
    (Englisch: Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options)
  5. Bearbeiten Sie die Netzwerksicherheit: Signaturanforderungen für LDAP-Clients (Englisch: Network security: LDAP client signing requirements) und wählen Sie die Option Signatur aushandeln (Englisch: Negotiate Signing)
  6. Verknüpfen Sie das Gruppenrichtlinienobjekt mit der Domänenebene
  7. Wiederholen Sie die Schritte 1 bis 6 für jede Domäne Ihres Forests

Warten Sie bis alle Clients die neue Gruppenrichtlinie erhalten und anwenden.

Domänencontroller so konfigurieren, dass LDAP Signing erforderlich ist

Wenn eine neue Gruppenrichtlinie angewendet wird, erstellen Sie ein neues Gruppenrichtlinienobjekt, um die Domänencontroller zu konfigurieren:

  1. Öffnen Sie die Group-Policy-Management-Konsole (gpmc.msc)
  2. Erweitern Sie die Gesamtstruktur \ Domänen \ Aktuelle Domäne \ Gruppenrichtlinienobjekte
  3. Erstellen Sie eine neue Gruppenrichtlinie und vergeben Sie einen aussagekräftigen Namen (z. B. DC LDAP Signing)
  4. Erstellte Gruppenrichtlinie bearbeiten und wie folgt navigieren:
    Computerkonfiguration \ Richtlinien \ Windows-Einstellungen \ Sicherheitseinstellungen \ Lokale Richtlinien \ Sicherheitsoptionen
    (Englisch: Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options)
  5. Bearbeiten Sie Domänencontroller: Signaturanforderungen für LDAP-Server (Englisch: Domain controller: LDAP server signing requirements) und wählen Sie die Option Signatur erforderlich (Englisch: Require Signing).
  6. Verknüpfen Sie das Gruppenrichtlinienobjekt mit dem Container „Domänencontroller“
  7. Überprüfen Sie die Default Domain Controllers Policy (und gegebenenfalls andere Gruppenrichtlinien, die den Domänencontrollern zugeteilt sind) auf welchen Wert dort der Eintrag gestellt ist. Ist er auf Keine (Englisch: None) gestellt, so ist das der ausschlaggebende Wert aufgrund der Standardreihenfolge der angewendeten Gruppenrichtlinien und der Wert aus der eigenen Gruppenrichtlinie wird überschrieben. Idealerweise deaktivieren Sie die Einstellung hier.
  8. Wiederholen Sie die Schritte 1 bis 7 für jede Domäne Ihres Forests

Warten Sie, bis alle Domänencontroller die neue Gruppenrichtlinie erhalten und anwenden. Testen Sie, ob alle Systeme mit Domänencontrollern kommunizieren können. Setzen Sie im Fehlerfall die Signaturanforderungen auf „Keine“ zurück und wenden Sie sich an den Support des Herstellers, um das Problem zu identifizieren und zu beheben.

Konfigurieren Sie Clients so, dass eine Signatur erforderlich ist

Führen Sie die folgenden Schritte aus, um Clients so zu konfigurieren, dass LDAP Signing erforderlich ist:

  1. Öffnen Sie die Group-Policy-Management-Konsole (gpmc.msc)
  2. Erweitern Sie Gesamtstruktur \ Domänen \ Aktuelle Domäne \ Gruppenrichtlinienobjekte
  3. Zuvor erstellte Gruppenrichtlinie (Client LDAP Signing) bearbeiten und wie folgt navigieren:
    Computerkonfiguration \ Richtlinien \ Windows-Einstellungen \ Sicherheitseinstellungen \ Lokale Richtlinien \ Sicherheitsoptionen.
    (Englisch: Computer Configuration\Policies\Windows Settings\Security Settings\Local Policies\Security Options)
  4. Bearbeiten Sie Netzwerksicherheit: Signaturanforderungen für LDAP-Clients (Englisch: Network security: LDAP client signing requirements) und wählen Sie die Option Signatur erforderlich (Englisch: Require signing)
  5. Wiederholen Sie die Schritte 1 bis 4 für jede Domäne ihres Forests

Warten Sie, bis alle Clients die Gruppenrichtlinie erhalten/aktualisieren und anwenden. Anschließend können alle Domänenmitglieder ein neues Update installieren, auf das in den Sicherheitshinweisen verwiesen wird.

Aktivieren Sie Channel Binding

Channel Binding kann derzeit nur via Eintrag in der Registry konfiguriert werden.

  1. Öffnen Sie die Registry (regedit.exe)
  2. Je nach System navigieren Sie wie folgt:
    Pfad für Active Directory Domain Services (AD DS)-Domänencontroller: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters
    Pfad für Active Directory Lightweight Directory Services (AD LDS)-Server: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<LDS-Instanzname>\Parameters
  3. Erstellen Sie einen neuen DWORD Eintrag mit dem Namen LdapEnforceChannelBinding
  4. Stellen Sie einen der folgenden Werte gemäß ihren Anforderungen ein:
    DWORD-Wert: 0 bedeutet deaktiviert. Die Kanalbindung wird nicht validiert. Dies ist das Standardverhalten auf allen Servern, die nicht aktualisiert wurden.
    DWORD-Wert: 1 bedeutet aktiviert, falls unterstützt. Alle Clients, deren Windows-Version aktualisiert wurde, um Kanalbindungstoken (CBT) zu unterstützen, müssen dem Server Kanalbindungstoken vorlegen. Clients mit Windows-Versionen, die nicht für die Unterstützung von CBT aktualisiert wurden, müssen dies nicht tun. Diese Kompromisslösung kann verwendet werden, um die Anwendungskompatibilität zu verbessern.
    DWORD-Wert: 2 bedeutet aktiviert, immer. Alle Clients müssen Kanalbindungsinformationen vorlegen. Der Server lehnt Authentifizierungsanfragen von Clients ab, die dies nicht beachten.
    1 hat die höchste Kompatibilität, aber langfristig ist 2 zu empfehlen.
  5. Wiederholen Sie Schritte 1 bis 4 auf allen DCs ihrer Domäne

Die Einträge haben sofort Wirkung auf den DCs und wird es ist Neustart nötig.

Mehr Informationen hierzu finden Sie bei Microsoft.

Nun ist LDAP Signing und Channel Binding konfiguriert.

Funktionalität testen

Um die Verbindung zu testen, nutzen Sie einfach LDP (ldp.exe). Ab Windows Server 2008 ist LDP Teil der Microsofts Remote Server Administration Tools (RSAT) und wird mit den AD-Verwaltungstools mitinstalliert.

Starten Sie LDP und verbinden Sie sich zu einem DC in Ihrem AD:

LDP Connection

Wenn Sie sich erfolgreich mit ihrem DC verbunden haben, können Sie die Verbindung eines Users durchführen mittels Connection -> Bind.

Wählen Sie „Simple Bind“ und geben Sie die Daten eines Users an:

LDP Simple Bind

Wenn LDSP Signing und Channel Binding korrekt eingerichtet wurden, erhalten Sie eine Fehlermeldung ähnlich der Folgenden:

res = ldap_simple_bind_s(ld, ‚cusatum\administrator‘, <unavailable>); // v.3
Error <8>: ldap_simple_bind_s() failed: Strong Authentication Required
Server error: 00002028: LdapErr: DSID-0C09023C, comment: The server requires binds to turn on integrity checking if SSL\TLS are not already active on the connection, data 0, v4563
Error 0x2028 A more secure authentication method is required for this server.

Error <8>: ldap_simple_bind_s() failed: Strong Authentication Required“ ist der Hinweis darauf, dass eine einfache Verbindung (Simple Bind) nicht mehr möglich ist.