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