如何為 Zimbra 設定外部 LDAP 身份驗證

Zimbra 中外部 LDAP 驗證有哪些變更?

外部 LDAP 驗證允許 Zimbra 使用另一個目錄(而非 Zimbra 內部 LDAP 中儲存的密碼)來驗證使用者密碼。目前的 Zimbra Daffodil (v10) 管理員指南指出,外部 LDAP 驗證是按網域配置的,並且外部方法會嘗試使用提供的使用者憑證綁定到指定的目錄。如果綁定成功,則認為密碼有效。

這不會自動將外部 LDAP 目錄轉換為 Zimbra 的帳戶資料庫。 Zimbra 仍然會將 Zimbra 特有的帳戶資料儲存在其自身的目錄中。 v10 指南明確指出,除非您單獨配置自動配置,否則使用者通常需要同時存在於 Zimbra 和外部目錄中。

有關當前產品文檔,請參閱Zimbra Daffodil v10 管理員指南和Zimbra v10 配置指南。

快速規劃清單

  • 確認您要變更的 Zimbra 域名,例如example.com:
  • 確認 Zimbra 中是否已存在相同的用戶,或單獨規劃自動配置。
  • 了解外部 LDAP 主機名稱、連接埠、TLS 方法和憑證鏈。
  • 了解 Zimbra 登入名稱如何對應到 LDAP 中的使用者 DN。
  • 如果無法直接從登入名稱建立 DN,則準備搜尋庫、搜尋篩選器和最小權限搜尋帳戶。
  • 測試時請保持 Zimbra 管理員工作階段處於開啟狀態,以便您可以快速回滾。

首先選擇正確的映射方法。

方法使用它主要設定
直接綁定-DN模板用戶 DN 遵循可預測的模式zimbraAuthLdapURL,zimbraAuthLdapBindDn
搜尋過濾器映射使用者 DN 各不相同,或使用者分佈在多個 OU 中。zimbraAuthLdapSearchBase,,zimbraAuthLdapSearchFilter搜尋綁定憑證
每個帳戶的外部DN少數帳戶需要明確映射。zimbraAuthLdapExternalDn個人帳戶

目前的 v10 配置指南仍然定義了 search-base、search-bind、search-filter 和 per-account external-DN 屬性。較早的 Zimbra 技術中心官方資料解釋了這些映射在實踐中的使用方法。由於這些資料早於 Daffodil 版本,請將其視為操作背景知識,並在進行大規模遷移之前,請根據您已安裝的版本驗證詳細資訊。請參閱Zimbra 技術中心的外部 LDAP 說明。

步驟 1:記錄目前網域身份驗證設定

zimbra以作業系統使用者身分執行管理命令。在進行任何變更之前,請先取得現有網域值:

su - zimbra

zmprov gd example.com \
  zimbraAuthMech \
  zimbraAuthLdapURL \
  zimbraAuthLdapBindDn \
  zimbraAuthLdapSearchBase \
  zimbraAuthLdapSearchFilter \
  zimbraAuthFallbackToLocal

將輸出儲存到您的更改記錄中。 v10 配置指南列出了有效的值zimbraAuthMech,包括zimbra、、ldap以及adKerberos 或自訂機制。在本指南中,目標機制為ldap。

步驟 2:在變更 Zimbra 之前,請先確認網路可達性和 TLS。

在確認基本連線正常之前,請勿追蹤身份驗證對應問題。從 Zimbra 伺服器確認 DNS 解析正常,且 LDAP 端點可存取。對於 LDAPS,您可以使用 OpenSSL 檢查憑證鏈:

openssl s_client -connect ldap.example.net:636 \
  -servername ldap.example.net -showcerts

對於使用標準 LDAP 和 StartTLS 的目錄,請使用適用於您作業系統的 LDAP 用戶端測試支援 StartTLS 的端點。如果ldapsearch已安裝,搜尋帳戶檢查可能如下所示:

