OpenLDAP服务器安装配置

本文涉及的产品
访问控制,不限时长
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: ldap
                                              第16章   配置OpenLDAP服务器

16.1 LDAP简介

16.12.1 什么是LDAP

目录具有以下两个主要组成部分

。数据库,数据库是分布式的,且拥有一个描述数据的规则

。访问和处理数据的各种协议

LDAP(Lightweight directory Access Protocol,轻量级目录访问协议):是基于X.500标准的目录服务在TCP/IP协议上实现的,

它是对X.500的目录协议的移植,但是简化了实现方法。LDAP是一个用来发布目录信息到许多不同资源的协议。

LDAP是实现了指定的数据结构的存储,它是一种特殊的数据库.

16.1.2 LDAP协议

LDAP服务器通常使用LDAP协议提供目录服务,LDAP协议是跨平台的标准的协议。最常使用的则是V2和V3两个版本。

16.1.3 LDAP使用优势

1.跨平台

2.费用及维护

3.复制技术

4.允许使用ACL

16.1.4 LDAP基本模型

LDAP的级别模型包括:

1.信息模型

2.命名模型

 带路径的文件名:DN

 文件名就是RDN

3.功能模型

4.安全模型

(1)身份认证

 在LDAP中提供了匿名认证、基本认证和SASL认证3种认证机制。

(2)通信安全

(3)访问控制

16.1.5 OpenLDAP简介

OpenLDAP是LDAP应用和开发工具的自由和开源套件,用于在网络上访问目录服务。在其OpenLDAP许可证下发型,

并已经被包含在众多的流行的Linux发型版中。

OpenLDAP主要包括以下3个部分

。slapd:独立的LDAP守护服务

。实现LDAP协议的库

。工具软件和示例客户端

16.2 LDIF简介

16.2.1 什么是LDIF

LDIF是LDAP约定的记录交换格式,以平面文本的形式存在,是大部分LDAP内容交换的基础,如复制、添加、修改等操作,

都是基于LDIF文件进行操作。

LDAP目录使用对象类来定义运行哪一类的对象使用什么属性。条目中的记录通过对象类实现分类。

16.2.2 对象类

在LDAP中,一个条目必须包含一个对象类属性,且需要赋予至少一个值,每一个值将用作一条LDAP条目进行数据存储的模板。

模板中包含了一个条目必须被赋值的属性和可选的属性。

对象类有3种类型:

。结构型:比如person和organizationalUnit

。辅助型:比如extensibeObject

。抽象型:比如top,抽象型的对象类不能直接使用。

16.2.3 属性

属性(Attribute)类似于程序设计中的变量,可以被赋值。
注意:对象类是一种特殊的属性,它包含其他用到的属性以及其自身。

16.3 OpenLDAP服务器安装和配置

16.3.1 安装OpenLDAP服务器软件包

 环境:centos 6.5

 。查看是否默认安装LDAP相关的包

 -->rpm -qa|grep openldap-servers

 -->rpm -qa|grep openldap-devel

 -->rpm -qa|grep openldap-clients

 。安装LDAP

 -->yum install cyrus-sasl-* -y

 -->yum install openldap-servers openldap-devel openldap-clients -y   (或者yum install openldap-* -y)

 

16.3.2 /etc/openldap/slapd.conf文件详解

 。生成LDAP配置文件

 -->cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

 。查看LDAP配置文件

 -->vim /etc/openldap/slapd.conf 

See slapd.conf(5) for details on configuration options.

This file should NOT be world readable.

设置包含schema文件,schema文件都存储在/etc/openldap/schema目录中

include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/collective.schema

Allow LDAPv2 client connections. This is NOT the default.

allow bind_v2

Do not enable referrals until AFTER you have a working directory

service AND an understanding of referrals.

referral ldap://root.openldap.org

pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

Load dynamic backend modules

- modulepath is architecture dependent value (32/64-bit system)

- back_sql.la overlay requires openldap-server-sql package

- dyngroup.la and dynlist.la cannot be used at the same time

指定动态加载的后端模块,模块路径为/usr/lib/openldap或/usr/lib64/openldap,其中dyngroup.la

