Jump to content

LDAP über TLS vom VPN Client


Go to solution Solved by cj_berlin,

Recommended Posts

Konfiguration: Windows 2016 Hyper-V VM als DC, Clients Windows 10 Anmeldung über VPN mit User Zertifikaten, kein Domainmitglied.

Wie kann ich den LDAPS (SSL/TTLS) vom Client erzwingen? Ich habe auf dem DC das notwendige Computer Zertifikat erstellt. Der Test auf dem DC mit ldp.exe über Port 636 mit TLS verschlüsselt funktioniert. Auch der Test mit der Software "Softerra LDAP Administrator" mit den gleichen Einstellungen auf dem VPN Client funktioniert. D.h. der Client kann eine verschlüsselte Verbindung über Port 636 erfolgreich aufbauen. Wenn ich jetzt eine LDAP Abfrage auf dem Client z.B. über die Anzeige die Sicherheitseinstellungen einer Netzwerkfreigabe ausführe, dann sehe ich in der Firewall nur den Port 386. Laut MS Dokumentation erfolgt eine verschlüsselte Anfrage über Port 636. Deshalb die Frage wie kann die LDAP Verschlüsselung von einem Nicht-Domain-Mitglied erzwungen werden?

Weitere Frage: ich habe die entsprechenden Einstellungen für LDAP Channel Binding und Signing auf DC und den Clients gesetzt. Wie kann ich überprüfen, ob die Einstellungen greifen? Die erweiterte Protokollierung über die Registry ("16 LDAP Interface Events" = 2) habe ich aktiviert. Im Ereignisprotokoll finde ich keine Einträge.

Link to post

389 heißt nicht zwingend Klartext. Das geht auch mit tls ;)

vor 5 Minuten schrieb winmadness:

Frage wie kann die LDAP Verschlüsselung von einem Nicht-Domain-Mitglied erzwungen werden?

Am Client gar nicht. Aber du kannst am dc erzwingen, dass nur noch signed möglich ist, und das geht nicht mit ohne domainmember afaik. Heißt dann bleibt nur noch 636 für ldaps.

Link to post
vor 41 Minuten schrieb NorbertFe:

Aber du kannst am dc erzwingen, dass nur noch signed möglich ist, und das geht nicht mit ohne domainmember afaik.

Danke für die schnelle Antwort. Was ist mit ".. geht nicht mit ohne ..." - meinst Du ".. geht nicht ohne domainmember"?

Ich habe am DC CBT und Signing bereits erzwungen - Sicherheitsoptionen "Domänencontroller: Anforderungen an das LDAP-Serverkanal-Bindungstoken" auf "Immer" und "Domänencontroller: Signaturanforderungen für LDAP-Server" = "Signatur erforderlich". Auf dem Client zusätzliche "Netzwerksicherheit: Signaturanforderungen für LDAP-Clients"  = "Signatur erforderlich" (wenn ich richtig verstanden habe, benötige ich diese Option aber eigentlich nicht). Wie gesagt wird nur Port 386 verwendet. Kann ich auf dem Server (Client) irgendwo sehen, ob die Verbindung verschlüsselt ist?

 

Ich habe einen zusätzlichen Test vorgenommen: auf dem DC das Computerzertifikat in "Eigene Zertifikate" gelöscht. Wie erwartet ist damit keine TLS Verbindung (ldp.exe) mehr möglich. Jetzt auf dem Client wieder über Eigenschaften -> Sicherheit eines Netzwerklaufwerk eine LDAP Anfrage erzwungen. Diese war erfolgreich über Port 389 und somit unverschlüsselt.

Link to post
vor 10 Stunden schrieb winmadness:

Wie gesagt wird nur Port 386 verwendet.

389 vermute ich?

 

vor 10 Stunden schrieb winmadness:

Kann ich auf dem Server (Client) irgendwo sehen, ob die Verbindung verschlüsselt ist?

Das kannst du mit ldp oder jedem beliebigen LDAP Browser testen. Du wirst einen simple Bind nicht hinbekommen auf Port 389. alternativ nimm dir Wireshark oder den netmon und schau nach, ob das Klartext ist. ;)

  • Thanks 1
Link to post
  • Solution

Moin,

 

alles hier beschrieben: https://techcommunity.microsoft.com/t5/core-infrastructure-and-security/ldap-channel-binding-and-ldap-signing-requirements-march-2020/ba-p/921536

 

TLDR;

Auditing einschalten (hast Du ja schon gemacht)

Event 2889 im Directory Service Log: Verbindungen ohne Signierung ODER ohne TLS

Event 3039 im Directory Service Log: Verbindungen mit TLS, aber ohne Channel Binding

 

Wenn keines dieser Events kommt, wird TLS ausgehandelt und offenbar auch CB verwendet.

 

Wenn Du es ganz genau wissen willst, kannst Du den Diagnostic Level höher drehen und Dich auf einen Haufen Events vorbereiten ;-) NB: Die Einstellung "Require Signing" erzwingt die Signierung nur dann, wenn TLS nicht verwendet wird!

 

@NorbertFe Warum sollte ich keinen Simple Bind auf 389 hinbekommen? Wenn die Signierung klappt, muss es doch gehen, und dafür braucht es keine Domänen-Mitgliedschaft... oder übersehe ich ob der frühen Stunde etwas?

  • Thanks 1
Link to post
vor 27 Minuten schrieb cj_berlin:

Wenn die Signierung klappt, muss es doch gehen, und dafür braucht es keine Domänen-Mitgliedschaft.

Bist du sicher, dass die SIgnierung bei Nicht-Domänenmitgliedschaft möglich ist? Ich bin da nicht sicher, deswegen oben auch das AFAIK.

Edit: OK im verlinkten Artikel steht es wäre common bei Nicht-Windows Clients, also muss es wohl gehen. ;) Vermutlich meinte ich, dass man keinen Klartext Simple Bind hinbekommt. Ich hatte dazu damals auch einen Artikel bei Nils veröffentlicht:

https://www.faq-o-matic.net/2018/07/16/ldap-signing-auf-domnencontrollern-erzwingen/

Edited by NorbertFe
Link to post

Danke an euch für die Tipps. Ich habe mit Wireshark festgestellt, dass die Anfragen nicht verschlüsselt werden.

Ein "Simple Bind" wird ohne Verschlüsselung abgelehnt - Fehlermeldung

res = ldap_simple_bind_s(ld, 'domain\user', <unavailable>); // v.3
Error <8>: ldap_simple_bind_s() failed: Strenge Authentifizierung erforderlich
Server error: 00002028: LdapErr: DSID-0C090273, comment: The server requires binds to turn on integrity checking if SSL\TLS are not already active on the connection, data 0, v3839
Error 0x2028 Eine sicherere Authentifizierungsmethode wird für diesen Server benötigt.

 

  • Like 1
Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...