ldapsearch -x -H ldap://ldap.example.net:389 -ZZ \
  -D "cn=zimbra-search,ou=svc,dc=example,dc=net" -W \
  -b "ou=people,dc=example,dc=net" \
  "(uid=alice)" dn

Zimbra v10 管理員指南指出,ldaps:端點需要 LDAP 伺服器憑證獲得 Zimbra 的信任。切勿為了通過測試而繞過證書驗證。請根據您 Zimbra 版本對應的信任庫流程,安裝對應的 CA 或憑證鏈。

步驟 3:當使用者 DN 可預測時,設定直接綁定 DN 模板

這是最簡單的模式。假設外部目錄將使用者儲存為 `users` uid=alice,ou=people,dc=example,dc=net,Zimbra 登入名為 `<login>` alice@example.com。如下配置域:

zmprov md example.com zimbraAuthMech ldap

zmprov md example.com \
  zimbraAuthLdapURL "ldaps://ldap.example.net:636"

zmprov md example.com \
  zimbraAuthLdapBindDn "uid=%u,ou=people,dc=example,dc=net"

管理員指南將其描述zimbraAuthLdapBindDn為用於確定外部綁定所用 DN 的格式字串。 Zimbra 技術中心官方文件描述了常見的替換值,例如%u用於登入的本地部分和%n完整登入名稱。

僅當 DN 模板能夠確定性地標識正確的目錄物件時才使用它。如果使用者位於不同的組織單元下,或者他們的 DN 不是從登入名稱派生而來,則應改用搜尋篩選模式。

步驟 4:當無法直接建置 DN 時,使用搜尋過濾映射。

搜尋過濾器映射功能使 Zimbra 能夠首先定位使用者條目,然後根據傳回的 DN 進行身份驗證。 v10 配置指南定義了所需的與搜尋相關的網域屬性。

典型的 OpenLDAP 式配置如下:

zmprov md example.com \
  zimbraAuthLdapSearchBase "ou=people,dc=example,dc=net"

zmprov md example.com \
  zimbraAuthLdapSearchFilter "(uid=%u)"

zmprov md example.com \
  zimbraAuthLdapSearchBindDn \
  "cn=zimbra-search,ou=svc,dc=example,dc=net"

為避免將目錄密碼直接寫入 shell 歷史記錄,請先將其讀取到臨時 shell 變數中:

read -s LDAP_BIND_PASSWORD
zmprov md example.com \
  zimbraAuthLdapSearchBindPassword "$LDAP_BIND_PASSWORD"
unset LDAP_BIND_PASSWORD

搜尋帳戶只需擁有在配置的目錄下尋找使用者所需的讀取權限,無需擁有廣泛的目錄管理權限。

對於 Active Directory,篩選器可能會使用 `<username>`sAMAccountName或 ` userPrincipalName<username>`,具體取決於您的登入約定。 Zimbra 也提供了一種外部 Active Directory 驗證機制,因此,如果 AD 特定的機制更適合您的部署,請使用該機制,而不是強制所有 AD 環境都使用通用的 LDAP 設定。

步驟 5:驗證 Zimbra 實際儲存的內容

更改後,讀取域屬性:

zmprov gd example.com \
  zimbraAuthMech \
  zimbraAuthLdapURL \
  zimbraAuthLdapBindDn \
  zimbraAuthLdapSearchBase \
  zimbraAuthLdapSearchFilter \
  zimbraAuthLdapSearchBindDn \
  zimbraAuthFallbackToLocal

檢查是否有引用錯誤、不正確的基本 DN、意外的主機名,或先前嘗試遺留的舊對映。請勿將搜尋綁定密碼列印到文件、螢幕截圖、工單或 shell 日誌中。

步驟 6:在全面推廣之前,先用一名受控用戶進行測試

