就像其他軟體組態一樣,在 OpenLDAP 代理設定過程中可能會遇到問題。在這篇文章中,我們將嘗試總結一些 OpenLDAP 代理設定的技巧和提示。
OpenLDAP 版本
我們始終建議您安裝最新版本的 OpenLDAP,因為它們包含最新的功能、錯誤修正和安全修補程式。您應該始終參考最新的 發行說明 以了解新的變更。如果您使用的是較舊版本的 OpenLDAP 並遇到一些異常行為,請嘗試先更新到最新版本的 OpenLDAP。
以下是我們遇到的一些問題,這些問題已透過最新版本解決。
- 當遠端 LDAP 伺服器關閉時,結果將始終為空清單,不會搜尋其他遠端 LDAP 伺服器
- 嘗試連線到使用 SSL 的遠端 LDAP 伺服器時,LDAP 查詢會掛起且永遠不會返回
SSL 組態
如果您想為客戶提供安全的服務,您可以使用以下變更啟用 SSL 功能。
- 在組態中,設定憑證檔案及其私密金鑰位置,以及 CA 憑證位置。詳細設定可在 OpenLDAP Proxy -- slapd.conf 中找到。
- 執行 slapd 服務時,您需要在其 -h 選項中指定 ldaps:///。請見下文
/usr/sbin/slapd -h 'ldap:/// ldapi:/// ldaps:///' -g ldap -u ldap - 從客戶端,使用預設的 SSL 埠 389 連線。
如果您希望代理使用 SSL 連線到遠端 LDAP,如果您始終想要信任伺服器的憑證,則需要更新代理伺服器中的 /etc/ldap/ldap.conf。基本上,您需要在組態檔案中新增以下行。
TLS_REQCERT allow
簡單驗證
在某些情況下,當客戶端查詢遠端 LDAP 伺服器時,需要進行驗證。因此,當 LDAP 代理連線到遠端伺服器時,它需要提供伺服器 binddn 和 認證 以進行繫結。這可以在 /etc/ldap/slapd.conf 中設定,並在 uri 項目之後新增 idassert-bind 項目。
除此之外,您還需要為代理建立虛擬 dn 和密碼,以便 LDAP 客戶端可以使用它來連線。這些設定是 rootdn 和 rootpw。之後,您需要在 idassert-bind 項目之後新增 idassert-authzFrom 項目,以告知誰有權啟動與遠端伺服器的繫結。否則,繫結可能無法運作。
詳細設定可在 OpenLDAP Proxy -- slapd.conf 中找到。
屬性對應
OpenLDAP 提供屬性對應功能,以便可以將遠端 LDAP 伺服器中的一些屬性對應到客戶端可以參考的一些使用者友善的屬性名稱。此功能通常透過 overlay rwm 項目完成。這會向代理新增一個外掛程式,因此可以完成屬性對應。但是,屬性對應是全域性的,這表示您無法為每個遠端 LDAP 伺服器設定單獨的對應。
此限制帶來一個問題,即某些屬性對應需求無法滿足。例如,如果您有一個基於 OpenLDAP 的遠端 LDAP 伺服器和一個基於 Windows AD 的遠端 LDAP 伺服器,則要求將 OpenLDAP 伺服器的 uid 對應到 accountId,以及將 Windows AD 的 sAMAccountName 對應到 accountId,由於上述限制,這不容易做到。如果您的組態中有以下對應
overlay rwm
rwm-map attribute accountId uid
rwm-map attribute accountId sAMAccountName
只有最後一個對應會生效。第一個被覆蓋了。但是,如果您想讓兩個對應都生效,您可以執行以下操作
overlay rwm
rwm-map attribute accountId uid
overlay rwm
rwm-map attribute accountId sAMAccountName
在第二個對應之前新增另一個 overlay rwm 項目。若要進一步了解覆蓋層的工作原理,您可以參考 官方文件。以下是其功能的摘要。
基本上,覆蓋層代表一種方法:
- 自訂現有後端的行為,而無需更改後端程式碼,也無需編寫具有完整功能的新自訂後端
- 編寫可應用於不同後端類型的通用功能
希望這些提示能幫助您設定 OpenLDAP 代理。如果您有其他提示,請隨時發表評論。