本篇博客主要記錄如何部署一臺LDAP服務器,用於在內網集羣節點中,進行全局用戶認證。node
注:有關LDAP的理論部分,參見博客《LDAP協議詳解.md》linux
本篇博客主要的部署環境爲:CentOS6.5_x86_64部署openldap,經過YUM安裝相關環境。ios
軟件包 | 軟件包說明 |
openldap | 服務端和客戶端必須用的庫文件 |
openldap-clients | 在LDAP服務端使用,用戶增刪改查的命令行環境 |
openldap-servers | 用於啓動服務和配置,包括單獨的LDAP後臺守護進程 |
openldap-servers-sql | 支持SQL模塊 |
compat-openldap | openldap兼容性庫環境 |
虛擬機console,經過執行命令:rpm -qa | grep openldap
,查看是否已經安裝openldap的軟件包:sql
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軟件包shell
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
slappasswd
修改主配置文件,修改內容以下:
有關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
vim
rm -rf /etc/openldap/slapd.d/*
service slapd start && chkconfilg slapd on
,此時如有報錯可忽略。service slapd status
;netstat -tupln|grep slapd
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/
上述過程已經部署好了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的部署和測試,能夠投入使用。bash
此時還有一種狀況會產生【No suce object(32)】,即上述過程完成以後,並未經過ldapadd添加任務用戶時,也會報一樣的錯誤。服務器
此時能夠在添加用戶以後,進行配置和查看。
往openldap數據庫存放數據,有多種方式:1. 手動編輯;2. 用工具生成
手動編輯這裏不介紹。工具生成指的是用migrationtools腳原本產生ldif文件
虛擬機console執行命令:rpm -qa | grep migrationtools
,查看系統是否已經安裝migrationtools
若沒有安裝,執行命令:yum -y installl migrationtools
,進行工具安裝
這裏是但願用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
上面過程,已經將用戶認證時須要的文件/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,回車
虛擬機console執行命令:slapd -d ?
,可以看到如下內容:
各參數說明以下:
Any | 開啓全部的函數調用 |
Trace | 跟蹤Trace函數調用 |
Rackets | 與函數包處理相關的信息 |
Args | 全面的debug信息 |
Conns | 連接數管理的相關信息 |
BER | 記錄包發送和接收的信息 |
Filter | 記錄過濾處理的過程 |
Config | 記錄配置文件的相關信息 |
ACL | 記錄訪問控制列表的相關信息 |
Stats | 記錄連接,操做系統以及統計信息 |
Stats2 | 記錄向客戶端響應的統計信息 |
Shell | 記錄與shell後端通訊信息 |
Parse | 記錄條目的分析結果信息 |
Sync | 記錄數據同步資源消耗信息 |
None | 不記錄信息 |
mkdir -p /var/log/slapd && chown -R ldap.ldap /var/log/sladp
vim /etc/rsyslog.conf
,最後一行添加如下內容: 利用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
這裏的客戶端端不是指ldap命令行客戶端,而是須要經過LDAP服務器驗證的客戶端節點。
本篇博客已經部署了KVM虛擬機node11,在node11上配置採用用戶採用LDAP驗證。
關閉sssd進程,並安裝nslcd進程
注:有關NSS,NSCD,NSLCD,SSSD服務的區別,參見包括《》
虛擬機console執行命令:rpm -qa | grep nss-pam-ldapd
,查看系統是否已經安裝客戶端
若未安裝,執行命令:yum -y install nss-pam-ldapd
進行安裝
修改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認證協議
service iptables stop && setenforce 0
,即關閉防火牆和selinux service nslcd start && chkconfig nslcd on
id liwl01
,若是獲取到liwl01的用戶信息,則說明配置成功在從此的實踐過程當中,會存在添加系統進程用戶的需求,好比部署Nagios時,須要添加nagios和nagioscmd用戶;
部署slurm任務調度系統時,須要添加munge和slurmadmim用戶等。
這裏就須要利用migrationtools來實現往LDAP服務器中添加用戶,而後實現全局認證便可。具體過程以下:
這裏添加用戶liwl02
在虛擬機console中執行命令:useradd -u 501 liwl02
給liwl02添加密碼:passwd liwl02
,輸入密碼兩次完成密碼添加
由於已經生成了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
虛擬機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便可添加進入
在虛擬機node11上,經過執行命令id liwl02
驗證是否添加成功