安装和配置OpenLDAP



LDAP,即轻量级目录访问协议,是一种用于访问企业中已知的目录内X.500服务容器的协议。熟悉Windows服务器管理的人可以认为LDAP与Active Directory非常相似。它甚至是一个将Windows工作站融入OpenLDAP CentOS企业的广泛使用的概念。另一方面,CentOS Linux工作站可以共享资源并参与Windows域的基本功能。

在CentOS上部署LDAP作为目录服务器代理、目录系统代理或DSA(这些缩写都是一样的)类似于使用NDS和目录树结构的旧版Novell Netware安装。

LDAP简史

LDAP基本上是作为一种有效访问具有企业资源的X.500目录的方法而创建的。X.500和LDAP具有相同的特性,并且非常相似,以至于LDAP客户端可以使用一些辅助工具访问X.500目录。虽然LDAP也有自己的目录服务器,称为slapdLDAPDAP之间的主要区别在于,轻量级版本设计为在TCP上运行。

DAP使用完整的OSI模型。随着互联网的兴起,TCP/IP和以太网在当今网络中的突出地位,在特定遗留计算模型之外,很少会遇到使用DAP和本地X.500企业目录的目录服务实现。

CentOS Linux的openldap使用的主要组件有:

openldap LDAP支持库
openldap-server LDAP服务器
openldap-clients LDAP客户端实用程序
openldap-devel OpenLDAP的开发库
compay-openldap OpenLDAP共享库
slapd OpenLDAP的目录服务器守护进程
slurpd 用于在企业域中进行LDAP复制

注意 - 为您的企业命名时,最佳实践是使用.local TLD。使用.net.com可能会导致区分在线和内部域基础设施时出现困难。想象一下,一家公司内部同时使用acme.com进行内部和外部操作所需做的额外工作。因此,明智的做法是将互联网资源称为acme.comacme.net。然后,本地网络企业资源表示为acme.local。这需要配置DNS记录,但会带来简单性、流畅性和安全性。

在CentOS上安装OpenLDAP

YUM安装openldap、openldap-servers、openldap-clients和migrationstools。

[root@localhost]# yum -y install openldap openldap-servers openldap-clients
migration tools
 Loaded plugins: fastestmirror, langpacks
 updates
 | 3.4 kB  00:00:00
 updates/7/x86_64/primary_db
 | 2.2 MB  00:00:05
 Determining fastest mirrors
 (1/2): extras/7/x86_64/primary_db
 | 121 kB  00:00:01
 (2/2): base/7/x86_64/primary_db
 | 5.6 MB  00:00:16
 Package openldap-2.4.40-13.el7.x86_64 already installed and latest version
 Resolving Dependencies
 --> Running transaction check
 ---> Package openldap-clients.x86_64 0:2.4.40-13.el7 will be installed
 ---> Package openldap-servers.x86_64 0:2.4.40-13.el7 will be installed
 --> Finished Dependency Resolution
 base/7/x86_64/group_gz
 | 155 kB  00:00:00
 
 Dependencies Resolved
 
=============================================================================== 
=============================================================================== 
Package                                Arch
Version                             Repository                        Size 
=============================================================================== 
=============================================================================== 
Installing: 
openldap-clients                    x86_64
2.4.40-13.el7                    base                                 188 k 
openldap-servers                    x86_64
2.4.40-13.el7                    base                                 2.1 M  

Transaction Summary 
=============================================================================== 
===============================================================================
Install  2 Packages

Total download size: 2.3 M 
Installed size: 5.3 M 
Downloading packages:

Installed: 
openldap-clients.x86_64 0:2.4.40-13.el7                                       
openldap-servers.x86_64 0:2.4.40-13.el7                                       
Complete! 
[root@localhost]#

现在,让我们启动并启用slapd服务:

[root@centos]# systemctl start slapd 
[root@centos]# systemctl enable  slapd

此时,让我们确保我们的openldap结构位于/etc/openldap中。

root@localhost]# ls /etc/openldap/ 
certs  check_password.conf  ldap.conf  schema  slapd.d
[root@localhost]#

然后确保我们的slapd服务正在运行。

root@centos]# netstat -antup | grep slapd
tcp        0      0 0.0.0.0:389            0.0.0.0:*              LISTEN      1641/slapd
tcp6       0      0 :::389                 :::*                   LISTEN      1641/slapd
 
[root@centos]#

接下来,让我们配置我们的OpenLDAP安装。

