Ldap

使用 GnuTLS 和 TLS=required 配置 OpenLDAP

  • March 23, 2017

我們有一個 openldap 伺服器,不想允許未加密的通信,所以可以接受 tls over 389 ( starttls) 或 ssl over 636 ( ldaps)。

當我們使用 slapd.conf 進行配置時,olcSecurity這不是一個選項。

TLSCipherSuite似乎是使用 slapd.conf 的方法。但是,當使用該 slapd 時,要麼不啟動,要麼忽略設置(即接受未加密的請求)。

使用時 slapd 無法啟動(錯誤:TLS init def ctx failed:-1):

- TLSCipherSuite ALL
- TLSCipherSuite Default
- TLSCipherSuite ALL:!NULL
- TLSCipherSuite ALL:!aNULL
- TLSCipherSuite AES256-SHA #one of the ciphers offered by openssl

slapd 啟動但在使用時接受未加密的請求:

- TLSCipherSuite NORMAL
- TLSCipherSuite NORMAL:!NULL #would be acceptable
- TLSCipherSuite !NULL #would be acceptable

我們測試

ldapsearch -L -x -W -h [SERVER] -D [USER] - b [SEARCHBASE] uid=[USER] 

(未加密)

ldapsearch -L -x -W -ZZ -h [SERVER] -D [USER] - b [SEARCHBASE] uid=[USER]

(加密)

執行 openldap 的作業系統是 debian 8.7。openldap 版本似乎使用的是 gnutls,而不是 openssl,所以這可能是問題的原因。

但是最後三個TLSCipherSuite變體似乎是有效的語法,至少 slapd 開始時沒有錯誤。為什麼不!NULL阻止 slapd 接受未加密的請求?最後兩個(使用任何可用的密碼,但不允許沒有密碼)是可以接受的。

是否需要額外的設置/參數?

請注意,我們嘗試了此處給出的建議(如上所述),但沒有奏效。

停止使用slapd.conf,但這只是一般建議。大多數(如果不是全部olc*)指令slapd-config都可用作slapd.conf樣式配置的非 olc 指令。

除非您還執行非 TLS SASL,否則應該足夠security了。security tls=1


您的操作TLSCipherSuite將不起作用,因為這些操作僅在使用 TLS 後才控制可接受的密碼,選擇是否使用/需要 TLS 並不重要。為此,您需要使用security. 但是,您應該使用更好的 TLS 選項,例如至少TLSCipherSuite HIGH:!aNull:!MD5:@STRENGTHolcTLSProtocolMin 3.1.


來自slapd.conf(5)

security <factors>

指定一組需要的安全強度因子(由空格分隔)(請參閱**sasl-secprops's minssf**選項以獲取安全強度因子的描述)。該指令可以在全域和/或每個數據庫中指定。 **ssf=<n>**指定整體安全強度因子。 **transport=<n>**指定傳輸安全強度因子。 tls=<n> 指定 TLS 安全強度因子。 **sasl=<n>指定 SASL 安全強度因子。 update_ssf=<n>指定目錄更新所需的整體安全強度因子。update_transport=<n>指定目錄更新所需的傳輸安全強度因子。update_tls=<n> 指定目錄更新所需的 TLS 安全強度因子。update_sasl=<n>指定目錄更新所需的 SASL 安全強度因子。simple_bind=<n>**指定簡單使用者名/密碼驗證所需的安全強度因子。請注意,傳輸因子是底層傳輸提供的安全性度量,例如 ldapi://(最終是 IPSEC)。它通常不使用。

引用自:https://serverfault.com/questions/836084