RHCSA 系列(十四): 在 RHEL 7 中设置基于 LDAP 的认证
在這篇文章中,我們將首先羅列一些 LDAP 的基礎知識(它是什么,它被用于何處以及為什么會被這樣使用),然后向你展示如何使用 RHEL 7 系統來設置一個 LDAP 服務器以及配置一個客戶端來使用它達到認證的目的。
RHCSA 系列:設置 LDAP 服務器及客戶端認證 – Part 14
正如你將看到的那樣,關于認證,還存在其他可能的應用場景,但在這篇指南中,我們將只關注基于 LDAP 的認證。另外,請記住,由于這個話題的廣泛性,在這里我們將只涵蓋它的基礎知識,但你可以參考位于總結部分中列出的文檔,以此來了解更加深入的細節。
基于相同的原因,你將注意到:為了簡潔起見,我已經決定省略了幾個位于 man 頁中 LDAP 工具的參考,但相應命令的解釋是近在咫尺的(例如,輸入 man ldapadd)。
那還是讓我們開始吧。
我們的測試環境
我們的測試環境包含兩臺 RHEL 7機器:
如若你想,你可以使用在?RHCSA 系列(十二): 使用 Kickstart 完成 RHEL 7 的自動化安裝?中使用 Kickstart 安裝的機子來作為客戶端。
LDAP 是什么?
LDAP 代表輕量級目錄訪問協議Lightweight Directory Access Protocol,并包含在一系列協議之中,這些協議允許一個客戶端通過網絡去獲取集中存儲的信息(例如所登錄的 shell 的路徑,家目錄的絕對路徑,或者其他典型的系統用戶信息),而這些信息可以從不同的地方訪問到或被很多終端用戶獲取到(另一個例子是含有某個公司所有雇員的家庭地址和電話號碼的目錄)。
對于那些被賦予了權限可以使用這些信息的人來說,將這些信息進行集中管理意味著可以更容易地維護和獲取。
下面的圖表提供了一個簡化了的關于 LDAP 的示意圖,在下面將會進行更多的描述:
LDAP 示意圖
下面是對上面示意圖的一個詳細解釋。
- 在一個 LDAP 目錄中,一個條目entry代表一個獨立單元或信息,被所謂的區別名DN,Distinguished Name?唯一識別。
- 一個屬性attribute是一些與某個條目相關的信息(例如地址,有效的聯系電話號碼和郵箱地址)。
- 每個屬性被分配有一個或多個值value,這些值被包含在一個以空格為分隔符的列表中。每個條目中那個唯一的值被稱為一個相對區別名RDN,Relative Distinguished Name。
接下來,就讓我們進入到有關服務器和客戶端安裝的內容。
安裝和配置一個 LDAP 服務器和客戶端
在 RHEL 7 中, LDAP 由 OpenLDAP 實現。為了安裝服務器和客戶端,分別使用下面的命令:
一旦安裝完成,我們還需要關注一些事情。除非顯示地提示,下面的步驟都只在服務器上執行:
1. 在服務器和客戶端上,為了確保 SELinux 不會妨礙擋道,長久地開啟下列的布爾值:
其中?allow_ypbind?為基于 LDAP 的認證所需要,而?authlogin_nsswitch_use_ldap則可能會被某些應用所需要。
2. 開啟并啟動服務:
記住你也可以使用?systemctl?來禁用,重啟或停止服務:
3. 由于 slapd 服務是由 ldap 用戶來運行的(你可以使用?ps -e -o pid,uname,comm | grep slapd?來驗證),為了使得服務器能夠更改由管理工具創建的條目,該用戶應該有目錄?/var/lib/ldap?的所有權,而這些管理工具僅可以由 root 用戶來運行(緊接著有更多這方面的內容)。
在遞歸地更改這個目錄的所有權之前,將 slapd 的示例數據庫配置文件復制進這個目錄:
4. 設置一個 OpenLDAP 管理用戶并設置密碼:
正如下一幅圖所展示的那樣:
設置 LDAP 管理密碼
然后以下面的內容創建一個 LDIF 文件(ldaprootpasswd.ldif):
其中:
- PASSWORD 是先前得到的經過哈希處理的字符串。
- cn=config 指的是全局配置選項。
- olcDatabase 指的是一個特定的數據庫實例的名稱,并且通??梢栽?etc/openldap/slapd.d/cn=config?目錄中發現。
根據上面提供的理論背景,ldaprootpasswd.ldif?文件將添加一個條目到 LDAP 目錄中。在那個條目中,每一行代表一個屬性鍵值對(其中 dn,changetype,add 和 olcRootPW 為屬性,每個冒號右邊的字符串為相應的鍵值)。
隨著我們的進一步深入,請記住上面的這些,并注意到在這篇文章的余下部分,我們使用相同的通用名Common Names?(cn=),而這些余下的步驟中的每一步都將與其上一步相關。
5. 現在,通過特別指定相對于 ldap 服務的 URI ,添加相應的 LDAP 條目,其中只有 protocol/host/port 這幾個域被允許使用。
上面命令的輸出應該與下面的圖像相似:
LDAP 配置
接著從?/etc/openldap/schema?目錄導入一個基本的 LDAP 定義:
LDAP 定義
6. 讓 LDAP 在它的數據庫中使用你的域名。
以下面的內容創建另一個 LDIF 文件,我們稱之為?ldapdomain.ldif, 然后酌情替換這個文件中的域名(在域名部分Domain Component?dc=) 和密碼:
接著使用下面的命令來加載:
LDAP 域名配置
7. 現在,該是添加一些條目到我們的 LDAP 目錄的時候了。在下面的文件中,屬性和鍵值由一個冒號(:)?所分隔,這個文件我們將命名為?baseldapdomain.ldif:
添加條目到 LDAP 目錄中:
添加 LDAP 域名,屬性和鍵值
8. 創建一個名為 ldapuser 的 LDAP 用戶(adduser ldapuser),然后在ldapgroup.ldif?中為一個 LDAP 組創建定義。
添加下面的內容:
其中 gidNumber 是 ldapuser 在?/etc/group?中的 GID,然后加載這個文件:
9. 為用戶 ldapuser 添加一個帶有定義的 LDIF 文件(ldapuser.ldif):
并加載它:
LDAP 用戶配置
相似地,你可以刪除你剛剛創建的用戶條目:
10. 允許有關 ldap 的通信通過防火墻:
11. 最后,但并非最不重要的是使用 LDAP 開啟客戶端的認證。
為了在最后一步中對我們有所幫助,我們將使用 authconfig 工具(一個配置系統認證資源的界面)。
使用下面的命令,在通過 LDAP 服務器認證成功后,假如請求的用戶的家目錄不存在,則將會被創建:
LDAP 客戶端認證
總結
在這篇文章中,我們已經解釋了如何利用一個 LDAP 服務器來設置基本的認證。若想對當前這個指南里描述的設置進行更深入的配置,請參考位于 RHEL 系統管理員指南里的?第 13 章 – LDAP 的配置,并特別注意使用 TLS 來進行安全設定。
本文來自云棲社區合作伙伴“Linux中國”,原文發布日期:2015-10-04 ??
總結
以上是生活随笔為你收集整理的RHCSA 系列(十四): 在 RHEL 7 中设置基于 LDAP 的认证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Nmap渗透测试指南》—第2章2.2节
- 下一篇: 《Adobe Illustrator C