Centos中配置Openldap的详细过程
原理
OpenLDAP 是一款轻量级目录访问协议。账号是登录系统的唯一入口,要登录系统,首先系统要存在登录所使用的账号(/etc/passwd)及密码信息(/etc/shadow)。对于账号管理人员而言如果机器数量达到1000 以上时,对于账号的创建、回收、权限的分配、密码策略、账号安全审计等一系列操作,账号管理人员就心有余而力不足了。此时OpenLDAP 账号集中管理软件就应用而生,它可以实现账号集中维护、管理,只需要将被管理的机器加入到服务器端即可,此后所有与账号相关的策略均在服务端实现,从而解决了运维案例所产生的众多管理问题。
网络环境准备
名称 | IP地址 | 主机名 |
---|---|---|
Openldap服务器 | 13.10.29.3 | node29.3 |
Openldap客户端 | 13.10.29.2 | node292 |
网络环境准备
安装前准备*
1、停止firewall
systemctl stop firewalld
2、禁止firewall开机启动
systemctl disable firewalld.service
2、修改selinux
vi /etc/selinux/config
将SELINUX=enforcing改为:SELINUX=disabled ,并执行setenforce 0
使他立即生效,当然你也可以重启机器
配置Openldap服务器
1、安装软件包
yum install -y openldap openldap-clients openldap-servers migrationtools
2、设置Openldap管理密码
slappasswd
New password: 111111
Re-enter new password: 111111
{SSHA}dmVe9cQJu/8xyHKI0dMjUxft+nz6rPA4
3、修改根DN与添加密码
vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
修改内容: olcSuffix: dc=domain,dc=com
olcRootDN: cn=root,dc=domain,dc=com
添加内容: olcRootPW: {SSHA}dmVe9cQJu/8xyHKI0dMjUxft+nz6rPA4
这边添加的密码,就是上一步生成的密码
4、修改验证
vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif
olcAccess: {0}to * by dn.base=“gidNumber=0+uidNumber=0,cn=peercred,cn=extern al,cn=auth” read by dn.base=“cn=root,dc=domain,dc=com” read by * none
5、配置DB数据库
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap -R /var/lib/ldap
chmod 700 -R /var/lib/ldap
6、验证 slaptest -u 看见:config file testing succeeded #看到succeeded说明验证成功
这边我就是报了两个error,如图。纠结了很久,其实可以不用管的~
7、给启动文件相应的权限
chown ldap:ldap -R /var/run/openldap
chown -R ldap:ldap /etc/openldap/
8、启动服务并设置开机自启动
systemctl start slapd&systemctl enable slapd
9、检查服务是否启动成功,如果输出如图说明启动成功了
10、导入一个ldif的基础模板,先准备在域中导入一个People和Group的部门
dn: ou=People,dc=domain,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=domain,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
11、导入数据库
ldapadd -x -D "cn=root,dc=domain,dc=com" -W -f base.ldif
此时很有可能报错,我遇到了报错49,这个应该是密码输错了
还有遇到了报错21,那么需要导入基本Schema,使用如下命令:
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine
ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis
ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
12、验证导入是否成功
ldapsearch -x -b 'dc=domain,dc=com' '(objectClass=*)'
如果有输出导入的ou信息,则说明成功啦
13、下面可以开始导入用户和用户组了,首先先创建用户和用户组
groupadd ldapgroup
useradd -g ldapgroup1 ldapuser
14、此时可以用cat /etc/passwd和cat /etc/group查看下创建的用户和用户组,并且提取出来。我发现我创建的用户id和用户组id刚好都是1001,那么我就把他们提取到了一个文件中。
egrep ":1[0-9][0-9][0-9]" /etc/passwd>/home/users
egrep ":1[0-9][0-9][0-9]*" /etc/group > /home/groups
15、上述生成的用户和用户组属性,使用migrate_passwd.pl文件生成要添加用户和用户组的ldif
/usr/share/migrationtools/migrate_passwd.pl /home/users > /home/users.ldif
/usr/share/migrationtools/migrate_group.pl /home/groups > /home/groups.ldif
如果直接执行上面两条命令生成,其实并不对哦,你可以查看下ldif文件的内容,可以看到里面写了dc=padl,dc=com。并不是我们上面设置的dc=domain,dc=com,此时需要修改模板。
vi /usr/share/migrationtools/migrate_common.ph
如图,用户会默认生成在People部门中,用户组会默认生成在Group组中,如果需要生成到其他部门中,前提是这个部门已经存在。可以通过步骤10~11来生成新的部门
16、导入到ldap
ldapadd -x -W -D "cn=root,dc=domain,dc=com" -f /home/users.ldif
ldapadd -x -W -D "cn=root,dc=domain,dc=com" -f /home/groups.ldif
如果导入已经存在,加-c参数
ldapadd -x -c -W -D"cn=root,dc=domain,dc=com" -f /home/users.ldif
配置openldap的客户端
1、安装包
yum install -y openldap-clients nss-pam-ldapd
2、配置
authconfig --enableldap --enableldapauth --ldapserver=13.10.47.6 --ldapbasedn="dc=domain,dc=com" --enablemkhomedir --update
也可以直接使用setup图形界面设置
3、给ldap用户配置密码
ldappasswd -x -D "cn=root,dc=domain,dc=com" -w linux123 "uid=ldapuser4,ou=People,dc=domain,dc=com" -S
4、重启nslcd服务
service nslcd restart
5、客户端输入ssh ldapuser1@13.10.29.2
登录,如果不能登录把/etc/pam.d/password-auth /etc/pam.d/system-auth
中的>1000改成<99999然后重启sshd 服务可以了
6、如果还是不能登录,看日志/var/log/secure