【DevOps工具篇】 OpenLDAP的LDAP服务器(slapd)是什么?

【DevOps工具篇】 OpenLDAP的LDAP服务器(slapd)是什么?

【DevOps工具篇】 OpenLDAP的LDAP服务器(slapd)是什么?@TOC

推荐超级课程:

Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战OpenLDAP是一种使用LDAP(轻量目录访问协议)集中管理用户名和密码的开源软件的标准实现。它由LDAP服务器、用于访问LDAP的客户端、以及用于从各种程序访问LDAP的库等多个组件组成。在这里,我们将介绍OpenLDAP的LDAP服务器(slapd)。

OpenLAP的LDAP服务器(slapd)是什么LDAP服务器(slapd)是附带OpenLDAP的LDAP服务器软件。它在互联网上被广泛使用。该LDAP服务器支持LDAP协议版本2和版本3。OpenLDAP的LDAP服务器(slapd)具有以下特点:

基本功能OpenLDAP的LDAP服务器不仅支持简单身份验证,还支持SASL身份验证。此外,它提供了用于定义LDAP服务器上要使用的对象类和属性等架构的标准模式。此外,在OpenLDAP中,也可以从远程管理LDAP服务器。

安全性OpenLDAP不仅支持对LDAP服务器的slapd进行IP访问控制,还可以对DN和属性进行细粒度的访问控制。此外,OpenLDAP支持通过SSL/TLS进行加密通信。

管理性OpenLDAP的服务器配置可以动态进行,无需停止LDAP服务器。此外,OpenLDAP附带了用于备份和还原LDAP服务器数据的工具。

可靠性和可扩展性OpenLDAP具有在负载较高的环境中使用LDAP服务器的可靠性。它还可以在LDAP服务器之间同步数据库,构建考虑冗余的LDAP服务器。此外,OpenLDAP还支持通过两种形式,即叠加和后端DB,扩展LDAP服务器的功能。

调优在OpenLDAP中,可以根据LDAP服务器的用途选择后端数据库。通过设置与搜索方式匹配的索引,可以加快LDAP服务器的运行速度。

OpenLDAP的服务器基本功能在这里,我们将介绍OpenLDAP服务器slapd的基本功能。

简单身份验证和SASL身份验证OpenLDAP支持以下3种方法作为每个LDAP客户端连接到服务器时的身份验证方式:

匿名身份验证

这是一种连接到LDAP服务器后不进行认证的连接方式,仅用于访问公开信息。

简单身份验证

这是一种在连接到LDAP服务器后,使用LDAP服务器目录中定义的特定DN和密码进行身份验证的方法。

SASL身份验证

这是LDAP Version 3中定义的身份验证方法,在OpenLDAP附带的实用工具命令中,此方法是默认的。SASL(简单认证和安全层)在RFC2222中定义。连接到LDAP服务器后,将进行基于外部数据而不是LDAP服务器目录中定义的数据的身份验证。OpenLDAP还支持使用运行LDAP服务器的Linux系统的用户进行身份验证等功能。

LDAP模式与使用数据库时定义表一样,要在LDAP服务器注册数据,需要预先定义数据的类型。这就是模式。LDAP服务器的模式可以通过自定义,但通常使用已经在RFC等中标准化了的模式。OpenLDAP附带了许多模式。但是,默认情况下,OpenLDAP并不加载大多数模式,因此可能需要根据需要进行设置。

LDAP模式描述collective.schema定义在RFC3671中定义的集合属性的模式corba.schema用于CORBA(公共对象请求代理体系结构)的模式core.schemaOpenLDAP核心模式(必需)cosine.schemaCOSINE和Internet X.500模式(必需)duaconf.schema用于管理DUA(目录用户代理)的模式dyngroup.schema用于Netscape定义的动态组的模式inetorgperson.schema定义表示与组织相关的人员的inetOrgPerson对象类的模式java.schema用于处理在RFC2713中定义的Java对象的模式misc.schema定义正在发展中的对象类的模式nis.schema用于处理UNIX账户等的模式,例如posixAccount和posixGroup在此文件中定义openldap.schemaOpenLDAP项目的模式,用于信息提供pmi.schema用于管理X.509 PMI(权限管理基础结构)的模式ppolicy.schema用于密码策略的模式在OpenLDAP中,注册模式到LDAP服务器时,需要使用LDIF格式的模式数据。

