我目前正在使用 LDAP 设置。我想知道它是否不受中间人攻击或其他漏洞的影响?
使用 LDAP 是否安全,还是 LDAPS 是唯一安全的选项?
LDAP 本身对主动或被动攻击者并不安全:
- 数据“按原样”传播,无需加密,因此可以被被动攻击者窥探。
- 主动攻击者可以操纵流并注入他们自己的请求或修改对您的响应。
充其量,基本 LDAP 可能依赖于一些不会被攻击者轻易破坏的身份验证机制(通过SASL) :如果身份验证属于“显示密码”类型,那么被动窃听者可以获知密码,然后连接到带有您身份的服务器;稍微高级一点的协议,比如CRAM-MD5,可以避免这个特定的问题,但对于劫持您的连接或监视您的实际请求和响应的攻击者仍然无能为力。
所以,真的,如果您重视您的安全性,那么请使用 SSL(即“LDAPS”)。在许多方面,这就像 HTTP 与 HTTPS。
附带说明一下,基于 LDAP 构建的 Microsoft 的 Active Directory 协议可选地提供“签名和加密”功能,这似乎是嵌入在 LDAP 中的某种加密协议(即类似于 LDAPS,但顺序相反) ,这可能确保足够的安全性。不过,我还没有看到任何关于该协议的详细规范,所以在这种情况下我仍然推荐 LDAPS。
LDAP 协议默认情况下是不安全的,但该协议定义了一种操作,用于在现有 LDAP 上建立 TLS 会话(StartTLS 扩展操作)。或者,一些身份验证机制(通过 SASL)允许建立签名和加密。大多数最近基于 LDAP 的目录服务器都支持这些模式,并且通常具有配置参数以防止不安全的通信。
另一方面,只要协商正确的密码,LDAPS 默认是安全的。
创建一个证书并使用您在管理条目中安装的用户证书登录到您的 LDAP。
显然,TLS 会话只提高了对数据包嗅探的标准,而不是验证的质量,除非客户端证书验证发生在 TLS 中。
纯文本密码将是最糟糕的选择,从那里开始......SASL等。
如果您担心有人从 Internet 访问您的 LDAP 服务器,并且仍然希望允许访问“某些”属性,但不允许访问其他属性,您可以在 389 上设置代理来过滤发往服务器的请求。如果您为 LDAP 或 LDAPS 使用众所周知的默认端口,则用户可以更轻松地找到您的服务。
此外,考虑将 SRV 资源记录条目放入连接到 Internet 的 LDAP 服务器的 DNS 中,这样人们将拥有正确的地址和端口来访问您的代理服务器。