跳到主要内容

1. 引言 (Introduction)

轻量目录访问协议 (LDAP) [RFC4510] 是一个功能强大的目录访问协议. 它提供了搜索, 检索和操纵目录内容的手段, 以及访问一组丰富安全功能的方式.

至关重要的是, 这些安全功能必须在互联网上所有 LDAP 客户端和服务器之间可互操作; 因此, 必须存在一个所有声称符合 LDAP 的实现都共有的最小安全功能子集.

对 LDAP 目录服务的基本威胁包括 (但不限于):

(1) 通过数据检索操作对目录数据的未授权访问.

(2) 通过监视他人的访问, 对目录数据的未授权访问.

(3) 通过监视他人的访问, 对可重用客户端认证信息的未授权访问.

(4) 对目录数据的未授权修改.

(5) 对配置信息的未授权修改.

(6) 拒绝服务: 以意图拒绝向他人提供服务的方式使用资源 (通常是超量使用).

(7) 欺骗 (Spoofing): 通过修改传输中的数据或错误引导客户端的传输连接, 诱使用户或客户端相信信息来自目录, 而实际上并非如此. 诱使用户或客户端把特权信息发送给看似目录服务器实则不然的敌对实体. 诱使目录服务器相信信息来自某个特定客户端, 而实际上来自敌对实体.

(8) 劫持 (Hijacking): 攻击者夺取一个已建立协议会话的控制权.

威胁 (1), (4), (5), (6), (7) 和 (8) 是主动攻击. 威胁 (2) 和 (3) 是被动攻击.

威胁 (1), (4), (5) 和 (6) 来自恶意的客户端. 威胁 (2), (3), (7) 和 (8) 来自客户端与服务器之间路径上的恶意代理, 或伪装成服务器的恶意代理, 例如 IP 欺骗.

LDAP 提供以下安全机制:

(1) 通过 Bind 操作进行的认证. Bind 操作提供一种简单方法, 支持匿名, 未认证和名称/口令机制, 以及简单认证与安全层 (SASL) 方法, 后者支持各种各样的认证机制.

(2) 支持厂商特定访问控制设施的机制 (LDAP 不提供标准的访问控制设施).

(3) 通过传输层安全 (TLS) 或 SASL 机制中的安全层提供的数据完整性服务.

(4) 通过 TLS 或 SASL 机制中的安全层提供的数据保密性服务.

(5) 通过在服务器上配置的管理限制实现的服务器资源使用限制.

(6) 通过 TLS 协议或 SASL 机制实现的服务器认证.

LDAP 也可以通过 LDAP 协议之外的方式保护, 例如 IP 层安全 [RFC4301].

经验表明, 仅仅允许实现自行挑选要实现的安全机制, 并不是一种能带来互操作性的策略. 在缺乏强制要求的情况下, 会继续出现不支持服务器所支持的任何安全功能的客户端, 或者更糟, 只支持那些对大多数情况而言安全性不足的机制的客户端.

期望允许客户端使用多种机制进行认证, 包括身份以可辨识名称 [X.501][RFC4512], 字符串形式 [RFC4514] 表示的机制, 或不同系统中使用的机制 (例如简单用户名 [RFC4013]). 由于某些认证机制以明文形式传输凭证, 和/或不提供数据安全服务, 和/或易受被动攻击, 因此有必要通过确定一个必须实现的, 用于建立传输层安全服务的机制, 来确保安全的互操作性.

LDAP 中提供并在本文档中描述的这套安全机制, 旨在满足各种部署场景的安全需求, 同时仍在各种 LDAP 实现和部署之间提供高度的互操作性.

1.1 与其他文档的关系 (Relationship to Other Documents)​

本文档是 LDAP 技术规范 [RFC4510] 的一个完整组成部分.

本文档与 [RFC4510], [RFC4511] 和 [RFC4512] 一起, 完整地废弃了 RFC 2251. RFC 2251 的第 4.2.1 节 (部分) 和 4.2.2 节由本文档废弃. 附录 B.1 总结了本文档对 RFC 2251 所做的实质性变更.

本文档完整地废弃了 RFC 2829. 附录 B.2 总结了本文档对 RFC 2829 所做的实质性变更.

RFC 2830 的第 2 节和第 4 节由 [RFC4511] 废弃. RFC 2830 的其余部分由本文档废弃. 附录 B.3 总结了本文档对 RFC 2830 所做的实质性变更.

1.2 约定 (Conventions)​

本文档中的关键词 "MUST", "MUST NOT", "SHALL", "SHOULD", "SHOULD NOT", "MAY" 和 "OPTIONAL" 按 RFC 2119 [RFC2119] 所述进行解释.

术语 "用户" (user) 表示使用目录客户端访问目录的任何人类或应用实体. 目录客户端 (或客户端) 也称为目录用户代理 (DUA).

术语 "传输连接" (transport connection) 指用于承载协议交换的底层传输服务, 以及由这些服务建立的关联.

术语 "TLS 层" 指用于提供安全服务的 TLS 服务, 以及由这些服务建立的关联.

术语 "SASL 层" 指用于提供安全服务的 SASL 服务, 以及由这些服务建立的关联.

术语 "LDAP 消息层" 指用于提供目录服务的 LDAP 消息 (PDU) 服务, 以及由这些服务建立的关联.

术语 "LDAP 会话" 指这些服务的组合 (传输连接, TLS 层, SASL 层, LDAP 消息层) 及其关联.

一般而言, 本文档中安全术语的使用与 [RFC2828] 提供的定义一致. 此外, 本文档附录 A 给出了若干与安全, 认证和授权相关的术语与概念. 虽然这些术语和概念的形式化定义不在本文档的范围之内, 但理解它们是理解本文档大部分内容的前提. 鼓励不熟悉安全相关概念的读者在阅读本文档其余部分之前先审阅附录 A.