如何通過 LDAP over Proxy with TLS/SSL 配置 AD 身份驗證

Active Directory (AD) 和 OpenLDAP 在企業中都扮演著重要的角色。 事實上,在同一家公司內,您會發現 UNIX 組使用 OpenLDAP,LAN 和 Windows 管理員使用 AD。 但是,大多數人無法通過 OpenLDAP 完全訪問 AD 模式。 在本文中,我們將考慮如何使用 LDAP over Proxy 和傳輸層安全性/SSL 配置 Active Directory 身份驗證。

OpenLDAP 和 AD 可以和平共存——關鍵是找到允許 LDAP 操作跨越 AD 和 OpenLDAP 部署邊界的最佳方式。 實現這一目標的一種方法是使用 LDAP over TLS/SSL 配置 Active Directory 身份驗證。 我們的主要目標是將我們的 LDAP 與 Active Directory 集成。 我們將在主配置文件中包含一些模式並添加所需的參數。

在我們開始之前

在繼續之前,讓我們定義術語。 首先,LDAP 服務器實際上就是所謂的目錄服務代理 (DSA)。 其次,DSA 管理目錄信息樹 (DIT) 的一部分或全部。 可以部署多個 DSA 來管理整個 DIT 以及允許複製和高可用性。 DSA 管理的 DIT 部分稱為分區或數據庫。 我們將使用術語數據庫。

確保 OpenLDAP 已啟動並正在運行

OpenLDAP 服務器進程名為 slapd,代表“獨立 LDAP 守護進程”。 它提供了幾乎所有 OpenLDAP 服務器功能,包括接受來自 LDAP 客戶端的連接、處理查詢和更新以及實施限制對目錄中機密信息訪問的 ACL 的能力。

讓我們假設您已經安裝並配置了 OpenLDAP。

根據上面的配置,slapd為目錄樹dc=管理一個數據庫example,dc=com。

請確保 slapd 服務正在運行。

service slapd status

現在,我們將使用 ldapsearch 命令測試我們的條目(來自本文提供的相同示例配置)是否正確加載。

ldapsearch -LLL -x -h localhost -b 'dc=example,dc=com'

-x 選項指定 ldapsearch 應使用簡單身份驗證而不是簡單身份驗證和安全層 (SASL)。 通過簡單的身份驗證,LDAP 客戶端以明文形式發送憑據。 即使您使用 LDAP over SSL (LDAPS) 或 LDAP StartTLS,您仍然使用簡單的身份驗證,但用於通信的隧道是加密的(並且更加安全)。

回到 ldapsearch 命令。 它執行查詢以查找樹根下的所有條目。 正如預期的那樣,ldapsearch 返回我們最初通過 ldapadd 導入的所有條目,如提供的 example.

與活動目錄集成

我們已經通過在本地客戶端上使用簡單的 ldapsearch 命令輕鬆查看來自 OpenLDAP 的條目,但是查看在 Active Directory 下管理的條目呢? 為此,您需要將 OpenLDAP 定向到 Active Directory。

請確保所有必需的模塊都包含在 slapd.conf 文件中:

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema

下一步是啟用 openLDAP 代理作為 Active Directory,請導航到 slapd.conf 的末尾並添加以下行:

database ldap
subordinate
rebind-as-user yes
uri "ldaps://ad-dc.example.com"
suffix "DC=corp,DC=ad,DC=com"
chase-referrals yes
idassert-bind bindmethod=simple
binddn="CN=ad-username,DC=corp,DC=ad,DC=com"
credentials="password"
tls_cacert=/etc/openldap/certs/certificate_file

數據庫 LDAP – 使用 slapd-ldap 定義了一個新的後端,這將是我們的代理服務。

下屬 – 如果沒有這個關鍵字,slapd 只搜索由搜索庫指定的數據庫(例如,如果 dc=example,dc=com 是指定的搜索基礎,然後 cn=users,dc=example,dc=com 永遠不會被檢查,因為它是一個不同的 slapd 數據庫)。

重新綁定為用戶 – 此選項告訴 slapd 使用客戶端提供的憑據綁定到遠程目錄服務代理。 請注意,憑據必須在 AD 中有效。

– 指定遠程 LDAP 服務器,在本例中為 AD 域控制器。

追逐轉介 – 此選項指定 slapd 將自動追踪任何推薦。

idassert綁定 – 此參數用於綁定到遠程服務器並可選地授權另一個身份。

綁定方法 – 該語句用於定義代理使用什麼方法綁定到具有給定管理身份的遠程服務器。

在這種情況下,我們使用 簡單的 因為強烈建議將 TLS 與簡單綁定一起使用。 簡單綁定需要額外的參數:

binddn=”CN=ad-username,DC=corp,DC=ad,DC=com” 用於指定綁定DN;
credentials=”password” 用於指定綁定憑證;

tls_cacert – 傳輸層安全證書頒發機構證書定義了允許客戶端驗證 LDAP 服務器證書的證書的路徑和文件名。 該文件可以從 X.509 證書供應商處獲得,或者在自簽名的情況下 – 從 LDAP 服務器複製。

好的,現在客戶端將被授權為“CN=ad-username,DC=corp,DC=ad,DC=com”,即使他們實際上匿名連接到代理。

現在,重新啟動 slapd 服務並再次運行 ldapsearch

ldapsearch -v -H "ldaps://ad-dc.example.com:636/" -b "DC=corp,DC=ad,DC=com" -s sub -D "CN=ad-username,DC=corp,DC=ad,DC=com" -w "password"

如果命令失敗,請確保:
1. 您可以訪問 ldaps://ad-dc。example.com:636
2. 綁定客戶端提供的憑證(Active Directory 端)

結論

您現在應該能夠將 Active Directory 附加到 OpenLDAP 目錄的任何部分。 您可以在使用 OpenLDAP 的 LDAP 應用程序中對您的 AD 用戶進行身份驗證,甚至可以提供對網絡中多個 AD 的訪問(如果它們不是更大林的一部分)。