如何使用TLS/SSL使用LDAP通过LDAP进行AD身份验证
Active Directory(AD)和OpenLDAP都在企业中扮演重要角色。
实际上,在同一内,我们将使用OpenLDAP和LAN和Windows管理员使用AD找到UNIX组。
但是,大多数人无法通过OpenLDAP完全访问AD架构。
在本文中,我们将考虑如何使用带有传输层安全性/SSL的LDAP通过LDAP配置Active Directory身份验证。
OpenLDAP和AD可以和平共共存 - 关键是找到允许LDAP操作跨越AD和OpenLDAP部署之间边界的最佳方式。
实现此操作的一种方法是使用TLS/SSL的LDAP配置Active Directory身份验证。
我们的主要目标是将LDAP与Active Directory集成。
我们将将某些架构包含到主要配置文件中并添加所需的参数。
在我们开始之前
在继续之前,让我们定义术语。
首先,LDAP服务器实际上是所谓的目录服务代理(DSA)。
其次,DSA管理目录信息树(DIT)的任一部分或者全部。
可以部署几个DSA以管理整个DIT,并允许复制和高可用性。
DSA管理的DIT的部分是已知的作为分区或者数据库。
我们将使用术语数据库。
确保OpenLDAP已启动并运行
OpenLDAP服务器进程名为Slapd,它代表"独立的LDAP守护程序"。
它提供了几乎所有的OpenLDAP服务器功能,包括接受来自LDAP客户端,进程查询和更新的连接的功能,并实现限制访问目录内的机密信息的ACL。
让我们考虑已经安装和配置了OpenLDAP。
根据上面的配置,Slapd管理目录树DC =示例的数据库,DC = COM。
请确保Slapd服务正在运行。
service slapd status
现在,我们将测试我们的条目(从本文中提供的相同的示例配置)使用LDapsearch命令正确加载。
ldapsearch -LLL -x -h localhost -b 'dc=example,dc=com'
-x选项指定ldapsearch应使用简单的身份验证而不是简单的身份验证和安全层(SASL)。
通过简单的身份验证,LDAP客户端将以明文发送凭据。
即使我们在SSL(LDAPS)或者LDAP STARTLS上使用LDAP,我们仍然使用简单的身份验证,但用于通信的隧道已加密(以及更安全)。
回到ldapsearch命令。
它执行查询以查找树根下方的所有条目。
正如预期的那样,LDAPSearch将返回我们最初通过LDAPADD导入的所有条目,如提供的示例中。
与Active Directory集成
通过使用简单的LDAPSearch CommityOn我们的本地客户端,我们很容易查看OpenLDAP的条目,但是在Active Directory下管理的查看条目如何?
为此,我们需要将OpenLDAP指向Active Directory。
请确保所有必需的模块包含在slapd.conf文件中:
include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema
下一步是将OpenLDAP代理启用为Active Directory,请导航到Slapd.conf的末尾并添加以下行:
database ldap subordinate rebind-as-user yes uri "ldaps://ad-dc.example.com" suffix "DC=corp,DC=ad,DC=com" chase-referrals yes idassert-bind bindmethod=simple binddn="CN=ad-username,DC=corp,DC=ad,DC=com" credentials="password" tls_cacert=/etc/openldap/certs/certificate_file
数据库LDAP通过使用Slapd-LDAP定义了一个新的后端,这将是我们的代理服务。
没有此关键字的从属,Slapd仅搜索由搜索库指定的数据库(例如,如果DC =示例,DC = COM是指定的搜索基础,则CN =用户,DC =示例,DC = COM将永远不会被检查,因为它是不同的Slapd数据库)。
rebind-as-user此选项告诉slapd与客户端提供的凭据绑定到远程目录服务代理。
请注意,凭据必须在AD中有效。
URI这指定了远程LDAP服务器,在这种情况下是AD域控制器。
Chase-Regaral此选项指定Slapd将自动追踪任何引用。
idassert-bind此参数用于绑定到远程服务器,并选择授权其他身份。
BindMethod此语句用于定义代理使用哪种方法与给定的管理标识绑定到远程服务器。
在这种情况下,我们使用简单,因为强烈建议将TL与简单的绑定一起使用。
简单绑定需要其他参数:
binddn ="cn = ad-username,dc = corp,dc = ad,dc = com"用于指定绑定dn;凭据="密码"用于指定绑定凭据;
TLS_CACERT传输层安全性证书颁发机构证书定义了允许客户端验证LDAP服务器证书的证书的路径和文件名。
此文件可以从X.509证书供应商处获取,或者在从LDAP服务器复制的自签名情况下获取。
好的,所以现在客户端将被授权为"CN = Ad-Username,DC = Corp,DC = AD,DC = COM",即使它们实际上匿名连接到代理。
现在,重新启动Slapd服务并再次运行LDAPSearch
ldapsearch -v -H "ldaps://ad-dc.example.com:636/" -b "DC=corp,DC=ad,DC=com" -s sub -D "CN=ad-username,DC=corp,DC=ad,DC=com" -w "password"
如果命令失败,请确保:
1.我们可以达到LDAP://Ad-dc.example.com:636
2.与客户端提供的凭据(Active Directory侧)绑定