在 LAN 中针对 AD 验证 DMZ 的最佳实践

在 LAN 中针对 AD 验证 DMZ 的最佳实践

我们在 DMZ 中有几个面向客户的服务器,这些服务器也具有用户帐户,所有帐户都在影子密码文件中。我正在尝试整合用户登录,并考虑让 LAN 用户根据 Active Directory 进行身份验证。需要身份验证的服务是 Apache、Proftpd 和 ssh。在咨询安全团队后,我设置了身份验证 DMZ,该 DMZ 具有 LDAPS 代理,该代理反过来联系 LAN 中的另一个 LDAPS 代理(代理 2),该代理通过 LDAP(作为 LDAP 绑定)将身份验证信息传递给 AD 控制器。只需要第二个 LDAP 代理,因为 AD 服务器拒绝与我们的安全 LDAP 实现进行 TLS 通信。这适用于使用适当模块的 Apache。在稍后阶段,我可能会尝试将客户帐户从服务器移动到 LDAP 代理,这样它们就不会分散在服务器中。

对于 SSH,我将 proxy2 加入了 Windows 域,以便用户可以使用他们的 Windows 凭据登录。然后我创建了 ssh 密钥并使用 ssh-copy 将它们复制到 DMZ 服务器,以便在用户通过身份验证后启用无密码登录。

这是实现此类 SSO 的好方法吗?我是否遗漏了任何安全问题,或者是否有更好的方法来实现我的目标?

答案1

如果你使用 PAM 作为身份验证堆栈,则可以使用pam_krb5提供Kerberos 身份验证为您的服务提供 Kerberos。Kerberos 的设计初衷是应对恶劣环境,处理代理身份验证,并且已经是 AD 规范的一部分。既然您可以让 Kerberos 为您完成繁重的工作,并继续生活,为什么还要费力使用 LDAP?是的,您必须阅读一些资料,是的,这需要一些时间,但我已经使用 Kerb-to-AD 身份验证多年,并且发现当您使用 Active Directory 作为身份验证后端时,它是使 SSO 开箱即用的最简单、最快捷的方法。

你会遇到的主要问题是,微软决定对默认加密类型非常具体(他们基本上是自己制作的),因此你需要设置你的 Kerberos 客户端以获得正确的匹配加密类型,否则 AD 服务器将继续拒绝它。幸运的是,这是一个简单的过程,并且不需要对 krb5.conf 进行太多编辑。

现在,有一些链接供您考虑...

Microsoft 对 Kerberos 的看法

将 Kerberos 与 Active Directory 连接起来

通过 PAM 进行 ssh 和 Kerberos 身份验证

Apache 和 Kerberos

ProFTP 和 Kerberos

Microsoft 与 Kerberos 活动的 RFC(您确实不想阅读):

相关内容