2013-07-01 41 views

回答

0

我終於設法測試,如果我使用Wireshark連接安全或不安全。 您可以將過濾器設置爲:tcp.port eq 636或tcp.port eq 389 ,這樣您將看到通過636和389端口的通信。

我的結論是,即使未在ldp中選中ssl,ldap服務器也會在636端口上使用安全連接,如果設置了端口636,則檢查它沒有影響。

我認爲這個複選框的目的是強制ssl由客戶端,所以如果服務器端口不支持ssl,連接將不會建立。

當我使用我的C#代碼則默認爲端口636,當它不是固定默認爲389

的安全連接的方式來使用從代碼的安全連接要麼設置連接認證鍵入ssl或在ldap路徑中指定ssl端口。

+0

完全取決於如何配置LDAP服務器。你所描述的當然是正常的狀態,但你通過端口389忽略了STARTTLS,這是安全的。 – EJP

+0

現在,我正在經歷這些練習,只需輸入'ldap',因爲WireShark過濾器可以爲您提供所需的實際LDAP流量。當SASL正在使用時,您可以判斷它是否提供完整性保護(SASL GSS-API Integrity)和/或隱私保護(SASL GSS-API Privacy)。但是,這兩者[不一樣](http://security.stackexchange.com/q/123478/21509)。 – rdev5

0

端口號碼與它無關。 389是非安全LDAP連接的標準定義端口,636是安全連接的標準定義端口。大多數服務器可以配置爲將任何端口用作安全端口,並將任何其他端口用作非安全端口。 389和636僅僅是基於標準的默認值。服務器可以配置爲使用636作爲非安全端口,使用389作爲安全端口 - 雖然這可能是違反標準的反直覺配置。此外,使用StartTLS可以將389上的連接提升爲安全連接,因此389也可以是安全的。

+0

我知道端口可以設置不同。我的答案是基於默認設置。如果設置了不同的設置,則應在相應的答案中更改它們。但謝謝澄清。 順便說一句,我仍然沒有測試過一個案件,當試圖從安全的代碼連接,但服務器端口設置爲不同於636端口。我假設在這種情況下,連接將失敗,你我將不得不手動設置端口。 –

+0

根DSE可以提供屬性以告知客戶端有關LDAP服務器正在使用的安全性和安全端口。例如,IBM的Tivoli Directory Server提供了以下屬性,可以幫助LDAP客戶端,找出安全端口: secureport:636 安全:ssltls 端口:389 當然,並不是所有的LDAP供應商提供的信息根DSE,即使他們這樣做,你仍然必須知道非安全端口來檢索根DSE。 – Bora

+0

我確認在.net代碼中的DirectoryEntry對象中設置AuthenticationTypes.SecureSocketsLayer,而不指定ldap路徑中的端口會導致連接使用端口636,所以如果在ldap服務器中爲ldaps設置了不同的端口,在ldap路徑中指定。如果連接不安全,沒有指定端口,.net將嘗試連接端口389。 –