我们在 DMZ 中很少有面向客户的服务器也有用户帐户,所有帐户都在影子密码文件中。我正在尝试整合用户登录并考虑让 LAN 用户针对 Active Directory 进行身份验证。需要身份验证的服务是 Apache、Proftpd 和 ssh。在咨询安全团队后,我设置了具有 LDAPS 代理的身份验证 DMZ,该代理依次联系 LAN 中的另一个 LDAPS 代理(proxy2),这个代理通过 LDAP(作为 LDAP 绑定)将身份验证信息传递给 AD 控制器。仅需要第二个 LDAP 代理,因为 AD 服务器拒绝使用我们的安全 LDAP 实现使用 TLS。这适用于使用适当模块的 Apache。在稍后阶段,我可能会尝试将客户帐户从服务器移动到 LDAP 代理,这样它们就不会分散在服务器周围。
对于 SSH,我将 proxy2 加入 Windows 域,以便用户可以使用他们的 Windows 凭据登录。然后我创建 ssh 密钥并使用 ssh-copy 将它们复制到 DMZ 服务器,以便在用户通过身份验证后启用无密码登录。
这是实现这种 SSO 的好方法吗?我是否错过了这里的任何安全问题,或者是否有更好的方法来实现我的目标?
如果您将 PAM 用于身份验证堆栈,则可以使用pam_krb5为您的服务提供kerberos 身份验证。Kerberos 开箱即用地设计用于处理敌对环境、处理代理身份验证,并且已经成为 AD 规范的一部分。当您可以让 Kerberos 为您完成繁重的工作并继续生活时,为什么还要与 LDAP 抗争呢?是的,您必须阅读,是的,这需要一些时间,但我已经使用 Kerb-to-AD 身份验证多年,并发现它是获得 SSO 的最简单、最快捷的方式当您将 Active Directory 作为身份验证后端时,开箱即用。
您将遇到的主要问题是 Microsoft 决定对默认加密类型非常具体(他们基本上自己制作),因此您需要设置您的 Kerberos 客户端以具有正确匹配的加密类型,或者AD 服务器将继续拒绝它。谢天谢地,这是一个简单的过程,不需要对 krb5.conf 进行多次编辑。
现在,一些链接供您考虑...
微软对 Kerberos 的看法
网格化 Kerberos 和 Active Directory
通过 PAM 进行 ssh 和 Kerberos 身份验证
Apache 和 Kerberos
ProFTP 和 Kerberos
Microsoft 的 Kerberos 活动 RFC(您真的不想阅读):