LDAP background
Table of contents
背景
- 崑山團隊的說明LDAP架設
AD vs LDAP
活動目錄Active Directory (AD) 和輕量級目錄訪問協定LDAP (Lightweight Directory Access Protocol) 是兩個用於身份驗證和帳戶管理的不同概念。以下是對比它們的一些主要特點:
Active Directory (AD):
概念: AD 是由 Microsoft 開發的目錄服務,提供了一個集中式的帳戶管理和身份驗證系統。
使用場域: 主要用於 Windows 環境,特別是企業中使用 Windows Server 的情況。AD 還包括其他功能,如群組政策、DNS 管理等。
整合性: AD 通常與其他 Microsoft 產品和服務(如 Exchange、SharePoint 等)集成得更緊密。
安全性: 提供高度的安全性,支持 Kerberos 協議,並有豐富的安全功能,如密碼政策、帳戶鎖定等。
管理工具: 使用者和資源的管理通常透過 Windows Server 上的 Active Directory Users and Computers 工具進行。
LDAP (Lightweight Directory Access Protocol):
概念: LDAP 是一個開放標準的通訊協議,用於訪問和維護分散式目錄信息服務。
使用場域: LDAP 是跨平台的,可用於各種操作系統和應用程式,並且不僅限於 Windows 環境。常見於企業、學術機構和網際網路應用。
整合性: LDAP 是一個通用協議,可以與多種應用程式和服務集成,包括電子郵件、網路服務、VPN 等。
安全性: 提供基本的安全性,可以透過 SSL/TLS 進行加密,但相對於 AD,可能需要額外的配置和擴充。
管理工具: LDAP 沒有固定的管理工具,管理通常透過 LDAP 客戶端工具、Web 管理介面或自定義程式實現。
應用場域時機選擇:
選擇 AD: 在 Windows 環境中,特別是當組織使用 Microsoft 產品時,AD 提供了更緊密的整合和管理功能。
選擇 LDAP: 當需要跨平台支持,或者在非 Windows 環境中運行的情況下,LDAP 提供了更靈活的選擇。
總體而言,AD 和 LDAP 都有其優勢和適用場景,選擇取決於組織的需求、環境和技術堆棧。
LDAP有可能讓使用者自行登記其個資、由程式判斷應賦予什麼樣的角色權限,而不是人工進行審查管理嗎?
現成測試用的LDAP伺服器
copyprogramming
- Are there any available practice AD and LDAP servers in the form of a sample? by copyprogramming.com
forumsys
- seems not work
- forumsys.com
- Server: ldap.forumsys.com
- Port: 389
-H ldpa://ldap.forumsys.com:389
- Bind DN: cn=read-only-admin,dc=example,dc=com
- Bind Password: password
- All user passwords are password. You may also bind to individual Users (uid) or the two Groups (ou) that include:
- ou=mathematicians,dc=example,dc=com,uid=…
- riemann
- gauss
- euler
- euclid
- ou=scientists,dc=example,dc=com,uid=…
- einstein
- newton
- galieleo
- tesla
- usage: stackoverflow
- curl command
- ldapsearch not works:
ldapsearch -x -H ldap://ldap.forumsys.com:389 -D "ou=scientists,dc=example,dc=com,uid=einstein" -w "password" -b "dc=example,dc=com"
docker instance: upekshejay
- Simple LDAP Auth Server
- Docker Pull Command
- common-password: “
itachi
”, /* password for all the users */
ldapsearch -x -H ldap://0.0.0.0:389 -D “ou=users,dc=mtr,dc=com,cn=kamal” -w “itachi” -b “dc=mtr,dc=com”`
docker instance: openldap
- 使用 Docker 建置 LDAP 系統
- 注意:文中8080在druid系統中已被佔用,須更改新的端口。
- 第一次登入(http://localhost:7081)的資訊如下:使用者名稱:cn=admin,dc=example,dc=org密碼:admin
- 因為是docker,所以ldap/ldaps端口有些不同,方便為8389/8636,在docker.composer.yml中有設定。
ldapsearch -x -H ldap://localhost:8389 -D "cn=admin,dc=example,dc=org" -w "admin" -b "cn=yckuang,cn=grp1,ou=Servers,dc=example,dc=org"
- ldapsear with filtering
ldapsearch -x -W -H ldap://localhost:8389 -D "cn=admin,dc=example,dc=org" -b "dc=example,dc=org" "(cn=yckuang)"
dummyldap
ldapsearch -x -H ldap://localhost:389 -D “ou=scientists,dc=example,dc=com,uid=einstein” -w “password” -b “dc=example,dc=com”
注意事項
是的,LDAP 可以被設計為允許使用者自助註冊和管理其個人資料,同時由程式進行角色和權限的判斷。 這通常涉及到自服務入口網站和自動化的身份管理流程。
在這種情況下,LDAP 目錄可能會提供以下功能:
自服務入口網站: 提供使用者介面,允許使用者自行註冊、更新和管理其個人資訊。 這可以包括基本的個人資訊、密碼重設、安全問題答案等。
自動化身分識別管理流程: 使用工作流程或規則引擎,對使用者進行身份驗證和授權的自動管理。 這可以包括根據使用者提供的資訊自動分配角色和權限。
存取控制: 使用適當的存取控制清單(ACLs)和策略,確保使用者只能存取他們有權存取的資訊和資源。
稽核和日誌: 記錄使用者的註冊、更新和角色/權限變更等活動,以便進行稽核和合規性檢查。
需要確保實施這樣的系統時要考慮到安全性和合規性要求,以防止濫用和確保用戶資料的隱私保護。 同時,應設立適當的機制來檢測和防範潛在的濫用行為。
方案
Linux方案
是的,有一些開源的身份管理解決方案可以與LDAP結合使用,提供自助服務入口網站和自動化身分管理。 以下是一些常見的開源身分管理解決方案:
- FreeIPA:
- 官方網站: FreeIPA
- 描述: FreeIPA 是一個整合了 LDAP 目錄服務、Kerberos 認證和 DNS 的身份管理解決方案。 它提供了 Web 介面,使用戶能夠自行管理密碼、SSH 金鑰等。
- demo
- installation
- FusionDirectory:
- 官方網站: FusionDirectory
- 描述: FusionDirectory 是一個基於 PHP 的系統管理解決方案,它使用 LDAP 作為後端。 它提供了 Web 介面,用於使用者和組織的管理。
- Keycloak:
- 官方網站: Keycloak
- 描述: Keycloak 是一個開源的身份和存取管理解決方案,支援 OpenID Connect、OAuth 2.0 等協定。 它可以與 LDAP 集成,提供單一登入(SSO)和身份驗證服務。
- LemonLDAP::NG:
- 官方網站: LemonLDAP::NG
- 描述: LemonLDAP::NG 是一個 Web 單一登入解決方案,支援多種驗證後端,包括 LDAP。 它還提供了一些自助服務入口網站功能。
這些解決方案都提供了強大的功能,可以與 LDAP 集成,支援使用者自助服務、自動化身分管理和存取控制。 在選擇解決方案時,請根據您的特定需求和環境來做出合適的選擇。
macOS方案
這些開源身分管理解決方案主要設計用於 Linux 等作業系統,其中一些可能需要特定的程式庫或依賴項,可能需要適應 macOS 環境。 在 macOS 上建立完整的身份管理系統可能會有一些挑戰。
如果你在 macOS 上尋找身分管理的解決方案,你可能需要考慮以下幾點:
- Directory Utility:
- macOS 自帶的 Directory Utility 提供了一些基本的 LDAP 設定和管理功能。 你可以在系統偏好設定的「使用者與群組」部分找到 Directory Utility。
- OpenLDAP:
- OpenLDAP 是一款開源的 LDAP 實現,可在 macOS 上安裝和運行。 你可以使用 Homebrew 或其他套件管理工具安裝。
- Keycloak:
- Keycloak 是一個獨立的身份和存取管理解決方案,支援多種平台。 你可以在 macOS 上安裝 Keycloak 並與其他系統整合。
請注意,macOS 並不是專門設計用於建立企業級身分識別管理解決方案的作業系統。 因此,對於生產環境,可能需要考慮使用專為此設計的作業系統,例如 Linux。 在 macOS 上建構身分識別管理系統時,可能需要適應性更強的配置和管理。
LDAP的應用
Gitea
是的,Gitea 支持使用 LDAP 進行登入。LDAP(Lightweight Directory Access Protocol)是一種用於存儲和檢索目錄信息的協定,它通常用於集中式身份驗證和授權管理。
以下是在 Gitea 中配置 LDAP 登入的一般步驟,詳情請參閱官網說明
登入 Gitea:使用管理員帳戶登入到 Gitea。
轉到 “Site Administration”:點擊右上角的管理員頭像,然後選擇 “Site Administration”。
進入 “Authentication” 設置:在左側的選單中,找到 “Authentication” 選項,然後選擇 “Authentication Sources”。
新增 LDAP 身份驗證源:點擊 “New Authentication Source” 按鈕,然後選擇 “LDAP” 作為身份驗證類型。
配置 LDAP 連接:填寫所需的 LDAP 連接信息,包括主機、端口、基本 DN(Distinguished Name)等。
測試連接:通常,您可以使用 “Test Connection” 按鈕來測試 LDAP 連接是否正常。
設置用戶名屬性:根據您的 LDAP 設置,請確保正確設置用戶名屬性,例如 “uid” 或 “sAMAccountName”。
完成配置:完成所有必要的配置後,點擊 “Submit” 或 “Save” 以應用變更。
以上僅為一般步驟,實際操作可能因 Gitea 版本而異。建議參考 Gitea 的官方文檔或相應版本的管理介面以進行準確的配置。
mail2000
根據Mail2000 V7 使用者手冊,Mail2000 可以接受 LDAP 認證。以下是設定步驟:
- 確認底層 LDAP pam conf 設定完成:
- 編輯
/webmail/etc/daemon_pam.conf
,新增以下行:Module = pam auth sufficient 2 /webmail/pam_modules/pam_ldap.so SELF SET_COOKIE|UPD_LOC_PASS
- 重新啟動 Mail2000 服務:
/webmail/tools/restartshm /webmail/tools/reloadini
- 編輯
- 進入 Mail2000 管理者介面:
- 開啟 LDAP 登入驗證:
- 選擇 [開啟]。
- 填寫基本組態驗證設定:
- Base LDAP 資料搜尋起點:指定 RDN。
- LDAP 資料主機:填入 Root DN 的相關資訊。
- Password:填入 Root DN 的密碼。
- Host:填入 LDAP 資料主機名稱,例如
ldap.openfind.com.tw
或127.0.0.1
。您也可以設定多台 LDAP 伺服器,用逗號隔開。 - Port:填入 LDAP 資料主機的連接埠。
- TLS 安全性傳輸設定:如果使用 TLS,請設定相應的連接埠(例如:636)。
- 開啟 LDAP 登入驗證:
- 進階組態驗證設定:
- 設定取得帳號 DN 和帳號 ID 的過濾條件和資料欄位。
- 設定完成後,點選 [確定] 儲存設定值,並點選旁邊的 [測試] 以驗證設定是否正確。
如果設定值正確,您將看到 “測試成功” 的訊息。¹²
來源: 與 Bing 的交談, 2024/2/4
- (1) Mail2000 [模組] LDAP 登入驗證設定 – Openfind.
- (2) LDAP 設定說明 - MailGates 管理者手冊 - Chung Yuan Christian University.
- (3) Mail2000電子信箱_常見問題.
- (4) Mail2000 FAQ - Openfind 網擎資訊.
根據Mail2000 V7 使用者手冊,Mail2000 可以同時接受 LDAP 認證和其內部設定的帳號密碼管理系統。以下是設定步驟:
- 確認底層 LDAP pam conf 設定完成:
- 編輯
/webmail/etc/daemon_pam.conf
,新增以下行:Module = pam auth sufficient 2 /webmail/pam_modules/pam_ldap.so SELF SET_COOKIE|UPD_LOC_PASS
- 重新啟動 Mail2000 服務:
/webmail/tools/restartshm /webmail/tools/reloadini
- 編輯
- 進入 Mail2000 管理者介面:
- 開啟 LDAP 登入驗證:
- 選擇 [開啟]。
- 填寫基本組態驗證設定:
- Base LDAP 資料搜尋起點:指定 RDN。
- LDAP 資料主機:填入 Root DN 的相關資訊。
- Password:填入 Root DN 的密碼。
- Host:填入 LDAP 資料主機名稱,例如
ldap.openfind.com.tw
或127.0.0.1
。您也可以設定多台 LDAP 伺服器,用逗號隔開。 - Port:填入 LDAP 資料主機的連接埠。
- TLS 安全性傳輸設定:如果使用 TLS,請設定相應的連接埠(例如:636)。
- 開啟 LDAP 登入驗證:
- 進階組態驗證設定:
- 設定取得帳號 DN 和帳號 ID 的過濾條件和資料欄位。
- 設定完成後,點選 [確定] 儲存設定值,並點選旁邊的 [測試] 以驗證設定是否正確。
如果設定值正確,您將看到 “測試成功” 的訊息。¹²
來源: 與 Bing 的交談, 2024/2/4
- (1) Mail2000 [模組] LDAP 登入驗證設定 – Openfind.
- (2) LDAP 設定說明 - MailGates 管理者手冊 - Chung Yuan Christian University.
- (3) Mail2000電子信箱_常見問題.
- (4) Mail2000 FAQ - Openfind 網擎資訊.
- (5) Mail2000 V7 使用者手冊 - Openfind 網擎資訊.
- (6) Mail2000 電子信箱:個人信箱常見問題 ─ 密碼問題.
- (7) 2014 年 9 月:MailCloud雙重認證—為你的帳號多加一道鎖 - MailCloud 企業雲端服務.
- (8) Mail2000 常見問題. https://www.mail2000.com.tw/faq.htm.
- (9) Mail2000可警示異常登入,強化密碼修改與自動轉寄保護, iThome.
- (10) Mail2000可警示異常登入,強化密碼修改與自動轉寄保護, iThome.
- (11) Mail2000 線上說明系統 - Openfind Mail2000 電子信箱.
- (12) 如何使用郵件軟體收取信件? - Openfind Mail2000 電子信箱.
- (13) Mail2000電子信箱—行動裝置設定資訊.
- (14) Mail2000 電子信箱:手機收信特色功能.
- (15) [undefined]((http://mail2000.com.tw).
外部使用
將 LDAP 用於外部登入可以提供額外的安全性,但在將內部 Druid 伺服器暴露給外部時,需要特別注意安全性問題。以下是一些建議的做法:
使用 SSL/TLS 加密: 確保外部登入和 Druid 伺服器之間的通信是加密的,這可以通過配置 SSL/TLS 來實現。
適當的權限控制: 在 LDAP 中配置適當的權限,確保只有授權的用戶可以訪問 Druid 伺服器。這有助於減少潛在的安全風險。
雙因素身份驗證 (2FA): 對於外部登入,實施雙因素身份驗證,這可以提高安全性,即便帳戶密碼被猜測或洩漏,仍需要額外的驗證步驟。
IP 點對點存取控制: 考慮實施 IP 點對點存取控制,僅允許來自特定 IP 範圍的用戶訪問 Druid 伺服器。
監控和日誌: 實施監控機制和日誌記錄,以便能夠追蹤和檢視外部登入的活動,並及時響應可能的安全事件。
定期安全審查: 定期進行安全性審查,檢查配置、權限、日誌和監控,以確保 Druid 伺服器的安全性。
保持更新: 確保 Druid 伺服器和相關的軟體都是最新版本,並應用任何安全性修補程序。
防火牆設置: 在防火牆上設置適當的規則,僅允許必要的通信流量進入和離開 Druid 伺服器。
以上建議是為了加強外部登入的安全性,同時確保內部 Druid 伺服器的安全性。請注意,實施這些安全措施需要仔細計劃,根據實際情況進行調整。
[realm]: <> “Realm
這個英文詞在中文中可以翻譯為「領域」、「領土」、「範圍」等,具體的翻譯可能取決於上下文和使用的領域。在不同的上下文中,realm
可以有不同的含義:
- 網路安全和身份驗證: 在網路安全領域,
realm
常用來表示一個身份驗證或授權的區域或範圍。例如,某個網站可能有不同的realms
,每個realm
代表一個獨立的身份驗證區域,用戶需要在進入不同的realm
時提供相應的憑證。 - 遊戲: 在遊戲中,
realm
可能指的是遊戲中的一個虛構世界、區域或伺服器。例如,在多人線上遊戲中,不同的realms
可能代表不同的遊戲伺服器,玩家可以在這些伺服器中選擇進行遊戲。 - 神話和文學: 在文學和神話中,
realm
可以指的是一個王國、領域或領土,常用於描述特定的區域或國度。 總的來說,realm
是一個相對通用的詞彙,其含義可能因上下文而異。在科技和網路領域,它通常與身份驗證、安全性或虛擬空間有關。”