選擇一個同時存在於 Zimbra 和外部目錄中的非管理員測試帳戶。故意測試以下情況:

  • 正確的外部 LDAP 密碼允許登入 Zimbra。
  • 外部 LDAP 密碼錯誤,系統拒絕。
  • 已停用或已鎖定的目錄帳戶將按照您的目錄策略運行。
  • 如果 Zimbra 帳戶不存在,則無法登入,除非已設定自動設定。
  • LDAP 伺服器或網路故障會導致預期的故障行為。

最後一個測試很重要,因為zimbraAuthFallbackToLocal它是一個獨立的領域選項。 v10 文件指出其預設值為FALSE。啟用回退功能可能對精心設計的遷移很有用,但如果舊的本機 Zimbra 密碼仍然有效,則停用或變更外部目錄中的密碼可能會立即阻止訪問,從而違背預期。請將回退視為安全策略決策,而不是通用的故障排除開關。

步驟 7:決定是否還需要自動配置

外部身份驗證和帳戶配置是不同的功能。如果希望新目錄使用者自動取得 Zimbra 帳戶,請單獨設定 Zimbra 自動設定。目前的 v10 管理員指南詳細介紹了 EAGER、LAZY 和 MANUAL 模式及其各自的zimbraAutoProv*屬性。

不要盲目地將身份驗證設定用於自動配置。自動配置有獨立的 URL、綁定、搜尋基準、過濾器、帳戶名稱映射和屬性映射選項。首先要確保現有使用者的外部身分驗證可靠;然後再進行設定設計。

常見故障模式及檢查內容

症狀可能區域查看
每個用戶立即失敗連接性或TLSDNS、連接埠、憑證信任、LDAP端點
只有部分用戶失敗DN映射OU 位置、綁定 DN 模板、搜尋過濾器唯一性
LDAP 搜尋功能正常,但 Zimbra 登入失敗用戶綁定或帳戶狀態傳回的 DN、使用者密碼、目錄鎖定/停用狀態、Zimbra 帳戶是否存在
新目錄使用者無法登入。供應建立匹配的 Zimbra 帳戶或配置自動配置
從 LDAP 切換到 LDAP 後,LDAPS 出現故障。證書信託CA 鏈、主機名稱匹配、Zimbra 信任庫
舊的本地密碼仍然有效。備用策略審查zimbraAuthFallbackToLocal

復原計劃

如果外部目錄設定阻止了正常的使用者驗證,請使用已開啟的管理員會話將網域切換回內部 Zimbra 驗證:

zmprov md example.com zimbraAuthMech zimbra

然後驗證該值:

zmprov gd example.com zimbraAuthMech

除非有正當理由,否則請勿在緊急回滾期間刪除外部 LDAP 屬性。保留這些屬性有助於檢查失敗原因,並在修正對應或 TLS 問題後進行重試。

實用參考概要

  • zimbraAuthMech:選擇網域的身份驗證機制。
  • zimbraAuthLdapURL:外部 LDAP 端點;用於ldaps:透過 SSL 進行 LDAP 通訊。
  • zimbraAuthLdapBindDn:用於建立直接綁定使用者 DN 的格式。
  • zimbraAuthLdapSearchBaseZimbra 在其中搜尋外部使用者的子樹。
  • zimbraAuthLdapSearchFilter用於定位使用者的 LDAP 過濾器。
  • zimbraAuthLdapSearchBindDn以及zimbraAuthLdapSearchBindPassword:當匿名搜尋不適用時用於查找的憑證。
  • zimbraAuthLdapExternalDn:為單一 Zimbra 帳戶明確設定外部 DN 對應。
  • zimbraAuthFallbackToLocal控制 Zimbra 在外部身分驗證失敗時是否回退到本機身分驗證。