OpenLDAP服务器管理LDAP服务器配置LDAP服务器(slapd)将配置管理为专用DIT(目录信息树),以cn=config作为根DN。该DIT包含LDAP服务器的配置信息,这些信息分别存储在各种条目中。例如,模式信息存储在以cn=schema,cn=config作为顶级的条目中。可以通过添加或更改这些条目的属性来更改配置。在cn=config下面,有许多用于配置的条目。这些配置在LDAP服务器上实际上是作为目录层次结构和文件进行管理的。可以验证存储的数据文件如下所示。

# find /usr/local/etc/openldap/slapd.d/cn=config ⏎

/usr/local/etc/openldap/slapd.d/cn=config

/usr/local/etc/openldap/slapd.d/cn=config/cn=schema.ldif

/usr/local/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif

/usr/local/etc/openldap/slapd.d/cn=config/olcDatabase={1}mdb.ldif

/usr/local/etc/openldap/slapd.d/cn=config/cn=schema

/usr/local/etc/openldap/slapd.d/cn=config/cn=schema/cn={2}nis.ldif

/usr/local/etc/openldap/slapd.d/cn=config/cn=schema/cn={1}cosine.ldif

/usr/local/etc/openldap/slapd.d/cn=config/cn=schema/cn={3}inetorgperson.ldif

/usr/local/etc/openldap/slapd.d/cn=config/cn=schema/cn={0}core.ldif

/usr/local/etc/openldap/slapd.d/cn=config/olcDatabase={-1}frontend.ldif

不能直接修改这些配置文件。可以使用ldapsearch命令显示配置条目的属性。可以使用LDIF格式的文件,并使用ldapadd、ldapmodify等命令来添加或修改配置。例如,如果要更改LDAP服务器以在LDAP Version 2协议下通信,可以创建以下类似的LDIF文件(bind-v2.ldif)。

用于LDAP服务器配置的LDIF示例(bind-v2.ldif)

dn: cn=config

changetype: modify

add: olcAllows

olcAllows: bind_v2

可以使用ldapmodify命令更改配置,如下所示。

# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f bind_v2.ldif ⏎

modifying entry "cn=config"

在CentOS7或RedHat Enterprise Linux 7中,使用UNIX域套接字配置为root用户可以更改LDAP服务器的配置。在使用UNIX域套接字时,需要查看执行命令的用户的权限,以确定是否可以更改配置。在此示例中,已使用root用户执行,可以在不输入密码的情况下进行配置更改。

LDAP数据备份和还原OpenLDAP的LDAP服务器附带了用于备份和还原LDAP数据的LDAP实用工具。因此,即使发生故障,也可以恢复LDAP服务器并安全使用。

slapcatslapcat命令用于以LDIF格式导出LDAP服务器的数据。可以使用以下示例指定文件来获取LDAP服务器数据的备份。

# slapcat -l /tmp/openldap-data.ldif ⏎

slapadd使用slapcat获取的LDAP数据可以使用slapadd命令进行还原。

# slapadd -l /tmp/openldap-data.ldif ⏎

> _#################### 100.00% eta none elapsed none fast!

Closing DB...

slapindex在恢复LDAP数据后,需要使用slapindex命令重新生成索引。

# slapindex ⏎

调优一旦使用OpenLDAP构建LDAP服务器,就需要进行优化。优化有两种方法:设置索引和调整数据库。通过正确优化LDAP服务器,可以加快其速度。

数据库优化在OpenLDAP中,可以根据LDAP服务器的用途选择几种数据库格式。

bdb使用Berkeley DB创建的数据库。LDAP服务器的数据注册处理速度较慢,但是搜索速度快。

hdb使用Berkeley DB创建的数据库。将数据以层次结构进行管理。搜索性能稍逊色,但数据注册处理优于bdb。

mdb这是最新的OpenLDAP采用的专有数据库格式。优于搜索和注册处理,但尚无大规模部署经验。

遗憾的是,mdb在采用它的版本(如CentOS7、RedHat Enterprise Linux 7等)中尚不可用。使用bdb或hdb时,可以通过调整Berkeley DB的缓存大小等进行优化,从而进一步加快LDAP服务器的速度。

索引注册到LDAP服务器的LDAP数据将根据使用方式进行索引化。可以通过更改LDAP服务器(slapd)的设置来确定为哪些属性设置索引。通过为经常搜索的属性设置索引,可以优化LDAP服务器(slapd)。

OpenLDAP的安全性在LDAP服务器上,管理个人信息并不少见。因此,安全性需要得到充分考虑。OpenLDAP可以提供强大的安全性,以满足企业级应用的需要。

使用专用用户启动如果使用root用户运行LDAP服务器(slapd),则可能会遭受攻击从而获取系统的root权限。因此,可以配置LDAP服务器(slapd)以使用专用用户运行。