确保已创建我们的系统ldap用户。

[root@localhost]# id ldap 
uid=55(ldap) gid=55(ldap) groups=55(ldap)
[root@localhost]#

生成我们的LDAP凭据。

[root@localhost]# slappasswd  
New password:  
Re-enter new password:  
{SSHA}20RSyjVv6S6r43DFPeJgASDLlLoSU8g.a10

[root@localhost]#

我们需要保存slappasswd的输出。

配置OpenLDAP

步骤1 - 为域配置LDAP并添加管理员用户。

首先,我们要设置我们的openLDAP环境。以下是使用ldapmodify命令的模板。

dn: olcDatabase={2}hdb,cn=config 
changetype: modify 
replace: olcSuffix 
olcSuffix: dc=vmnet,dc=local 
dn: olcDatabase = {2}hdb,cn=config 
changetype: modify 
replace: olcRootDN 
olcRootDN: cn=ldapadm,dc=vmnet,dc=local 
dn: olcDatabase = {2}hdb,cn=config 
changetype: modify 
replace: olcRootPW 
olcRootPW: <output from slap

使用ldapmodify命令更改:/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif。

[root@localhost]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/rdc/Documents/db.ldif  
SASL/EXTERNAL authentication started 
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth 
SASL SSF: 0 
modifying entry "olcDatabase = {2}hdb,cn=config" 
modifying entry "olcDatabase = {2}hdb,cn=config" 
modifying entry "olcDatabase = {2}hdb,cn=config" 

[root@localhost cn=config]#

让我们检查修改后的LDAP配置。

root@linux1 ~]# vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

[root@centos]# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
 # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. 
 # CRC32 a163f14c
