2. 服務端部署過程
2.1 軟件包說明
2.2 部署過程
2.3 配置過程
3. 測試
4. 生成LDIF格式文件
4.1 安裝migrationtools工具
4.2 用migrationtools生成ldif文件
4.3 添加ldif到ldap數據庫
5. 日志配置
5.1 openldap的日志級別
5.2 配置日志功能
6. 客戶端配置
6.1 基礎環境准備
6.2 配置nslcd客戶端
7. 添加系統用戶
7.1 添加用戶
7.2 產生ldif文件
7.3 添加ldif文件至LDAP數據庫中
7.4 驗證
1. 概述
本篇博客主要記錄如何部署一台LDAP服務器,用於在內網集群節點中,進行全局用戶認證。
注:有關LDAP的理論部分,參見博客《LDAP協議詳解.md》
本篇博客主要的部署環境為:CentOS6.5_x86_64部署openldap,通過YUM安裝相關環境。
2. 服務端部署過程
2.1 軟件包說明
軟件包 | 軟件包說明 |
openldap | 服務端和客戶端必須用的庫文件 |
openldap-clients | 在LDAP服務端使用,用戶增刪改查的命令行環境 |
openldap-servers | 用於啟動服務和配置,包括單獨的LDAP后台守護進程 |
openldap-servers-sql | 支持SQL模塊 |
compat-openldap | openldap兼容性庫環境 |
2.2 部署過程
虛擬機console,通過執行命令:rpm -qa | grep openldap
,查看是否已經安裝openldap的軟件包:
openldap-clients-2.4.23-32.el6_4.1.x86_64
openldap-2.4.23-32.el6_4.1.x86_64
openldap-servers-2.4.23-32.el6_4.1.x86_64
若沒有上述軟件包,執行命令:yum -y install openldap openldap-clients openldap-servers
。
此過程會同時安裝依賴軟件包:libtool-ltdl,portserver軟件包
2.3 配置過程
- 復制配置文件模板,到系統配置目錄下
cp -a /usr/share/openldap-servers/sldap.conf.obsolete /etc/openldap/slapd.conf
- 刪除舊的動態配置文件
rm -rf /etc/openldap/sladp.d/*
- 復制數據庫配置文件模板,到系統配置目錄下
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
- 修改數據庫配置文件所在目錄屬主
chown -R ldap.ldap /var/lib/ldap
- 生成加密密鑰
虛擬機console執行命令:slappasswd
提示New password:輸入liwanliang
提示Re-enter new password,輸入liwanliang
將生成的內容:{SSHA}SdorCU0SF/bBERBdPtkSVdWv94Hc826r,復制保存下來 -
修改主配置文件,修改內容如下:
有關openldap的配置詳解,參見博客《LDAP-openldap配置文件詳解.md》database config access to * by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none database monitor access to * by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.exact="cn=Manager,dc=liwanliang,dc=com" read by * none database bdb suffix "dc=liwanliang,dc=com" checkpoint 1024 15 rootdn "cn=Manager,dc=liwanliang,dc=com" rootpw {SSHA}SdorCU0SF/bBERBdPtkSVdWv94Hc826r
-
修改相關目錄屬性
虛擬機console執行命令:chown -R ldap.ldap /etc/openldap
;chown -R ldap.ldap /var/lib/ldap
- 刪除舊的動態配置文件
虛擬機console執行命令:rm -rf /etc/openldap/slapd.d/*
- 啟動服務並設置開機啟動
虛擬機console執行命令:service slapd start && chkconfilg slapd on
,此時若有報錯可忽略。
查看是否啟動服務:service slapd status
;netstat -tupln|grep slapd
- 動態配置文件
openldap的動態配置文件位於/etc/openldap/slapd.d/下,每次修改了主配置文件/etc/openldap/slapd.conf之后,都需要重新生成動態配置文件,即:
刪除動態配置文件:rm -rf /etc/openldap/slapd.d/*
重新生成動態配置文件:slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
修改動態配置目錄屬性:chown -R ldap.ldap /etc/openldap/slapd.d/
3. 測試
上述過程已經部署好了openldap並啟動了服務,這僅是第一步,openldap有沒有工作,還需要進一步驗證和測試。
虛擬機console執行命令:ldapsearch -x -LLL
;如果這個命令報錯:【No suce object(32)】,則需要修改配置文件/etc/openldap/ldap.conf
修改內容如下:
BASE dc=liwanliang,dc=com
URI ldap://192.168.80.8
TLS_CACERTDIR /etc/openldap/certs
上過過程說明已經基本完成了openldap的部署和測試,可以投入使用。
此時還有一種情況會產生【No suce object(32)】,即上述過程完成之后,並未通過ldapadd添加任務用戶時,也會報同樣的錯誤。
此時可以在添加用戶之后,進行配置和查看。
4. 生成LDIF格式文件
往openldap數據庫存放數據,有多種方式:1. 手動編輯;2. 用工具生成
手動編輯這里不介紹。工具生成指的是用migrationtools腳本來產生ldif文件
4.1 安裝migrationtools工具
虛擬機console執行命令:rpm -qa | grep migrationtools
,查看系統是否已經安裝migrationtools
若沒有安裝,執行命令:yum -y installl migrationtools
,進行工具安裝
4.2 用migrationtools生成ldif文件
這里是希望用openldap來實現用戶認證,因此需要把系統中存在的user和group產生ldif,添加到ldap的數據庫中。
虛擬機console執行命令:
/usr/share/migrationtools /migrate_base.pl > base.ldif
/usr/share/migrationtools/migrate_passwd.pl /etc/passwd > passwd.ldif
/usr/share/migrationtools/migrate_group.pl /etc/group > group.ldif
4.3 添加ldif到ldap數據庫
上面過程,已經將用戶認證時需要的文件/etc/passwd和/etc/group生成ldif文件。
改用ldap驗證時,就需要將這幾個文件添加到ldap數據庫中。
虛擬機console執行命令:
ldapadd -x -D "cn=Manager,dc=liwanliang,dc=com' -c -W -f base.ldif
ldapadd -x -D "cn=Manager,dc=liwanliang,dc=com" -c -W -f passwd.ldif
ldapadd -x -D "cn=Manager,dc=liwanliang,dc=com" -c -W -f group.ldif
提示輸入密碼時,輸入liwanliang,回車
5. 日志配置
5.1 openldap的日志級別
虛擬機console執行命令:slapd -d ?
,能夠看到以下內容:
各參數說明如下:
Any | 開啟所有的函數調用 |
Trace | 跟蹤Trace函數調用 |
Rackets | 與函數包處理相關的信息 |
Args | 全面的debug信息 |
Conns | 鏈接數管理的相關信息 |
BER | 記錄包發送和接收的信息 |
Filter | 記錄過濾處理的過程 |
Config | 記錄配置文件的相關信息 |
ACL | 記錄訪問控制列表的相關信息 |
Stats | 記錄鏈接,操作系統以及統計信息 |
Stats2 | 記錄向客戶端響應的統計信息 |
Shell | 記錄與shell后端通信信息 |
Parse | 記錄條目的分析結果信息 |
Sync | 記錄數據同步資源消耗信息 |
None | 不記錄信息 |
5.2 配置日志功能
- 修改主配置文件/etc/openldap/slapd.conf,最后一行添加:loglever -1
- 虛擬機console執行命令:
mkdir -p /var/log/slapd && chown -R ldap.ldap /var/log/sladp
- 修改系統日志配置文件,使其重定向日志到ldap日志目錄,
vim /etc/rsyslog.conf
,最后一行添加以下內容:
local4. * /var/log/slapd/slapd.log -
利用Logrotate自動切割日志
進入目錄/etc/logrotate.d,創建文件ldap,添加以下內容:/var/log/slapd/slapd.log { prerotate /usr/bin/chattr -a /var/log/slapd/slapd.log endscript compress delaycompress notifempty rotate 100 size 10M postroatte /usr/bin/chattr +a /var/log/slapd/slapd.log endsript }
-
重啟日志服務並觀察
虛擬機console執行命令:service rsyslogd restart
觀察日志文件是否更新:tail -f /var/log/slapd/slapd.log
6. 客戶端配置
這里的客戶端端不是指ldap命令行客戶端,而是需要通過LDAP服務器驗證的客戶端節點。
本篇博客已經部署了KVM虛擬機node11,在node11上配置采用用戶采用LDAP驗證。
6.1 基礎環境准備
關閉sssd進程,並安裝nslcd進程
注:有關NSS,NSCD,NSLCD,SSSD服務的區別,參見包括《》
虛擬機console執行命令:rpm -qa | grep nss-pam-ldapd
,查看系統是否已經安裝客戶端
若未安裝,執行命令:yum -y install nss-pam-ldapd
進行安裝
6.2 配置nslcd客戶端
-
修改nslcd.conf配置文件,vim /etc/nslcd.conf,文末添加內容如下:
uri ldap://192.168.80.8/ base dc=liwanliang,dc=com ssl no tls_cacertdir /etc/openldap/certs
-
修改pam_ldap.conf配置文件,vim /etc/pam_ldap.conf,文末添加內容如下:
uri ldap://192.168.80.8 ssl no tls_cacertdir /etc/openldap/certs bind_policy soft
-
修改系統認證的PAM配置,vim /etc/pam.d/system-auth,修改內容如下:
-
修改名字服務NSS配置文件,vim /etc/nssiwch.conf,修改部分如下:
passwd: files ldap shadow: files ldap group: files ldap
-
修改系統認證方式配置文件,vim /etc/sysconfig/authconfig,修改部分內容如下:
USESHADOW=yes //啟用密碼驗證 USELDAPAUTH=yes //啟用openldap驗證 USELOCAUTHORIZE=yes //啟用本地驗證 USELDAP=yes //啟用LDAP認證協議
- 啟動nslcd服務進程
虛擬機console執行命令:service iptables stop && setenforce 0
,即關閉防火牆和selinux
啟動服務,並設置開機啟動:service nslcd start && chkconfig nslcd on
- 客戶端驗證
在虛擬機node11上,執行命令:id liwl01
,如果獲取到liwl01的用戶信息,則說明配置成功
7. 添加系統用戶
在今后的實踐過程中,會存在添加系統進程用戶的需求,比如部署Nagios時,需要添加nagios和nagioscmd用戶;
部署slurm任務調度系統時,需要添加munge和slurmadmim用戶等。
這里就需要利用migrationtools來實現往LDAP服務器中添加用戶,然后實現全局認證即可。具體過程如下:
7.1 添加用戶
這里添加用戶liwl02
在虛擬機console中執行命令:useradd -u 501 liwl02
給liwl02添加密碼:passwd liwl02
,輸入密碼兩次完成密碼添加
7.2 產生ldif文件
因為已經生成了base.ldif文件,此次添加用戶,不再需要生成base.ldif文件
虛擬機console執行命令:
migrate_passwd.pl /etc/passwd > passwd.ldif
,該命令創建passwd.ldif
migrate_group.pl /etc/group > group.ldif
,該命令創建group.ldif
編輯passwd.ldif,只保留以下部分內容,其余刪除:
dn: uid=liwl02,ou=People,dc=liwanliang,dc=com
uid: liwl02
cn: liwl02
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$VKwyR9xY$GmXIUT9zJqE5/foaPKwgoDPfXS8XnkG1WcqjHoNBmLcMUvbyrOV6BVLXEmc6K140BM9r4fHAL33ZxSzWiZ8c//
shadowLastChange: 17699
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 501
gidNumber: 501
編輯group.ldif,只保留以下部分,其余刪除:
dn: cn=liwl02,ou=Group,dc=liwanliang,dc=com
objectClass: posixGroup
objectClass: top
cn: liwl02
userPassword: {crypt}x
gidNumber: 501
7.3 添加ldif文件至LDAP數據庫中
虛擬機console執行命令, 添加兩個文件中新加的內容:
ldapadd -x -D "cn=Manager,dc=liwanliang,dc=com" -c -W -f passwd.ldif
ldapadd -x -D "cn=Manager,dc=liwanliang,dc=com" -c -W -f group.ldif
輸入密碼liwanliang即可添加進入
7.4 驗證
在虛擬機node11上,通過執行命令id liwl02
驗證是否添加成功