先决条件
此配置的先决条件是有效的 Active Directory 域设置,您可以在我上一篇文章中找到该设置。然后,在 /etc/sssd/sssd.conf 中,找到ad_gpo_access_control行并将其设置为 allowive。
每次修改配置后,应重新启动 SSSD 并监视错误。这可以通过以下命令完成:
此设置(宽松)的结果与我们在上一篇文章中使用的 adgpo访问控制=禁用的结果相同,并且不应用任何组策略。但是,现在每次 GPO 设置拒绝登录时,都会发送系统日志。这将允许您在应用新策略之前审核和测试您的环境。
系统日志的位置取决于您的 Linux 发行版。(请记住,该位置可能已被管理员修改,例如,如果您要将系统日志发送到中央服务器)。对于标准的现代 Ubuntu 系统,使用 /var/log/auth.log。您可能会在这些关键字及其周围查找日志:pam_sss和sssd_be。
下面的屏幕截图显示了系统处于宽松模式时可能收到的消息示例。
Linux 使用 PAM(可插拔身份验证模块)进行身份验证。每个服务都可以使用自己的PAM配置(例如,SSH使用/etc/pam.d/sshd,XRDP使用/etc/pam.d/xrdp-sesman),或者可能默认为内置配置(例如登录)。您可以通过列出 /etc/pam.d 的内容来查看 PAM 配置列表。
组策略对象映射
有关组策略设置的概述,请参阅Microsoft文档。下面是在 SSSD 中实现的控件和关联的配置键的表。
组策略设置 | SSSD 配置密钥 |
ad_gpo_map_network | |
允许本地登录 | ad_gpo_map_interactive |
允许通过远程桌面服务登录 | ad_gpo_map_remote_interactive |
作为批处理作业登录 | ad_gpo_map_batch |
作为服务登录 | ad_gpo_map_service |
请注意,如果特定计算机或用户帐户没有 GPO(组策略对象)、具有无法分析的 GPO,或者将 GPO 应用于 Windows 内置组(如管理员),则 Linux 中的默认设置将拒绝访问。可以更改标准行为,尽管这可能会允许意外访问系统。
根据 SSSD 文档,这些是映射到每个控件的标准服务:
SSSD 配置密钥 | 服务 |
ad_gpo_map_interactive | 登录, SU, SU-L, GDM-FINGERPRINT, GDM-PASSWORD, GDM-SMARTCARD, KDM |
ad_gpo_map_remote_interactive | 南德 |
ad_gpo_map_network | FTP, 桑巴舞 |
ad_gpo_map_batch | 克伦德 |
ad_gpo_map_service | <没有> |
ad_gpo_map_permit | 须藤,须藤一 |
ad_gpo_map_deny | <没有> |
ad_gpo_map_default_right | 否认 |
当服务(如桑巴)调用 PAM 时,它会使用关联的配置密钥来查找应为该服务应用哪个组策略设置(对于桑巴,默认值为ad_gpo_map_network即“从网络访问此计算机”)。
使用 SSSD 应用 GPO
与在注册表中定期应用组策略设置的Windows不同,Linux将从Active Directory动态查找和应用GPO。
这意味着 SSSD 不会更改 Linux 应用程序(如 sudo 或 ssh)的配置文件来应用 GPO。相反,它使用 PAM 来拦截和修改身份验证过程。
当用户尝试登录到 Linux 系统时,SSSD 首先检查是否存在适用于该用户和系统的 GPO。如果有,SSSD 将检索 GPO 设置并相应地配置 PAM 模块。
例如,GPO 可能指定仅允许特定组中的用户登录到系统。SSSD 将 PAM 模块配置为阻止该组外部用户的登录尝试。
SSSD 缓存
SSSD 有一个缓存,用于存储有关用户、组和其他对象的数据。缓存用于通过减少 SSSD 需要联系身份提供程序的次数来提高性能。
若要刷新 SSSD 缓存,可以使用 sss_cache 命令。例如:
映射其他软件
如果已安装其他软件(如 XRDP 或 RStudio 服务器),则默认情况下它们不会链接到 GPO 控件;随后,通过其 PAM 模块进行的所有登录都将被拒绝(根据ad_gpo_map_default_right控件)。由于它们是交互式桌面服务,因此你可能希望它们由远程桌面服务控件控制。你可以在 /etc/sssd/sssd.conf 中指定:
请注意加号,这意味着应将这些服务添加到该映射中。减号将从映射中删除服务,即使默认情况下已定义该服务也是如此。
此方法可用于重新映射服务,例如,如果您的组织为自动 SSH-FTP 服务运行 SSH,因此您希望使用定义从网络访问此计算机的 GPO:
ad gpo 映射允许和 adgpo映射拒绝选项列表服务,无论组策略如何,这些服务将始终分别被允许或拒绝。例如,Windows 和 Windows Server 当前没有适用于 Microsoft 提供的 Windows 上的 OpenSSH 的组策略设置。Linux 上的等价物是这样的:
有一些默认值取决于您的发行版和已安装的软件包(例如,您的桌面管理器,如 gdm 或 lightdm,可能使用不同的 PAM 服务)。如果某些意外不起作用,请检查服务的日志文件和身份验证日志,并检查它是否使用 PAM 进行身份验证。然后,根据需要调整映射。
默认情况下,ad_gpo_default_right控件设置为拒绝。如果任何未映射的 PAM 服务请求访问,可以将其设置为交互式、remote_interactive、网络、批处理或服务,以控制应用哪个 GPO;或者,将其设置为允许将始终允许登录。这可能会留下一个安全漏洞,即您意外地提供对服务的访问,仅仅是因为它未定义。所以要小心!例如,若要将所有未定义的服务视为本地登录名,请使用此设置:
完成后,测试并检查日志以确保您不允许/拒绝您不希望的任何人或任何事物。
拥有适用于服务器的正确记录的组策略设置是对安全性充满信心的关键。对配置感到满意后,更改 SSSD 配置中的ad_gpo_access_control。
随后,重新启动 SSSD 并查看日志。
订阅 4sysops 时事通讯!
结论
本文介绍了如何使用 SSSD 和 PAM 将组策略应用于 Linux 系统。但是,如果您的应用程序(例如 Web 服务)不使用 PAM 或 SSSD,而是使用自己的 Active Directory 或 LDAP 身份验证,则这些控件将不适用。此外,服务可能具有自己的权限机制,可以在应用 GPO 之前或之后允许或拒绝登录。全面测试您的应用程序,以确保您的配置按预期实现。