0

我们有一个基于 Java 的应用程序,它通信/依赖 PAM 来满足其身份验证需求。用户可以来自本地(影子)或外部(目录服务器)。Java 应用程序以非 root 用户身份运行(例如 juser)

在 LDAP 配置中,绑定密码以纯文本形式存储在 /etc/ldap.conf 中。为了克服这个安全漏洞,我用 rootbinddn 替换了 binddn,并将 bindpassword 移动到 ldap.secret。以下是 LDAP 配置文件的权限和所有权:

640 根 jusergroup /etc/ldap.conf

600 根根 /etc/ldap.secret

用户可以通过SSH无缝访问系统(在我将binddn修改为rootbinddn之后),而对应用程序的身份验证失败。

有趣的是,当我将应用程序配置为 openldap 服务器时,所有用户都可以成功通过 SSH 和 Java 应用程序进行身份验证。但是当配置为 MS 活动目录服务器时,SSH 身份验证成功,而对 Java 应用程序的身份验证失败(因为进程所有者是 juser)。现在我以 root 用户身份重新启动 java 应用程序,并且所有身份验证(SSH 和 Java 应用程序)都成功。

以下是来自 Active Directory 服务器的异常事件日志:

内部事件:LDAP 服务器返回错误。

附加数据错误值:00000000:LdapErr:DSID-0C090627,注释:为了执行此操作,必须在连接上完成成功 > 绑定。,数据 0,vece

有关详细信息,请参阅 > http://go.microsoft.com/fwlink/events.asp上的帮助和支持中心。

  1. 为什么 openldap 和 MS Active Directory 之间会有不同的绑定行为?
  2. 在 LDAP 绑定期间,发出请求的用户是否传递到目录服务器?
  3. 是否有一种机制可以告诉 PAM 在身份验证验证期间使用 root 凭据,以便我仍然可以将 java 应用程序作为 juser 运行?

谢谢

4

0 回答 0