最終驗證清單

  • Zimbra郵件伺服器可以存取外部LDAP端點。
  • TLS憑證驗證成功,無需使用不安全的變通方法。
  • 所選的 bind-DN 範本或搜尋篩選器會將一個登入名稱對應到一個目錄項目。
  • 測試用戶已存在於 Zimbra 中,或已有意配置自動配置。
  • 正確和錯誤的密碼測試均按預期進行。
  • 備用行為符合您的安全策略。
  • 原始網域設定和回滾指令已記錄在案。

對於生產環境變更,建議分階段部署,並使用一個測試域或一小群使用者進行測試。如果身分映射可預測,外部 LDAP 驗證就非常簡單;大多數棘手的故障都源自於 DN 映射、憑證信任問題,或將身分驗證與帳戶設定混淆。

留下評論

修正 iPhone 上的 Zimbra ActiveSync 連線錯誤

修正 iPhone 上的 Zimbra ActiveSync 連線錯誤

透過檢查帳戶詳細資料、憑證、憑證、網路路徑和伺服器策略來排查 iPhone 上的 Zimbra ActiveSync 錯誤,並比較安全的替代方案。

ownCloud Infinite Scale 與 Nextcloud 28:效能與記憶體使用情況詳解

ownCloud Infinite Scale 與 Nextcloud 28:效能與記憶體使用情況詳解

從架構、效能表現、記憶體需求、快取、擴充和實際部署權衡等方面比較 ownCloud Infinite Scale 和 Nextcloud 28。

修正 Nextcloud “事務性檔案鎖定未設定”錯誤

修正 Nextcloud “事務性檔案鎖定未設定”錯誤

透過檢查部署、設定 Redis 或 KeyValueCache、重新啟動相關服務以及驗證檔案操作,修復 Nextcloud 的事務性檔案鎖定警告。

如何為 Zimbra 設定外部 LDAP 身份驗證

如何為 Zimbra 設定外部 LDAP 身份驗證

透過實際的 CLI 範例、TLS 指南、綁定 DN 和搜尋過濾器模式、驗證步驟和回滾檢查,為 Zimbra 設定外部 LDAP 驗證。

如何在 BigBlueButton 中設定自動錄製清理

如何在 BigBlueButton 中設定自動錄製清理

使用 cron 任務、保留規則、日誌和驗證功能,設定安全的 BigBlueButton 自動化錄製清理機制。比較原始資料清理和完整錄製刪除的效果。

如何透過 RTMP 設定 Jitsi Meet 直播到 YouTube

如何透過 RTMP 設定 Jitsi Meet 直播到 YouTube

比較 Jibri 和 OBS 在將 Jitsi Meet 直播到 YouTube 方面的效能,然後配置正確的路由,安全地使用您的直播金鑰,並驗證即時預覽。

BigBlueButton 與 Jitsi Meet:資源使用與功能矩陣

BigBlueButton 與 Jitsi Meet:資源使用與功能矩陣

透過記錄伺服器規模、記錄成本、教學工具、可擴展性以及選擇或調整自架部署規模的實用指標,比較 BigBlueButton 和 Jitsi Meet。

使用 OCC 修復 Nextcloud 維護模式卡住的問題

使用 OCC 修復 Nextcloud 維護模式卡住的問題

使用 OCC 安全地清除卡住的 Nextcloud 維護頁面,檢查升級是否未完成,並驗證實例是否已準備好供使用者使用。

修正 Zimbra 出站郵件延遲問題:“連線逾時,連接埠 25”

修正 Zimbra 出站郵件延遲問題:“連線逾時,連接埠 25”

診斷 Zimbra 出站郵件延遲錯誤(連接埠 25)。檢查佇列、MX DNS、防火牆、提供者阻止,並設定已核准的 SMTP 中繼。

如何在樹莓派 4 上使用 Conduit 設定 Matrix 伺服器

如何在樹莓派 4 上使用 Conduit 設定 Matrix 伺服器

在 Raspberry Pi 4 上建立一個輕量級的 Matrix 家庭伺服器,包含 Conduit、Docker、NGINX、HTTPS、註冊控制、聯合身份驗證和檢查功能。