dn: olcDatabase = {2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 1bd9aa2a-8516-1036-934b-f7eac1189139
creatorsName: cn=config
createTimestamp: 20170212022422Z
olcSuffix: dc=vmnet,dc=local
olcRootDN: cn=ldapadm,dc=vmnet,dc=local
olcRootPW:: e1NTSEF1bUVyb1VzZTRjc2dkYVdGaDY0T0k = 
entryCSN: 20170215204423.726622Z#000000#000#000000 
modifiersName: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20170215204423Z

[root@centos]#

如您所见,我们的LDAP企业修改成功了。

接下来,我们要为OpenLDAP创建一个自签名ssl证书。这将确保企业服务器和客户端之间的通信安全。

步骤2 - 为OpenLDAP创建自签名证书。

我们将使用openssl创建自签名ssl证书。请转到下一章使用openssl创建LDAP SSL证书,了解有关使用OpenLDAP保护通信的说明。然后,配置ssl证书后,我们将完成OpenLDAP企业配置。

步骤3 - 配置OpenLDAP以使用证书进行安全通信。

vim中创建一个certs.ldif文件,其中包含以下信息:

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/yourGeneratedCertFile.pem

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/youGeneratedKeyFile.pem

接下来,再次使用ldapmodify命令将更改合并到OpenLDAP配置中。

[root@centos rdc]# ldapmodify -Y EXTERNAL  -H ldapi:/// -f certs.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

[root@centos]#

最后,让我们测试我们的OpenLADP配置。

[root@centos]# slaptest -u 
config file testing succeeded 
[root@centos]#

步骤4 - 设置slapd数据库。

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG && 
chown ldap:ldap /var/lib/ldap/*

更新OpenLDAP模式。

添加cosine和nis LDAP模式。

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

最后,创建企业模式并将其添加到当前的OpenLDAP配置中。

以下是针对名为vmnet.local的域和名为ldapadm的LDAP管理员的配置。

dn: dc=vmnet,dc=local
dc: vmnet
objectClass: top
objectClass: domain

dn: cn=ldapadm ,dc=vmnet,dc=local
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager

dn: ou = People,dc=vmnet,dc=local
objectClass: organizationalUnit
ou: People

dn: ou = Group,dc=vmnet,dc=local 
objectClass: organizationalUnit 
ou: Group

最后,将其导入到当前的OpenLDAP模式中。

[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f ./base.ldif
 Enter LDAP Password:
adding new entry "dc=vmnet,dc=local"

adding new entry "cn=ldapadm ,dc=vmnet,dc=local"

adding new entry "ou=People,dc=vmnet,dc=local"

adding new entry "ou=Group,dc=vmnet,dc=local"

[root@centos]#

步骤5 - 设置OpenLDAP企业用户。

打开vim或您喜欢的文本编辑器,并复制以下格式。这是为“vmnet.local”LDAP域上的名为“entacct”的用户设置的。

dn: uid=entacct,ou=People,dc=vmnet,dc=local 
objectClass: top
objectClass: account 
objectClass: posixAccount 
objectClass: shadowAccount 
cn: entacct 
uid: entacct 
uidNumber: 9999 
gidNumber: 100 
homeDirectory: /home/enyacct 
loginShell: /bin/bash 
gecos: Enterprise User Account 001 
userPassword: {crypt}x 
shadowLastChange: 17058 
shadowMin: 0 
shadowMax: 99999 
shadowWarning: 7

现在,将以上保存的文件导入OpenLdap模式。

[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f entuser.ldif 
 Enter LDAP Password:
adding new entry "uid=entacct,ou=People,dc=vmnet,dc=local" 

[root@centos]#

在用户可以访问LDAP企业之前,我们需要按如下方式分配密码:

ldappasswd -s password123 -W -D "cn=ldapadm,dc=entacct,dc=local" -x "uid=entacct 
,ou=People,dc=vmnet,dc=local"

-s 指定用户的密码

-x 是应用密码更新的用户名

-D 是用于对LDAP模式进行身份验证的“可分辨名称”。

最后,在登录企业帐户之前,让我们检查我们的OpenLDAP条目。

[root@centos rdc]# ldapsearch -x cn=entacct -b dc=vmnet,dc=local
 # extended LDIF
 #
 # LDAPv3
 # base <dc=vmnet,dc=local> with scope subtree
 # filter: cn=entacct
 # requesting: ALL 
 # 
 # entacct, People, vmnet.local 
dn: uid=entacct,ou=People,dc=vmnet,dc=local 
objectClass: top 
objectClass: account 
objectClass: posixAccount 
objectClass: shadowAccount 
cn: entacct 
uid: entacct 
uidNumber: 9999 
gidNumber: 100 
homeDirectory: /home/enyacct 
loginShell: /bin/bash 
gecos: Enterprise User Account 001 
userPassword:: e2NyeXB0fXg= 
shadowLastChange: 17058 
shadowMin: 0 
shadowMax: 99999 
shadowWarning: 7

/etc/passwd/etc/groups等内容转换为OpenLDAP身份验证需要使用迁移工具。这些工具包含在migrationtools包中,然后安装到/usr/share/migrationtools

[root@centos openldap-servers]# ls -l /usr/share/migrationtools/
total 128
-rwxr-xr-x. 1 root root  2652 Jun  9  2014 migrate_aliases.pl
-rwxr-xr-x. 1 root root  2950 Jun  9  2014 migrate_all_netinfo_offline.sh
-rwxr-xr-x. 1 root root  2946 Jun  9  2014 migrate_all_netinfo_online.sh
-rwxr-xr-x. 1 root root  3011 Jun  9  2014 migrate_all_nis_offline.sh
-rwxr-xr-x. 1 root root  3006 Jun  9  2014 migrate_all_nis_online.sh
-rwxr-xr-x. 1 root root  3164 Jun  9  2014 migrate_all_nisplus_offline.sh
-rwxr-xr-x. 1 root root  3146 Jun  9  2014 migrate_all_nisplus_online.sh
-rwxr-xr-x. 1 root root  5267 Jun  9  2014 migrate_all_offline.sh
-rwxr-xr-x. 1 root root  7468 Jun  9  2014 migrate_all_online.sh
-rwxr-xr-x. 1 root root  3278 Jun  9  2014 migrate_automount.pl
-rwxr-xr-x. 1 root root  2608 Jun  9  2014 migrate_base.pl

步骤6 - 最后,我们需要允许访问slapd服务,以便它可以提供服务请求。

firewall-cmd --permanent --add-service=ldap 
firewall-cmd --reload

配置LDAP客户端访问

配置LDAP客户端访问需要客户端上的以下软件包:openldap、open-ldap clients和nss_ldap。

为客户端系统配置LDAP身份验证比较容易。

步骤1 - 安装依赖包:

# yum install -y openldap-clients nss-pam-ldapd

步骤2 - 使用authconfig配置LDAP身份验证。

authconfig --enableldap --enableldapauth --ldapserver=10.25.0.1 --
ldapbasedn="dc=vmnet,dc=local" --enablemkhomedir --update

步骤3 - 重启nslcd服务。

systemctl restart  nslcd
广告