Tiejaeger 10 Geschrieben 22. April 2010 Melden Teilen Geschrieben 22. April 2010 Bei so denke ich einen LDAP abfrage mit SSL funktioniert die Autentifizierung: " 53 = ldap_set_option(ld, LDAP_OPT_ENCRYPT, 1) res = ldap_bind_s(ld, NULL, &NtAuthIdentity, NEGOTIATE (1158)); // v.3 {NtAuthIdentity: User='test'; Pwd=<unavailable>; domain = 'geheim'} Authenticated as: 'geheim\test'. " Aber bei einer Abfrage mit TLS nicht: " ldap_start_tls_s(ld, &retValue, result, SvrCtrls, ClntCtrls) Error <0x35>:ldap_start_tls_s() failed: Ausführung verweigert Server Returned: 0x0: Erfolg Server error: <empty> " Was muss ich da extra beachten?:confused: Zitieren Link zu diesem Kommentar
NilsK 2.930 Geschrieben 22. April 2010 Melden Teilen Geschrieben 22. April 2010 Moin, How to enable LDAP over SSL with a third-party certification authority Gruß, Nils Zitieren Link zu diesem Kommentar
P.Foeckeler 11 Geschrieben 23. April 2010 Melden Teilen Geschrieben 23. April 2010 Halli Hallo, im Artikel den Nils genannt hat ist es irgendwo im Kleingedurckten versteckt, ich wollte es aber nochmal klarstellen, weil es des öfteren zur Verwirrungen führt: Active Directory Domänencontroller / AD LDS Server unterstützen z.Zt. das StartTLS Kommando NICHT. Das sieht man u.a. daran, wenn man über LDAP die Eigenschaften supportedCapabilities und die supportedControls im rootDSE-Eintrag ausliest. Für StartTLS müßte hier die OID 1.3.6.1.4.1.1466.20037 vorhanden sein. Was geht, ist LDAP over SSL, d.h. du kannst zwar nicht innerhalb einer LDAP-Session auf TLS wechseln, aber Du läßt von vornherein die gesamte LDAP Session innerhalb eines SSL-Tunnels ablaufen, indem Du Dich mit Port 636 auf dem Domänencontroller verbindest, das geht aber nur wenn dort ein Zertifikat installiert ist (aber dies ist ja im Artikel den Nils genannt hat ausführlich beschrieben). Btw.: Wenn du das hier machst 53 = ldap_set_option(ld, LDAP_OPT_ENCRYPT, 1) res = ldap_bind_s(ld, NULL, &NtAuthIdentity, NEGOTIATE (1158)); // v.3 dann hat das nix mit SSL zu tun, sondern du benutzt den Signing and Sealing Channel Encryption Mechanismus der Negotiate Auth Kerberos Authentication, die ein Domänencontroller unterstützt, d.h. nicht nur User/PAsswort wird verschlüsselt, sondern auch die Daten (das ist aber Microsoft SSPI und nicht SSL...), Hinweise darauf findest Du hier http://www.joekaplan.net/SearchView.aspx?q=digest#afcdf0808-8196-4eb7-b171-8b54a5790687 da geht es zwar um Digest Auth, aber es wird auch was zur Channel Encryption erklärt. Fazit: Probiers mal über den 636 Port, oder benutz einfach Negotiate Auth, das verschlüsselt auch. Gruß, Philipp Zitieren Link zu diesem Kommentar
Tiejaeger 10 Geschrieben 23. April 2010 Autor Melden Teilen Geschrieben 23. April 2010 Hallo Danke für die Schnellen Antworten Mir würde LDAP mit ssl ja reichen und da ich die Abfrage hier (siehe unten) über den Port 636 gestellt habe und auch die schritte die im Link von NilsK alle schon durchgeführt habe wäre das eine LDAP over SSL abfrage. Wie kann ich das nun Prüfen? Oder liege ich komplett falsch? Bei so denke ich einen LDAP abfrage mit SSL funktioniert die Autentifizierung:" 53 = ldap_set_option(ld, LDAP_OPT_ENCRYPT, 1) res = ldap_bind_s(ld, NULL, &NtAuthIdentity, NEGOTIATE (1158)); // v.3 {NtAuthIdentity: User='test'; Pwd=<unavailable>; domain = 'geheim'} Authenticated as: 'geheim\test'. " Oder is das die richtige abfrage? " ld = ldap_sslinit("dc1", 636, 1); Error 0 = ldap_set_option(hLdap, LDAP_OPT_PROTOCOL_VERSION, 3); Error 0 = ldap_connect(hLdap, NULL); Error 0 = ldap_get_option(hLdap,LDAP_OPT_SSL,(void*)&lv); Host supports SSL, SSL cipher strength = 128 bits Established connection to dc1. Retrieving base DSA information... Getting 1 entries: Dn: (RootDSE) configurationNamingContext: CN=Configuration,DC=streng,DC=geheim,DC=de; currentTime: 23.04.2010 10:59:49 Mitteleuropäische Somm; defaultNamingContext: DC=streng,DC=geheimt,DC=de; dnsHostName: dc1.streng.geheim.de; domainControllerFunctionality: 4 = ( WIN2008R2 ); domainFunctionality: 3 = ( WIN2008 ); dsServiceName: CN=NTDS Settings,CN=dc1,CN=Servers,CN=strasse,CN=Sites,CN=Configuration,DC=streng,DC=geheim,DC=de; forestFunctionality: 3 = ( WIN2008 ); highestCommittedUSN: 127158; isGlobalCatalogReady: TRUE; isSynchronized: TRUE; ldapServiceName: streng.geheim.de:dc1$@STRENG.GEHEIM.DE; namingContexts (5): DC=streng,DC=geheim,DC=de; CN=Configuration,DC=streng,DC=geheim,DC=de; CN=Schema,CN=Configuration,DC=streng,DC=geheim,DC=de; DC=ForestDnsZones,DC=streng,DC=geheim,DC=de; DC=DomainDnsZones,DC=streng,DC=geheim,DC=de; rootDomainNamingContext: DC=streng,DC=geheim,DC=de; schemaNamingContext: CN=Schema,CN=Configuration,DC=streng,DC=geheim,DC=de; serverName: CN=dc1,CN=Servers,CN=strasse,CN=Sites,CN=Configuration,DC=streng,DC=geheim,DC=de; subschemaSubentry: CN=Aggregate,CN=Schema,CN=Configuration,DC=streng,DC=geheim,DC=de; supportedCapabilities (5): 1.2.840.113556.1.4.800 = ( ACTIVE_DIRECTORY ); ............. " Zitieren Link zu diesem Kommentar
P.Foeckeler 11 Geschrieben 23. April 2010 Melden Teilen Geschrieben 23. April 2010 Hmmm, es gibt auf dem Server kein einfaches Protokoll-Log a la "LDAP Session wurde erfolgreich über SSL aufgebaut"... Um wirklich sicher zu gehen, dass man auf dem Netz LDAP-verschlüsselt unterwegs ist, fällt mir mal auf die Schnelle nur der hier ein: http://www.wireshark.org/ Unverschlüsseltes LDAP ist nämlich im Paket Sniffer sehr leicht zu identifizieren, ein Beispiel für einen Wireshark-LDAP-Sniff unverschlüsselt hast du z.B. hier: http://www.selfadsi.de/ldap.htm#Frame Wenn Du bei dir keine lesbaren Kommandos / DNs / Attributwerte siehst wenn Dein Script läuft, dann kannst Du beruhigt sein ;) Gruß, Philipp Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.