使用 SSSD 将组策略应用于 Linux

正如我在上一篇关于使用 SSSD 将 Linux 连接到 Active Directory 的文章中提到的,您可以通过系统安全服务守护程序 (SSSD) 和可插入身份验证模块 (PAM) 配置 Linux 域绑定系统,以遵守组策略设置。本文将扩展此功能。

Evi Vanoost是罗切斯特大学研究办公室的IT基础设施总监。他在 IT 领域拥有超过 20 年的经验。Evi和他的团队支持数千个系统。

先决条件

此配置的先决条件是有效的 Active Directory 域设置,您可以在我上一篇文章中找到该设置。然后,在 /etc/sssd/sssd.conf 中,找到ad_gpo_access_control行并将其设置为 allowive

ad_gpo_access_control = 宽容

每次修改配置后,应重新启动 SSSD 并监视错误。这可以通过以下命令完成:

系统CTL重新启动SSDD
系统CTL状态SSSD
journalctl -u ssd(英语:journalctl -u sssd)

此设置(宽松)的结果与我们在上一篇文章中使用的 adgpo访问控制=禁用的结果相同,并且不应用任何组策略。但是,现在每次 GPO 设置拒绝登录时,都会发送系统日志。这将允许您在应用新策略之前审核和测试您的环境。

系统日志的位置取决于您的 Linux 发行版。(请记住,该位置可能已被管理员修改,例如,如果您要将系统日志发送到中央服务器)。对于标准的现代 Ubuntu 系统,使用 /var/log/auth.log。您可能会在这些关键字及其周围查找日志:pam_ssssssd_be

下面的屏幕截图显示了系统处于宽松模式时可能收到的消息示例。

身份验证日志示例

身份验证日志示例

Linux 使用 PAM(可插拔身份验证模块)进行身份验证。每个服务都可以使用自己的PAM配置(例如,SSH使用/etc/pam.d/sshd,XRDP使用/etc/pam.d/xrdp-sesman),或者可能默认为内置配置(例如登录)。您可以通过列出 /etc/pam.d 的内容来查看 PAM 配置列表。

列出 PAM 目录

列出 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_networkFTP, 桑巴舞
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 命令。例如:

sss_cache -u jsmith # 刷新特定用户缓存
sss_cache -g # 刷新特定组缓存
sss_cache -U # 刷新所有用户缓存
sss_cache -G # 刷新所有组缓存
sss_cache -E # 刷新所有内容

映射其他软件

如果已安装其他软件(如 XRDP 或 RStudio 服务器),则默认情况下它们不会链接到 GPO 控件;随后,通过其 PAM 模块进行的所有登录都将被拒绝(根据ad_gpo_map_default_right控件)。由于它们是交互式桌面服务,因此你可能希望它们由远程桌面服务控件控制。你可以在 /etc/sssd/sssd.conf 中指定:

ad_gpo_map_remote_interactive = +XRDP-sesman, +rstudio

请注意加号,这意味着应将这些服务添加到该映射中。减号将从映射中删除服务,即使默认情况下已定义该服务也是如此。

此方法可用于重新映射服务,例如,如果您的组织为自动 SSH-FTP 服务运行 SSH,因此您希望使用定义从网络访问此计算机的 GPO:

ad_gpo_map_remote_interactive = -sshd
ad_gpo_map_network = +sshd

ad gpo 映射允许和 adgpo映射拒绝选项列表服务,无论组策略如何,这些服务将始终分别被允许或拒绝。例如,Windows 和 Windows Server 当前没有适用于 Microsoft 提供的 Windows 上的 OpenSSH 的组策略设置。Linux 上的等价物是这样的:

ad_gpo_map_permit = +sshd

有一些默认值取决于您的发行版和已安装的软件包(例如,您的桌面管理器,如 gdm 或 lightdm,可能使用不同的 PAM 服务)。如果某些意外不起作用,请检查服务的日志文件和身份验证日志,并检查它是否使用 PAM 进行身份验证。然后,根据需要调整映射。

默认情况下,ad_gpo_default_right控件设置为拒绝。如果任何未映射的 PAM 服务请求访问,可以将其设置为交互式remote_interactive网络批处理或服务,以控制应用哪个 GPO;或者,将其设置为允许将始终允许登录。这可能会留下一个安全漏洞,即您意外地提供对服务的访问,仅仅是因为它未定义。所以要小心!例如,若要将所有未定义的服务视为本地登录名,请使用此设置:

ad_gpo_default_right = 交互式

完成后,测试并检查日志以确保您不允许/拒绝您不希望的任何人或任何事物。

拥有适用于服务器的正确记录的组策略设置是对安全性充满信心的关键。对配置感到满意后,更改 SSSD 配置中的ad_gpo_access_control

ad_gpo_access_control = 强制执行

随后,重新启动 SSSD 并查看日志。

订阅 4sysops 时事通讯!

系统CTL重新启动SSDD
系统CTL状态SSSD
journalctl -u ssd(英语:journalctl -u sssd)

结论

本文介绍了如何使用 SSSD 和 PAM 将组策略应用于 Linux 系统。但是,如果您的应用程序(例如 Web 服务)不使用 PAM 或 SSSD,而是使用自己的 Active Directory 或 LDAP 身份验证,则这些控件将不适用。此外,服务可能具有自己的权限机制,可以在应用 GPO 之前或之后允许或拒绝登录。全面测试您的应用程序,以确保您的配置按预期实现。

+1
系列文章 将 Linux 连接到 Active Directory
  1. 使用 SSSD 将 Linux 连接到 Active Directory
  2. 使用 SSSD 将组策略应用于 Linux
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值