Apache 中远程 LDAP 服务器的密码处理

Apache 中远程 LDAP 服务器的密码处理

我有一台 Apache 服务器,其中有一个带有受保护目录的网站。受基本身份验证保护,可防止远程 LDAP 服务器(不在同一台机器上)。

<Location  "/mywebapp/myprotected">
AuthzLDAPAuthoritative on
AuthType basic
AuthName "Enter your credentials"
AuthBasicProvider ldap
AuthLDAPURL "ldap://ldap.differentserver.org:3268/dc=company,dc=org?sAMAccountName?sub?(&(objectCategory=*)(objectClass=user))"
Require valid-user
AuthLDAPBindDN 'cn="Adminaccount,OU=Service IDs,OU=Application IDs,OU=Support,OU=Administration,dc=company,dc=org'
AuthLDAPBindPassword adminpassword
</Location>

该装置目前正在运行。所有连接都是纯文本。

我不明白的是,当 apache 服务器与 ldap.differentserver.org 交互时,为什么我在 wireshark 中看不到我的密码。当我在通往 Web 服务器的途中在弹出对话框中输入密码时,我可以看到我的密码,但从 Web 服务器到 ldap 服务器时看不到。我确实看到了 AuthLDAPBindPassword。

在 wireshark 中,我看到的唯一协议是 TCP、DNS、LDAP、HTML。我没有看到任何 TLS 协议消息,因此我假设 LDAP 服务器没有升级到 TLS。

我以纯文本形式看到了有关我的用户名的 LDAP 搜索消息,但我的密码似乎不在任何消息中。

系统工作 - 我只是想解释一下 LDAP 如何获取我的普通用户密码,因为我没有看到它。

答案1

我找到了。它编码为十六进制字节。

答案2

Ldap 将密码存储为哈希值。(即加密)。无需了解 mod_authz 和 ldap 之间交互的技术细节...Apache 会将您在登录窗口中提供的密码的哈希值与存储在 ldap 中的哈希值进行核对。

顺便说一句:您应该使用 apache 对 https 进行所有身份验证,原因正如您所观察到的:任何人都可以嗅探您的流量并查看您的纯文本密码。

相关内容