本篇博客主要记录如何部署一台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 slpad 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
往openldap数据库存放数据,有多种方式:1. 手动编辑;2. 用工具生成
手动编辑这里不介绍。工具生成指的是用migrationtools脚原本产生ldif文件服务器
虚拟机console执行命令:rpm -qa | grep migrationtools
,查看系统是否已经安装migrationtools
若没有安装,执行命令:yum -y installl migrationtools
,进行工具安装
安装完成以后,进入目录/usr/share/migrationtools
,修改文件migrate_common.ph,将如下两行修改成:
这里是但愿用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
验证是否添加成功