0%

CentOS7 LDAP统一认证部署

LDAP介绍

LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。

使用目的

使用LDAP对运维相关用户名密码做统一管理。可以实现一个帐号登录多个不同系统。

LDAP部署

LDAP Server端安装

1
[root@object1 ~]# yum install -y openldap openldap-clients openldap-servers migrationtools

LDAP 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#配置 OpenLDAP Server
[root@object1 ~]# vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
dn: olcDatabase={2}hdb

修改两行
olcSuffix: dc=hyman,dc=com
olcRootDN: cn=Manager,dc=hyman,dc=com
新增一行
olcRootPW: 123456

#配置 Monitoring Database
[root@object1 ~]# vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{1\}monitor.ldif
dn: olcDatabase={1}monitor

修改一行
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth" read by dn.base="cn=Manager,dc=hyman,dc=com" read by * none

#初始化 LDAP database
[root@object1 ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@object1 ~]# chown -R ldap.ldap /var/lib/ldap/

#测试 configuration
[root@object1 ~]# slaptest -u

#启动服务并开机自启
[root@object1 ~]# systemctl start slapd
[root@object1 ~]# systemctl enable slapd

#查看状态
[root@object1 ~]# netstat -lt | grep ldap

#将所有的配置LDAP server, 添加到LDAP schemas中
[root@object1 ~]# cd /etc/openldap/schema/
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f cosine.ldif
[root@object1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f nis.ldif
[root@object1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f collective.ldif
[root@object1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f corba.ldif
[root@object1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f core.ldif
[root@object1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f duaconf.ldif
[root@object1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f dyngroup.ldif
[root@object1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f inetorgperson.ldif
[root@object1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f java.ldif
[root@object1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f ppolicy.ldif
[root@object1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f pmi.ldif
[root@object1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f openldap.ldif
[root@object1 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f misc.ldif

#使用Migration Tools 创建 LDAP DIT
[root@object1 schema]# cd /usr/share/migrationtools/
[root@object1 migrationtools]# vim migrate_common.ph
修改61行
$NAMINGCONTEXT{'group'} = "ou=Groups";
修改71行
$DEFAULT_MAIL_DOMAIN = "hyman.com";
修改74行
$DEFAULT_BASE = "dc=hyman,dc=com";
修改90行
$EXTENDED_SCHEMA = 1;

#创建 base.ldif
[root@object1 migrationtools]# ./migrate_base.pl > /root/base.ldif

#导入LDAP database
[root@object1 migrationtools]# ldapadd -x -W -D "cn=Manager,dc=hyman,dc=com" -f /root/base.ldif

#创建用户和用户组,并将其从本地数据库迁移到LDAP数据库
[root@object1 migrationtools]# mkdir /home/guests
[root@object1 migrationtools]# useradd -d /home/guests/ldapuser1 ldapuser1
[root@object1 migrationtools]# useradd -d /home/guests/ldapuser2 ldapuser2
[root@object1 migrationtools]# echo "password" | passwd --stdin ldapuser1
[root@object1 migrationtools]# echo "password" | passwd --stdin ldapuser2

#过滤掉这些用户和组和密码从/etc/shadow到不同的文件
[root@object1 ~]# getent passwd | tail -n 5 > /root/users
[root@object1 ~]# getent shadow | tail -n 5 > /root/shadow
[root@object1 ~]# getent group | tail -n 5 > /root/groups

#创建这些用户使用migrationtools
[root@object1 ~]# cd /usr/share/migrationtools/
[root@object1 migrationtools]# vim migrate_passwd.pl
修改188行
把 /etc/shadow 替换为 /root/shadow

[root@object1 migrationtools]# ./migrate_passwd.pl /root/users > users.ldif
[root@object1 migrationtools]# ./migrate_passwd.pl /root/groups > groups.ldif


#上传这些用户和组LDAP数据库
[root@object1 ~]# ldapadd -x -W -D "cn=Manager,dc=hyman,dc=com" -f users.ldif
[root@object1 ~]# ldapadd -x -W -D "cn=Manager,dc=hyman,dc=com" -f groups.ldif

#所有记录搜索LDAP DIT
[root@object1 ~]# ldapsearch -x -b "dc=hyman,dc=com" -H ldap://127.0.0.1

LDAP 客户端验证

1
2
3
4
[root@block1 ~]# yum install -y nss-pam*
[root@block1 ~]# authconfig-tui
选择第二个Use LDAP
[root@block1 ~]# su ldaduser1