引言
用戶管理是分布式計算環境中一個重要的部分。它為通用訪問提供了所需的一致的身份 驗證和授權服務。許多客戶使用 IBM Directory Server 以實現集中的安全管理,IBM Directory Server 是 AIX® 所支持的一種集中式安全機制。要對 IBM Directory Server 進行有效的配置並 為使用做好准備,您需要深入了解輕量級目錄訪問協議 (LDAP) 的概念和配置管理。
本文對 LDAP 及其體系結構提供了概述。本文還介紹了 AIX 中的 LDAP 配置和管理。本文重點關注在配置 LDAP 服務器和客戶端的過程中,如何對不同類型問題進行故障排除。對於 AIX 管理員、技術支持人員 和開發團體,本文在故障排除部分中所提供的建議是很有幫助的。
LDAP 概述和體系結構
LDAP 是一種用於訪問目錄服務器的行業標准協議。需要對 IBM Directory Server 進行配置, 以支持在 AIX 中使用 AIX 特定的模式和 RFC 2307 模式通過 LDAP 進行用戶身份驗證。
LDAP 在讀取、浏覽、搜索目錄和專門存儲有序信息的數據庫等方面進行了優化。許多計算環境的目標是使得 來自任何位置(如工作站、公共工作站和 Web)的用戶都能夠使用各種網絡資源。可以使用 IBM Directory Server 進行用戶管理,以實現這一目標。
圖 1 顯示了 LDAP 配置的概述。
圖 1. LDAP 配置
LDAP 是一種標准化的協議,也是一種用於存儲有序信息的專門數據庫。當用戶登錄時, LDAP 客戶端向 LDAP 服務器發送一個查詢,以便從集中式的數據庫中獲取這個用戶和組的信息。 DB2® 是用於存儲用戶和組信息的數據庫。LDAP 數據庫以具有層次結構的條目為基礎,存儲和檢索 信息,其中每個條目都具有區別於其他條目的名稱、類型和屬性。屬性用於為條目定義可接受的取值。 LDAP 數據庫能夠為許多用戶存儲和維護他們的條目。
AIX Version 4.3 中創建了 LDAP 安全加 載模塊。通過 IBM SecureWay® Directory,這個加載模塊提供了用戶身份驗證、集中式用戶和組 管理功能。可以對 LDAP 服務器中定義的用戶進行配置,使其能夠登錄到 LDAP 客戶端,即使該用戶並 沒有在本地進行定義。AIX LDAP 加載模塊與 AIX 操作系統完全集成。
配置 IBM Directory Server
可以使用以下三種方式中的一種來配置 AIX 上的 IBM Directory Server:
ldapcfg 命令行工具
ldapcfg 工具的圖形化版本,稱為 ldapxcfg
mksecldap 命 令
以下是配置 IBM Directory Server 所需的文件集:
ldap.server 文件集
DB2 是 IBM Directory Server 所需的後端數據庫軟件
先決條件
該系統應該運行於 64位內 核模式。使用 bootinfo –K 命令以確定內核模式。
AIX 需要 64 位硬件。使用 bootinfo –y 命令以確定硬件。
需要最少 512MB 內存。(要得到更好的性能,請使用 1GB 或者更大的內存。)
IBM Directory Server 需要文件系統中具有 80MB 空閒空間,該空間 用以創建 DB2 數據庫。
如果您計劃使用 InstallShield GUI 來進行安裝,請確保在 /var 目 錄中至少有 100MB 的空閒空間,在 /tmp 目錄中至少有 400MB 的空閒空間。
AIX 提供了 mksecldap 命令以設置 IBM Directory 服務器和客戶端,以便充分利用這些服務器。
mksecldap 命令將為新服務器的設置執行下面的任務:
創建 ldapdb2 缺省 DB2 實例。
創建 ldapdb2 缺省 DB2 數據庫。
創建 AIX 樹 DN(後綴),AIX 用戶和組存儲於其中 。
從本地主機的安全數據庫文件中將用戶和組導出到 LDAP 數據庫。
設置 LDAP 服務器 管理員 DN 和密碼。
另外,可以將服務器設置為使用安全套接字層 (SSL) 通信。
安裝 /usr/ccs/lib/libsecldapaudit,這是用於 LDAP 服務器的 AIX 審核插件。
在完成上述的工作 後,啟動 LDAP 服務器。
將 LDAP 服務器條目(slapd)添加到 /etc/inittab,以便在系統重 新啟動後自動重新啟動該服務器。
mksecldap –s –a cn=admin –p passwd –S rfc2307aix
所有的設置信息都存儲在 /etc/ibmslapd.conf 文件中。
為 IBM Directory Server 配置 AIX 客戶端系統。
ldap.client 文件集中包含了 IBM Directory 客戶端庫文件、頭文件和實用工具。您可以使用 mksecldap 命令針對 IBM Directory Server 配置 AIX 客戶端,如下所示:
mksecldap -c -h <LDAP Server name> -a cn=admin -p adminpwd -S rfc2307aix
要配置 AIX 客戶 端,您必須擁有 IBM Directory Server 管理員 DN 和密碼。在配置了 AIX 客戶端之後, secldapclntd 守護進程開始運行。在針對 IBM Directory Server 配置了 AIX 客戶端之後,將 /etc/security/user 文件中的 SYSTEM 屬性更改為 LDAP OR compat 或者 compat or LDAP,以便對 AIX 客戶端系統進行身份驗證。
/usr/lib/security/methods.cfg 文件包含加載模塊的定義。 mksecldap 命令將添加下面的內容,以便在客戶端設置的過程中啟用 LDAP 加載模塊。
LDAP: program = /usr/lib/security/LDAP program_64 = /usr/lib/security/LDAP64
客戶端計算機上的 /etc/security/ldap/ldap.cfg 文件中包含了用於 secldapclntd 客戶端守護進程的配置信息。這個配 置文件包含 IBM Directory Server 的名稱、binddn 和密碼信息。在設置 AIX 客戶端的過程中,通過 mksecldap 命令可以自動地更新該文件。
/etc/security/ldap/ldap.cfg 文件中的 auth_type 屬性指定了需要在何處對用戶進行身份驗證。如果 auth_type 屬性是 UNIX_AUTH,那麼在客戶端系統 對用戶進行身份驗證。如果該屬性為 ldap_auth,那麼在 IBM Directory Server 上對用戶進行身份驗 證。
使用 SSL 配置 IBM Directory Server
可以使用 SSL 對 IBM Directory Server 和客戶端進行配置。這樣可以避免以明文的形式在網絡中傳輸數據。它對信息進行加密,然後通過網絡 發送。IBM Directory Server 對用戶的密碼信息加密,然後在配置了 SSL 的情況下通過網絡進行發送 。
要啟用服務器和客戶端的加密支持,需要以下文件集:
ldap.max_crypto_server
ldap.max_crypto_client
對於初始服務器設置,可以 運行下面的命令:
mksecldap –s –a cn=admin –p pwd –S rfc2307aix –k usr/ldap/etc/mykey.kdb –w keypwd
其中 mykey.kdb 是密鑰數據庫,並且 keypwd 是這個密鑰數據庫的密碼。
對於經過配置並且正在運行的服務器,可以運行下面的命令 :
mksecldap –s –a cn=admin –p pwd –S rfc2307aix –n NONE –k /usr/ldap/etc/mykey.kdb –w keypwd
對於初始客戶端設置,可以運行下面 的命令:
mksecldap –c –h <ldapserver name> –a cn=admin –p adminpwd –k /usr/ldap/key.kdb –w keypwd
下面的表 1 中列出了 AIX LDAP 客戶端系統中經常使用的一些命令。
表 1. 經常使用的命令
/usr/sbin/start-secldapclntd 啟動 secldapclntd;它與從命令行 直接進入 secldapclntd 相同。 /usr/sbin/stop-secldapclntd 停止 secldapclntd 守護進程。 /usr/sbin/restart-secldapclntd 停止當前正 在運行的 secldapclntd 守護進程,並重新啟動它。如果 secldapclntd 沒有運行,這一操作與 start-secldapclntd 相同。 /usr/sbin/ls-secldapclntd 列出 secldapclntd 守護進程的狀態,包括與其進行對話的服務器、端口號、緩存狀態等等。 /usr/sbin/flush-secldapclntd 清空 secldapclntd 守護進程的緩存。 mkuser –R LDAP <username> 從 LDAP 客戶端創建用戶。故障排除信息
這個部分中包括幾個典型的問題,隨後給出了建議的 解決方案。
問題:LDAP 服務器以“configuration only”模式啟動 ……
當重新啟動 LDAP 服務器或者在進行 LDAP 服務器配置時返回了下面的錯誤 信息時,LDAP 服務器以“configuration only”模式啟動:“Failed to initialize be_config.Error encountered.Server starting in configuration only mode.”
解決 方案:
可以通過使用下面的命令或者在 /var/ldap/ibmslapd.log 文件中查看相關的信息,以 確認服務器是否以“configuration only”方式啟動。
# ldapsearch -h teak01.upt -b "" -s base objectclass=* | grep config ibm-slapdisconfigurationmode=TRUE
有些時候,沒有正確地注冊 DB2 許可證密鑰。這是該 問題的主要原因之一。要解決這個問題,必須注冊許可證密鑰,可以執行下面的步驟:
以具有 root 權限的用戶身份登錄。
注冊 DB2 產品許可證密鑰:
#/usr/opt/db2_08_01/adm /db2licm -a /usr/ldap/etc/ldap-custom-db2ese.lic #/usr/opt/db2_08_01/adm /db2licm -a /usr/ldap/etc/db2wsue.lic
如果以上的步驟不能解 決這個問題,在再次配置 LDAP 服務器之前,可以清除 LDAP 服務器配置並導出 LDAP_DBG=1。/var/ldap/dbg.out、/var/ldap/dbg.log 和 /var/ldap/ibmslapd.log 文件中包含了進 一步調試這個問題所需的診斷信息。
問題:無法使用 LDAP 用戶登錄系統 ……
在成功配置 Directory Server 後,無法使用 LDAP 用戶登錄系統。
解決方案:
確保在下列方面沒有錯誤,這可能導致存在特殊 LDAP 用戶的錯覺。
在客戶 端配置過程中,使用 mksecldap -u <userlist> 指定一個用逗號分隔的用戶名列表或者 ALL, 以便在客戶端啟用所有的用戶。這意味著將這些用戶的 SYSTEM 和注冊屬性設置為 LDAP。
mksecldap -c -h monster -a cn=admin -p adminpwd -u user1,user2
-u 標志可以確 保 user1 和 user2 用戶能夠在客戶端計算機上用作 LDAP 用戶,但是這個標志並不在 LDAP 服務器數 據庫中添加任何用戶。如果已使用 mkuser –R LDAP <user name> 或者在配置服務器的過 程中將用戶添加到了 LDAP,那麼這些用戶可以成功登錄,如下所示:
mksecldap -s -a cn=admin -p adminpwd -S rfc2307aix
在這個示例中,將所有的本地用戶添加到 LDAP。因為 user1 和 user2 都是本地用戶,所以它們將自動添加到 LDAP 數據庫中。
驗證 Directory Server 已啟動並正在運行。ibmdiradm 和 ibmslapd 進程應該正在運行:
# ps -eaf |grep ibm ldap 278760 1 0 Jan 14 - 0:08 /usr/ldap//bin/ibmdiradm -l ldap 434392 1 2 Jan 14 - 339:44 ibmslapd -f/etc/ibmslapd.conf
驗 證 LDAP 客戶端是否已啟動並正在運行。secldapclntd 進程應該正在運行:
# ps -eaf |grep -i secldap root 393408 1 0 Jan 14 - 0:15 /usr/sbin/secldapclntd root 725062 692358 0 03:20:38 pts/0 0:00 grep -i secldap
驗證服務器中是否 存在這個用戶:
# lsuser -R LDAP usr_3112 usr_3112 id=3112 pgrp=gp_3112 groups=gp_3112,gp_3118,gp_3124 home=/tmp shell=/usr/bin/ksh |--10--------20--------30--------40--------50--------60--------70--------80--------9| |-------- XML error: The previous line is longer than the max of 90 characters ---------| login=true su=true rlogin=true daemon=true admin=false sugroups=ALL admgroups= tpath=nosak ttys=ALL expires=0 auth1=SYSTEM auth2=NONE umask=22 registry=LDAP SYSTEM=KRB5LDAP OR compat logintimes= loginretries=0 pwdwarntime=0 account_locked=false minage=0 maxage=0 maxexpired=-1 minalpha=0 minother=0 mindiff=0 maxrepeats=8 minlen=0 histexpire=0 histsize=0 pwdchecks= dictionlist= fsize=-1 |--10--------20--------30--------40--------50--------60--------70--------80--------9| |-------- XML error: The previous line is longer than the max of 90 characters ---------| cpu=-1 data=262144 stack=65536 core=2097151 rss=65536 nofiles=2000 roles=
驗證用戶 的注冊信息和 SYSTEM 屬性。這兩項內容都應該設置為 LDAP。
lsuser –a registry SYSTEM username
驗證是否將 LDAP 節添加到了 /usr/lib/security/methods.cfg 中:
# grep -p LDAP /usr/lib/security/methods.cfg LDAP: program = /usr/lib/security/LDAP program_64 =/usr/lib/security/LDAP64
問題:要將所有的 AIX 用戶遷移作為 LDAP 中經過身份驗證的用戶,需要完成哪些操作呢?
要將所有的 AIX 用戶遷移作為 LDAP 中 經過身份驗證的用戶,需要完成哪些操作呢?在配置服務器的過程中,mksecldap 允許用戶遷移特定的 一組 AIX 用戶嗎?
解決方案:
不允許。缺省情況下,在配置服務器的過程中, mksecldap 將所有的 AIX 用戶遷移作為 LDAP 中經過身份驗證的用戶。
如果您不 希望將所有 AIX 用戶遷移作為 LDAP 用戶,可以運行 mksecldap 命令,並加上 –u NONE。
#mksecldap -s –a cn=admin –p adminpwd –s rfc2307aix –u NONE
問題:mkuser 可能返回一個錯誤消息
mkuser 命令可能返回下面的錯誤消息:
# mkuser -R LDAP test 3004-686 Group "staff" does not exist. 3004-703 Check "/usr/lib/security/mkuser.default" file.