和dynlist.la模块不能同时使用

modulepath /usr/lib/openldap

modulepath /usr/lib64/openldap

moduleload accesslog.la

moduleload auditlog.la

moduleload back_sql.la

moduleload chain.la

moduleload collect.la

moduleload constraint.la

moduleload dds.la

moduleload deref.la

moduleload dyngroup.la

moduleload dynlist.la

moduleload memberof.la

moduleload pbind.la

moduleload pcache.la

moduleload ppolicy.la

moduleload refint.la

moduleload retcode.la

moduleload rwm.la

moduleload seqmod.la

moduleload smbk5pwd.la

moduleload sssvlv.la

moduleload syncprov.la

moduleload translucent.la

moduleload unique.la

moduleload valsort.la

The next three lines allow use of TLS for encrypting connections using a

dummy test certificate which you can generate by running

/usr/libexec/openldap/generate-server-cert.sh. Your client software may balk

at self-signed certificates, however.

TLSCACertificatePath /etc/openldap/certs
TLSCertificateFile ""OpenLDAP Server""
TLSCertificateKeyFile /etc/openldap/certs/password

Sample security restrictions

Require integrity protection (prevent hijacking)

Require 112-bit (3DES or better) encryption for updates

Require 63-bit encryption for simple bind

security ssf=1 update_ssf=112 simple_bind=64

Sample access control policy:

Root DSE: allow anyone to read it

Subschema (sub)entry DSE: allow anyone to read it

Other DSEs:

Allow self write access

Allow authenticated users read access

Allow anonymous users to authenticate

Directives needed to implement policy:

设置访问控制策略

access to dn.base="" by * read

access to dn.base="cn=Subschema" by * read

access to *

by self write

by users read

by anonymous auth

if no access controls are present, the default policy

allows anyone and everyone to read anything but restricts

updates to rootdn. (e.g., "access to by read")

rootdn can always read and write EVERYTHING!

enable on-the-fly configuration (cn=config)

启用即时配置

database config
access to *

    by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
    by * none

enable server status monitoring (cn=monitor)

启用服务器状态监控

database monitor
access to *

    by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
    by dn.exact="cn=Manager,dc=my-domain,dc=com" read
    by * none

database definitions

LDAP数据库定义

database bdb
suffix "dc=my-domain,dc=com"
checkpoint 1024 15
rootdn "cn=Manager,dc=my-domain,dc=com"

Cleartext passwords, especially for the rootdn, should

be avoided. See slappasswd(8) and slapd.conf(5) for details.

Use of strong authentication encouraged.

rootpw secret

rootpw {crypt}ijFYNcSNctBYg

The database directory MUST exist prior to running slapd AND

should only be accessible by the slapd and slap tools.

Mode 700 recommended.

directory /var/lib/ldap

为数据库索引维护

Indices to maintain for this database

index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub

设置数据库的复制

Replicas of this database

replogfile /var/lib/ldap/openldap-master-replog

replica host=ldap-1.example.com:389 starttls=critical

bindmethod=sasl saslmech=GSSAPI

authcId=host/ldap-master.example.com@EXAMPLE.COM


1.模式(schema)

openLDAP一般默认有多个模式,存储在/etc/openldap/schema目录中。其中LDAP V3中必须要有的模式是:

/etc/openldap/schema/core.schema文件,它给出了LDAP V3中最基本的对象类和属性定义。

-->ls /etc/openldap/schema/

collective.ldif core.schema dyngroup.ldif java.schema openldap.ldif ppolicy.schema
collective.schema cosine.ldif dyngroup.schema misc.ldif openldap.schema
corba.ldif cosine.schema inetorgperson.ldif misc.schema pmi.ldif
corba.schema duaconf.ldif inetorgperson.schema nis.ldif pmi.schema
core.ldif duaconf.schema java.ldif nis.schema ppolicy.ldif

2.参数

在/etc/openldap/slapd.conf文件中可以添加和修改的主要参数

。allow bind_v2:允许LDAP v2客户端进行连接

。pidfile   /var/run/openldap/slapd.pid:设置OpenLDAP的PID文件

