神话还是现实:SELinux 可以限制 root 用户?

M.S*_*sti 22 security selinux hardening access-control

我在某处读到或听说过(可能在LinuxCBT 的 SELinux 课程中;但我不确定)有在线 Linux 服务器,还提供了 root 用户的密码。Linux 服务器采用 SELinux 规则加固,每个人都可以使用 root 用户登录,但不会对操作系统造成任何损害。

这对我来说似乎是一个神话,但我想确定:是否有可能强化 Linux 机器(可能使用 SELinux),这样即使是 root 用户也无法对其进行特定的恶意活动?(例如:删除系统文件、清除日志文件、停止关键服务等)

这样的 Linux 机器将是构建蜜罐的一个很好的起点。

编辑: 基于一个答案(现已删除)和一点谷歌搜索,我至少得到了两个指向这种强化 Linux 服务器的链接。不幸的是,两台服务器都停机了。为了记录,我将在这里复制粘贴描述:

1) 来自http://www.coker.com.au/selinux/play.html

SE Linux 机器上的免费 root 访问权限!

要以root身份访问我的 Debian 游戏机 ssh 到play.coker.com.au,密码是...

请注意,如果您要成功运行此类机器,则需要很多技能。如果您要问是否应该运行一个,那么答案是“不”。

这样做的目的是证明 SE Linux 可以在没有任何 Unix 权限的情况下提供所有必要的安全性(但仍然建议您对真实服务器也使用 Unix 权限)。它还让您有机会登录到 SE 机器并查看它是什么样的。

当您登录 SE Linux 播放机时,请确保在登录前使用-x选项禁用 X11 转发或在 /etc/ssh/ssh_config 文件中设置ForwardX11 no。还要确保在登录之前使用 -a 选项禁用 ssh 代理转发或在 /etc/ssh/ssh_config 文件中设置ForwardAgent no。如果您没有正确禁用这些设置,那么登录游戏机将使您面临通过 SSH 客户端受到攻击的风险。

这是讨论这样的一个IRC频道,它是#selinuxirc.freenode.net

这是一个快速常见问题解答

2) 来自http://www.osnews.com/comments/3731

Hardened Gentoo的目的是使 Gentoo 可用于高安全性、高稳定性的生产服务器环境。这个项目不是独立于 Gentoo 的独立项目;它旨在成为一个由 Gentoo 开发人员组成的团队,专注于为 Gentoo 提供具有强大安全性和稳定性的解决方案。本机为 Hardened Gentoo 的 SELinux演示机。它的主要用途是测试和审核 SELinux 集成和策略。

Whi*_*olf 18

现实:是的,SELinux 可以限制 root 用户。

这是可能的,因为 SELinux 实际上并不关心当前的 Unix 用户:它所看到的只是一个称为上下文的补充元数据(其中包括字段),它让 SELinux 决定请求的操作是否可以被授权或不是。

通常认为是 root 用户的东西会在 SELinux 中被映射为运行unconfined_tsysadm_tSELinux 域的 root Unix 用户。它是经典的全能全能root用户。

然而,人们可以完美地设置他的系统来生成一个运行受限用户user_tSELinux 域的 root shell(我的意思是 root Unix 用户 shell)。根据 SELinux 政策,这样的 shell 与任何其他受限用户 shell 没有什么不同,并且在系统上没有特殊权限,从而有效地限制了 root 用户。

从实验的角度来看,做这样的事情字面上是没有用的,但类似的做法在现实世界中找到了自己的方式。一个典型的例子是数据库管理员需要能够停止/启动数据库守护进程、编辑配置文件等。如果没有 SELinux,所有这些操作都需要用户升级到 root 权限(即使它通常是针对单个用户的)sudo例如,通过工具使用命令行,但即使这样也可能容易泄漏)。

多亏了 SELinux,我们可以给这个用户一个真正的 root shell,但它不是运行unconfined_tsysadm_t域,而是运行dbadm_t域。这意味着他将拥有比受限用户更多的权限,但这些新权限将仅限于管理数据库服务器所需的权限:该用户将无法篡改其他服务、文件或运行其他管理命令。严格要求做他的工作。

同样,Web 服务器和其他服务管理员也可以在同一系统上并行运行其他 root shell,每个人都会看到他们当前的 Unix 用户是root,但是由于 SELinux,每个人都将拥有有效的不同权限,仅限于什么是为了自己的目的所需要的


str*_*gee 1

是的,这是可能的。但不是很有用。

理论上,您可以禁止 root 用户运行可用于恶意目的的二进制文件,通过 SELinux 等强制执行策略。然而,这带来了一个问题,即即使 root 用户最初被禁止执行某些操作,他或她也只能使用其他方法来更改或删除 SELinux 策略。由于这个问题,您实际上必须禁止 root 用户执行任何操作,这使得它不是很有用。


归档时间:

查看次数:

9763 次

最近记录:

10 年,3 月 前