Es besteht noch immer die weit verbreitete Meinung, dass LDAP-Traffic über Port 389 zu Active Directory Domain Controllern generell sensible Informationen wie Userid und Passwort im Klartext übertragen werden. Dies ist allerdings nur der Fall, wenn der LDAP Simple Bind verwendet wird.
Aber schauen wir uns das Verhalten mal genauer an. Mit der .NET-Implementierung lassen sich netterweise die einzelnen Authentifizierungsarten als Parameter beim Aufruf mitgeben, so dass sich das Testsetup einfach abbilden lässt. https://docs.microsoft.com/en-us/dotnet/api/system.directoryservices.authenticationtypes?view=netframework-4.8
Test1 – Simple Bind
DE = new DirectoryEntry(ldappath, user, password, System.DirectoryServices.AuthenticationTypes.None);
Im Netzwerktraffic sieht man tatsächlich: Die Credentials werden im Klartext übertragen
Ldap: Bind Request, MessageID: 1, Version: 3
- LDAPMessage: Bind Request, MessageID: 1
+ ParserHeader:
+ MessageID: 1
+ OperationHeader: Bind Request, 0(0)
- BindRequest: Version:3, Name:ldaptest@su-pen.local, UserName: P@ssw0rd, Authentication type = simple
+ Version: 3
+ Name: ldaptest@su-pen.local
- Authentication: UserName: P@ssw0rd, Authentication type = simple
+ AuthenticationTypeHeader: Authentication type = simple
SimpleAuthentication: P@ssw0rd
Der Simple-Bind funktioniert nicht mehr, wenn auf den Domain Controllern folgende Einstellung gesetzt ist:
Domain controller: LDAP server signing requirements -> Require signature
Test2 – AuthenticationType Secure – Nicht-Domänenmitglied
DE = new DirectoryEntry(ldappath, user, password, System.DirectoryServices.AuthenticationTypes.Secure);
(Die Defaulteinstellung seit .NET 2.0) Mythos: LDAP-Traffic auf Port 389 ist unsicher weiterlesen