。argsfile  /var/run/openldap/slapd.args: 设置包含当前正在运行的slapd进程锁用到的命令行参数的文件

。database bdb:设置OpenLDAP使用的数据库

。suffix     "dc=my-domain,dc=com" :设置LDAP目录后缀

。rootdn     "cn=MAnager,dc=my-domain,dc=com": 社会自LDAP目录管理员

。root pw secret: 设置管理员密码,这里使用明文的密码"secret",这样设置不安全,最好使用加密密码。

。directory /var/lib/ldap: 设置LDAP数据库目录,改目录权限为700

。index.objectClass:设置目录项索引,可以根据需要设置相关索引,以加快查询速度。
3.访问控制策略

设置访问控制策略

access to dn.base="" by * read

access to dn.base="cn=Subschema" by * read

access to *

by self write #允许自己写访问

by users read #允许通过验证的用户读访问

by anonymous auth #允许匿名用户进行身份验证

以下是访问控制侧露的示例内容:
access to attr=userPassword

      by self write
  by anonymous auth  #只能由自己修改,允许匿名用户进行身份验证。

access to attr-mail

      by dn="cn-Manager,dc=sh,dc=com" writemail
  by self write
  by anonymous auth  #只能由自己修改,允许匿名用户进行身份验证

access to dn=".*,dc=sh,dc=com"

      by self write
  by * read          #允许所有人查询,不受控制访问限制的信息。

16.3.3 设置LDAP管理员密码

命令语法:slappasswd[选项]

                  ss=kaooasswd命令选项含义
------------------------------------------------------------------------------
 -h<加密方案>    指定加密方案,它支持{CRYPT},{MD5}、{SSHA}和{SHA}等方式,默认
                 值是{SSHA}
------------------------------------------------------------------------------
 -v              启用详细信息模式
 ------------------------------------------------------------------------------
 -g              生成随机密码
------------------------------------------------------------------------------
 -s<密码>        生成哈希密码
------------------------------------------------------------------------------
 -u              生成RFC2307值(默认)
------------------------------------------------------------------------------
 -c  crypt-salt-format    生成{CRYPT}密码
------------------------------------------------------------------------------

例16.1:生成SSHA方案密码

-->slappasswd

   New password:                #输入LDAP管理员密码
   Re-enter new password: 

   {SSHA}WS7H02m0XL6vS3CxMRl8jhXxyDnGQ95b  #此行就是LDAP管理员的加密密码(SSHA加密方案)

例16.2:生成随机密码

-->slappasswd -g

   /w4g/kuJ
例16.3:生成哈希密码

-->slappasswd -s redhat

   {SSHA}5WJs8m+rUG6pJaFIEnMS/yaToSnamYCH
例16.4:生成CRYPT方案密码

-->slappasswd -c crypt-salt-format

   New password:                #输入LDAP管理员密码
   Re-enter new password:       #再次输入LDAP管理员密码
   {CRYPT}crM7iGWT/1u.Y

例16.5:生成MD5方案密码

-->slappasswd -h {MD5}

   New password: 
   Re-enter new password: 
   {MD5}b+K12rHkQG1FUDqjecAJyw==   #这行就是LDAP管理员的加密密码(MD5)加密方案

16.3.4 OpenLDAP服务器配置实例

在公司内部配置一台OpenLDAP服务器,为公司网络内的客户端计算机提供目录服务,具体参数如下:

。OpenLDAP目录管理员:Manager

。OpenLDAP目录管理员密码使用MD5加密

。OpenLDAP使用的数据库:bdb

。允许LDAPv2的客户端进行连接

。OpenLDAP数据库路径:/var/lib/ldap

1.复制模板文件

-->cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
2.设置LDAP管理员密码

-->slappasswd -h {MD5}

   New password: 
   Re-enter new password: 
   {MD5}b+K12rHkQG1FUDqjecAJyw== 

3.编辑/etc/openldap/slapd.conf文件

-->vim /etc/openldap/slapd.conf

atabase monitor
access to *

    by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
    by dn.exact="cn=Manager,dc=sh,dc=com" read   #修改此行dc=sh
    by * none

