因此,在问了这个问题之后,我一直在根据以下问题试用 FreeIPA 作为中央身份验证源:管理对多个 Linux 系统的访问
我遇到的一个问题是,如果用户被授予本地 root 权限,他们就可以以 FreeIPA 目录中的任何用户身份登录。即使该用户无法通过 HBAC 规则访问该特定计算机。
示例场景:
- FreeIPA 客户端机器PC1。
- FreeIPA 中的两个用户:Bob 和 Alice。
- 爱丽丝不是通过 HBAC 规则允许访问 PC1。Bob 在 PC1 上拥有本地 root 权限。Bob 可以苏成为 PC1 上的 Alice。
我能找到的唯一信息是指在 /etc/pam.d/su 中注释掉此行:
auth sufficient pam_rootok.so
如果他尝试执行以下操作,它将要求本地 root 用户输入 Alice 的密码:su alice
但是,如果 Bob 拥有 root 访问权限,他可以轻松启用上述 PAM/su 行。FreeIPA 是否应该阻止 Alice 的帐户访问 PC1,无论是通过直接登录尝试还是本地 root苏-ing?如何防止本地根用户以任何 FreeIPA 用户身份登录?
答案1
我会将此归类为 Linux“客户端”系统与 FreeIPA 之间关系的“安全漏洞”。虽然不一定是“错误”,但它确实将本地 root 帐户的能力扩展到了本地 O/S 实例之外(它不应该这样做)。
反复声明这个问题完全与 UNIX 及其工作原理有关是不正确的。虽然“root”帐户能够创建任何帐户 ID 的本地化版本并对其进行“su”,但使用 FreeIPA 允许本地 root 帐户获取和访问本地实例外部的资源(尽管特别配置为“不”可用)。
这是 FreeIPA 实施中的一个问题,允许本地“root”帐户逃离其边界……
答案2
请检查Simo Sorce 的回答在相关的 Bugzilla 中,它很好地总结了 Linux 安全模型以及作为本地 root 可以做什么或不能做什么:
你好,Swartz,任何 Linux 机器上的 root 帐户都具有强大的功能,可以做任何它想做的事情,它甚至可以创建本地用户并毫无问题地模仿他们。
我建议您花点时间了解 Linux 上的安全模型是什么以及 root 帐户可以做什么(任何事情,包括修改正在运行的内核)。
无论如何,受感染的机器在 IPA 环境中所能做的事情,实际上不能比在任何其他环境中所能做的事情更多。
除非受感染的机器窃取了实际的活动凭证,否则它无法影响其他机器,除非您使用隐含信任任何客户端的不安全服务。
例如,在 NFS 情况下,root-squash 确实不是您可以信任任何安全性的东西,如果您担心对 NFS 服务的访问,则需要使用 sec=krb5 运行 NFS,其中每个用户访问都通过 kerberos 凭据进行身份验证。
如果您对限制用户(包括 root)可以执行的操作的方法感兴趣,我建议您阅读有关 SELinux 和功能以及如何限制各种用户的信息。
我将把它作为 NOTABUG 关闭,因为在报告中您所描述的内容没有任何未解释的内容,这些都是已知的内容。
答案3
好的,如果您的用户是该机器上的本地“root”,他可以在该机器上执行任何操作。阻止“su -”实际上不会阻止任何事情。“su -”胜过一切,它本质上是本地的。
为了完成某件事,您需要针对名为“su-”的服务设计 HBAC 规则。这里最重要的是,任何用户帐户都不应在机器上拥有本地根权限。
希望这可以帮助。
答案4
您必须将其/etc/pam.d/su
放入/etc/pam.d/runuser
:
auth required pam_localuser.so