# /usr/local/sbin/slapd -u ldap -g ldap

SSL/TLS支持OpenLDAP支持SSL/TLS连接。要将LDAP服务器(slapd)配置为支持SSL/TLS,可以使用下面示例的LDIF文件注册LDAP服务器的服务器证书、服务器密钥、CA证书等。

示例LDAP服务器中注册服务器证书、服务器密钥、CA证书的LDIF文件

dn: cn=config

changetype: modify

add: olcTLSCACertificateFile

olcTLSCACertificateFile: /usr/local/etc/openldap/server.pem

-

add: olcTLSCertificateFile

olcTLSCertificateFile: /usr/local/etc/openldap/server.pem

-

add: olcTLSCertificateKeyFile

olcTLSCertificateKeyFile: /usr/local/etc/openldap/server.key

LDAP服务器(slapd)支持在常规的ldap端口(TCP 389)上连接后,通过STARTTLS切换到TLS模式,以及在LDAP over TLS(TCP 636)上一开始就使用TLS的两种方法。

RESTRICT LISTEN地址可以根据IP地址来限定特定IP地址的连接方式,例如:

# /usr/local/libexec/slapd -h "ldap:/// ldapi:/// ldaps:///" ⏎

此示例中,LDAP服务器将接受UNIX域套接字(ldapi)、ldap端口(ldap)和ldaps端口(ldaps)的连接。可以根据IP地址来限制仅特定IP地址的连接,例如:

# /usr/local/libexec/slapd -h "ldap://192.168.2.10/ ldapi:/// ldaps://192.168.2.10/" ⏎

IP访问控制slapd支持使用TCP Wrapper进行对访问的控制。例如,在CentOS7和RedHat Enterprise Linux 7中使用的包中,此功能已启用。使用TCP Wrapper,可以根据连接的源IP地址控制连接的是否性。

/etc/hosts.allow

slapd: 192.168.2.0/24

对LDAP数据的访问控制LDAP服务器(slapd)默认定义了一个称为root DN的管理DN。使用此DN,可以对LDAP服务器上的所有数据进行修改或添加。与在Linux上的root用户类似。然而,使用此DN进行所有操作是危险的。因此,Designet建议根据用途创建用于访问的DN。

另外,可以根据需要对可以访问LDAP数据的用户进行细粒度的控制。例如,可以将包含用户密码的userPassword属性设置为仅允许管理员读取。

接下来,是创建名为cn=Admin,dc=designet,dc=jp的只读用户的LDIF示例。在此LDIF中,配置为仅允许该用户和DN的所有者查看userPassword属性。

用于创建只读用户的LDAP服务器的LDIF示例

dn: olcDatabase={1}mdb,cn=config

changetype: modify

add: olcAccess

olcAccess: to attrs=userPassword

by anonymous auth

by dn="cn=Admin,dc=designet,dc=jp" read

by * none

olcAccess: to *

by self =rwcsx

by dn="cn=Admin,dc=designet,dc=jp" =rcsx

by * read

相关推荐

Ubuntu下PyCharm安装全攻略:从新手到高效编程专家
beat365手机中文官方网站

Ubuntu下PyCharm安装全攻略:从新手到高效编程专家

📅 07-09 👁️ 9656
贲门癌症能活多久
365bet体育投注地

贲门癌症能活多久

📅 06-29 👁️ 1941
飞行属性的宝可梦
365游戏中心官网地址

飞行属性的宝可梦

📅 07-13 👁️ 8888
西安旅游必去十大景点推荐,西安10个周边游好去处
365游戏中心官网地址

西安旅游必去十大景点推荐,西安10个周边游好去处

📅 06-30 👁️ 2056
演艺圈奖项及获奖明星 娱乐圈奖项含金量高低排名
365bet体育投注地

演艺圈奖项及获奖明星 娱乐圈奖项含金量高低排名

📅 07-09 👁️ 7896
賓士宣布聯手 Boosteroid 遊戲平台造福車主,未來在車上就能爽玩 3A 遊戲
5. 手机脱胶修复要好多钱
365bet体育投注地

5. 手机脱胶修复要好多钱

📅 06-30 👁️ 808
2尺6等于多少厘米?
365bet体育投注地

2尺6等于多少厘米?

📅 07-13 👁️ 7691
驱动精灵怎么搜索驱动,驱动精灵搜索驱动的方法
365bet体育投注地

驱动精灵怎么搜索驱动,驱动精灵搜索驱动的方法

📅 06-29 👁️ 6134