database definitions

database bdb
suffix "dc=sh,dc=com" #修改此行dc=sh,dc=com
checkpoint 1024 15
rootdn "cn=Manager,dc=sh,dc=com" #修改此行cn=Manager,dc=sh,dc=com
rootpw {MD5}b+K12rHkQG1FUDqjecAJyw== #这个密码为第2步生成的密码

其它配置默认.

4.复制DB_CONFIG文件

使用以下命令复制/usr/share/openldap-servers/DB_CONFIG.example文件为/var/lib/ldap/DB_CONFIG

-->cp /usr/share/openldap-servers/DB_CONFIG.example  /var/lib/ldap/DB_CONFIG

5.设置/var/lib/ldap目录所有者

使用以下命令递归设置/var/lib/ldap目录用户所有者和组群所有者为ldap

-->chown -R ldap.ldap /var/lib/ldap

6.删除/etc/openldap/slapd.d目录内的所有内容

  否则不能完成LDAP服务的数据添加和数据查找

-->rm -rf /etc/openldap/slapd.d/*
7.启动slapd服务

-->servuce skaod start

ls: 无法访问/etc/openldap/slapd.d//cn=config/olcDatabase*.ldif: 没有那个文件或目录

8.查看slapd进程

-->netstat -alpo|grep slapd

tcp 0 0 :ldap :* LISTEN 2431/slapd off (0.00/0/0)
tcp 0 0 :ldap :* LISTEN 2431/slapd off (0.00/0/0)
unix 2 [ ACC ] STREAM LISTENING 31051 2431/slapd /var/run/ldapi
unix 2 [ ] DGRAM 31045 2431/slapd

9.测试OpenLDAP配置文件

-->slapd -T test -f /etc/openldap/slapd.conf 

   config file testing succeeded     #代表配置文件正确

10.检测服务设置

如果对目录树的设置不正确,就算slapd服务正常启动,也不能完成OpenLDAP服务的数据添加和数据查找功能

-->ldapsearch -x -b "-s base '(objectclass=*)' namingContexts"

ldapsearch -x -b "-s base '(objectclass=*)' namingContexts"

extended LDIF

LDAPv3

base <-s base '(objectclass=*)' namingContexts> with scope subtree

filter: (objectclass=*)

requesting: ALL

search result

search: 2
result: 34 Invalid DN syntax
text: invalid DN

numResponses: 1

16.3.5 控制slapd服务

使用service和chkconfig命令可以控制slapd服务的状态,以及当OpenLDAP服务器启动时自动启动服务

1.启动slapd服务

-->service slapd start

2.查看slapd服务运行状态

-->service slapd status 

slapd (pid  2431) 正在运行...

3.停止slapd服务

-->service slapd stop

4.重启启动slapd服务

-->service slapd restart

5.开机自动启动slapd服务

-->chkconfig slapd on

-->chkconfig --list slapd

   slapd              0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭

16.3.6 检查OpenLDAP配置文件

使用slaptest命令可以检查OpenLDAP配置文件的一致性。

命令语法:slaptest [选项]

                  slaptest命令选项含义
-------------------------------------------------------------------------
    选项                              选项含义
-------------------------------------------------------------------------
 -n<数据量数量>          打开并测试配置文件中列出的指定数量的数据库
-------------------------------------------------------------------------
 -Q                      安静模式
-------------------------------------------------------------------------
 -d<调试级别>            使用指定的调试级别锁定义的调试信息
-------------------------------------------------------------------------
 -f<slapd.conf文件>      指定替代的slapd.conf文件
-------------------------------------------------------------------------
 -F<配置目录>            指定一个配置目录  
-------------------------------------------------------------------------
 -u                      启用dry-run模式
-------------------------------------------------------------------------
 -v                      启用详细模式
-------------------------------------------------------------------------

例:16.6 检查OpenLDAP配置文件/etc/openldap/slapd.conf文件

-->slaptest -f /etc/openldap/slapd.conf -v

   config file testing succeeded
目录
相关文章
|
4天前
|
存储 弹性计算 人工智能
2025年阿里云企业云服务器ECS选购与配置全攻略
本文介绍了阿里云服务器的核心配置选择方法论,涵盖算力需求分析、网络与存储设计、地域部署策略三大维度。针对不同业务场景,如初创企业官网和AI模型训练平台,提供了具体配置方案。同时,详细讲解了购买操作指南及长期运维优化建议,帮助用户快速实现业务上云并确保高效运行。访问阿里云官方资源聚合平台可获取更多最新产品动态和技术支持。
|
6天前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
1月前
|
弹性计算 Ubuntu Linux
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS自动化部署。支持Ubuntu 22.04/20.04、CentOS 7.7-7.9及Alibaba Cloud Linux 3.2104 LTS。前提条件:ECS实例需运行中且有公网。步骤:选择Docker扩展并安装,验证成功通过命令`docker -v`查看版本号。
297 79
|
8天前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
3天前
|
存储 人工智能 缓存
怎么根据自己的业务选择阿里云服务器配置大小?
本文指导如何根据业务需求精准选择阿里云服务器配置,涵盖个人轻量级至企业级、计算密集型等场景,推荐不同实例类型、存储与带宽方案,并提供成本优化策略,如包年包月节省成本、按需升级配置及选用性价比高的自研ARM架构实例。帮助用户在数字化转型中实现性能与成本的平衡。 注:以上配置与价格基于阿里云2025年官方数据,实际信息可能有所调整,请以官网实时页面为准。
|
3天前
|
人工智能 运维 监控
2025年阿里云服务器配置选择全攻略:CPU、内存、带宽与系统盘详解
在2025年,阿里云服务器以高性能、灵活扩展和稳定服务助力数字化转型,提供轻量应用服务器、通用型g8i实例等多样化配置,满足个人博客至企业级业务需求。针对不同场景(如计算密集型、内存密集型),推荐相应实例类型与带宽规划,强调成本优化策略,包括包年包月节省成本、ESSD云盘选择及地域部署建议。文中还提及安全设置、监控备份的重要性,并指出未来可关注第九代实例g9i支持的新技术。整体而言,阿里云致力于帮助用户实现性能与成本的最优平衡。 以上简介共计238个字符。
|
3天前
|
存储 人工智能 监控
新手小白购买阿里云服务器省钱策略、配置选型与注意事项
针对初次使用阿里云服务器的用户,本文提供系统化的指导方案以优化成本并满足业务需求。首先介绍配置选型,包括实例类型(通用型、计算型、内存型)与基础配置建议;其次阐述省钱策略,如企业认证、合理选择计费模式及批量购买;最后提醒注意事项,涵盖带宽存储规划、地域网络优化及安全管理。新手可通过明确需求、选择配置、优化购买和持续监控四步快速上手,实现高效稳定的云端部署。 注:推荐配置基于2025年阿里云产品体系,具体信息请参考官网。
|
5天前
|
存储 人工智能 并行计算
2025年阿里云弹性裸金属服务器架构解析与资源配置方案
🚀 核心特性与技术创新:提供100%物理机性能输出,支持NVIDIA A100/V100 GPU直通,无虚拟化层损耗。网络与存储优化,400万PPS吞吐量,ESSD云盘IOPS达100万,RDMA延迟<5μs。全球部署覆盖华北、华东、华南及海外节点,支持跨地域负载均衡。典型应用场景包括AI训练、科学计算等,支持分布式训练和并行计算框架。弹性裸金属服务器+OSS存储+高速网络综合部署,满足高性能计算需求。
|
2月前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
277 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
2月前
|
存储 弹性计算 安全
阿里云服务器配置选择策略参考及后期使用注意事项
对于初次购买阿里云服务器的一些新手用户来说,在云服务器配置选择和后期使用过程中有一些不清楚的地方,小编分享几点阿里云服务器配置选择策略,以及后期使用注意事项,购买过程中注意好下面这些事项,能让我们选对选好阿里云服务器,购买之后,在使用过程中,注意下面这些事项,能够让我们更好、更安全的使用阿里云服务器。下面是小编分享的一份详尽的阿里云服务器配置与使用指南,以供参考和借鉴。

热门文章

最新文章