我在一家拥有各种系统(主要是 Windows 和 Ubuntu Linux)的大型研究机构(10k 用户)工作。我不是这种网络结构的专家,但我自己在家使用 Ubuntu 工作,也喜欢安装软件。我们确实有一个 sudo 安装通用 dep 包的白名单。但是,我们没有完全的 sudo 访问权限。Windows 用户在 Windows 上拥有完整的管理员帐户。我的管理员告诉我,我们不能在本地笔记本电脑上拥有完整的 sudo 访问权限,因为这样我还可以将用户切换到我的管理员帐户,并拥有网络范围的 root 访问权限。我想知道,如果没有解决方案可以让我在没有网络范围的 root 访问权限的情况下成为本地 root。我的管理员告诉我这是不可能的。
有谁知道这样的权限管理系统,它允许本地根但不允许网络范围的根?
提前致谢。
确实可能是这种情况,但这说明了一种基于信任的老式网络/身份验证设置,具有许多薄弱环节,例如:
su - admin_login
并将您自己的公钥添加到管理员的~/.ssh/authorized_keys
NOPASSWD
当管理员在他们的 sudo 策略或依赖(或另一个组)成员资格中设置了他们的帐户,wheel
并且不需要后续的其他身份验证/密码来成为 root 或执行其他特权操作时......如果上面描述了您网络中的问题/风险,那么您的 Linux/UNIX 仍然依赖于非常经典的安全信任模型。
任何称职的管理员早就应该停止这样做,但可能存在遗留问题和考虑......
当您的 Linux/UNIX 网络依赖于信任并且对资源的访问不受其他保护时,受信任设备的安全性就变得极为重要。一般来说,将安全性交到最终用户手中是不明智的。换句话说,您不会向最终用户授予完全 root 访问权限。
Windows Active Directory / 域安全不太依赖信任(它比 Unix 发展得晚,然后遗留的东西要少得多,并且可以从改进的洞察力中受益),而是使用基于 Kerberos 身份验证的非常强大的网络安全安全模型。
在这方面,终端设备的安全性不是一个问题,因为它们不是隐式受信任的,并且授予用户本地管理员权限带来的风险较小。
删除旧设置后,几乎任何系统都可以做到这一点。FreeIPA、sssd、与您的 Windows AD 域等集成等。
但这要求您的 Linux/UNIX 网络停止(仅)依赖于传统信任和基于 IP 地址/主机名的访问控制。例如,实施围绕本机 Kerberos 构建或与 AD 集成的许多适当/更强大的身份验证系统之一。
停止使用“信任”(IP 地址/主机名)作为唯一的安全控制,并启用对网络资源的正确身份验证。例如,从包含主目录的 NFS 共享开始,并将它们迁移到始终需要“正确”的身份验证方法,例如 Kerberos,或者切换到也支持客户端身份验证的 CIFS/SMB。
那么您的网络安全不再仅仅取决于受信任设备的安全,而是取决于用户保持其凭据的安全。
一旦你这样做了,你可以考虑授予像你这样的最终用户对他们的工作站更多的控制权。
此外:管理员可能还应该开始对他们的帐户应用更多的安全控制,例如不要在他们的集中管理的 sudo 策略中使用 NOPASSWD。
在 Ubuntu(和全球 UNIX)中,特殊的 root 用户是超级用户。他可以做任何事情,您不能禁止某些功能而允许其他功能。我们您是 root,我们可以做您想做的事情,例如切换到其他用户帐户、更改操作系统设置、获取网络流量等...
好的做法是不允许任何人以 root 身份登录(在 ubuntu 中,默认情况下禁用该帐户)并且您必须通过使用命令编辑来授予对提升命令的访问
/etc/sudoers
权限visudo
。在此文件中,您可以授予某些用户对某些命令的 root 访问权限,如手册的sudoers条目中所述(此处提供副本)。
因此,好的做法是禁止一切,并允许您授权的命令的一部分。我不知道其他解决方案,我很想知道是否有人以其他方式回答这个问题。