📅  最后修改于: 2020-10-31 13:32:58             🧑  作者: Mango
称为轻型目录访问协议的LDAP是一种协议,用于访问目录中已知的企业内的X.500服务容器。那些熟悉Windows Server Administration的人可以认为LDAP本质上与Active Directory非常相似。它甚至是将Windows工作站缠绕到OpenLDAP CentOS企业中的广泛使用的概念。另一方面,CentOS Linux工作站可以共享资源并参与Windows域中的基本功能。
在CentOS上将LDAP部署为目录服务器代理,目录系统代理或DSA(这些缩写全都相同)与使用带有NDS的目录树结构的较早的Novell Netware安装类似。
LDAP基本上是一种有效的方式来访问带有企业资源的X.500目录。 X.500和LDAP都具有相同的特征并且非常相似,以至于LDAP客户端可以使用一些帮助程序来访问X.500目录。 LDAP也有自己的目录服务器slapd 。 LDAP和DAP之间的主要区别在于,轻量级版本旨在通过TCP进行操作。
而DAP使用完整的OSI模型。随着Internet的出现,TCP / IP和以太网在当今网络中的兴起,很少会遇到在特定传统计算模型之外使用DAP和本机X.500企业目录进行目录服务植入的情况。
适用于CentOS Linux的openldap使用的主要组件是-
openldap | LDAP support libraries |
---|---|
openldap-server | LDAP server |
openldap-clients | LDAP client utlities |
openldap-devel | Development libraries for OpenLDAP |
compay-openldap | OpenLDAP shared libraries |
slapd | Directory server daemon of OpenLDAP |
slurpd | Used for LDAP replication across an enterprise domain |
注-命名企业时,最佳实践是使用.local TLD。隔离在线和内部域基础结构时,使用.net或.com可能会造成困难。想象一下,使用acme.com内部和外部运营公司内部的公司的额外工作。因此,拥有称为acme.com或acme.net的Internet资源是明智的。然后,本地联网企业资源被描述为acme.local 。这将需要配置DNS记录,但要付出简单,雄辩和安全的代价。
从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
现在,让我们确保在/ etc / openldap中具有我们的openldap结构。
root@localhost]# ls /etc/openldap/
certs check_password.conf ldap.conf schema slapd.d
[root@localhost]#
然后确保我们的拍打服务正在运行。
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]#
接下来,让我们配置我们的Open LDAP安装。
确保我们的系统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的输出。
步骤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:
使用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架构。
添加余弦和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的域。使用名为ldapadm的LDAP Admin在本地进行。
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 Enterprise用户。
打开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 Schema。
[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 Enterprise之前,我们需要分配密码,如下所示-
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 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客户端访问需要在客户端上安装以下软件包:openldap,open-ldap客户端和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