/etc/shadow 权限安全最佳实践(000 vs. 600 vs. 640)

tsu*_*oku 20 root permissions files

我们有一个自动基线检查,如果权限/etc/shadow未设置为 000 ,则会发出警报。

收到这些警报的员工已经开始质疑 000 的完整性,因为 root 可以随心所欲地读写(所有文件自动至少为 600 为 root)但 root 不能执行没有执行权限集的文件(没有root 的自动 700 文件权限)。

/etc/shadow在许多基线中将权限设置为 000,例如官​​方 Red Hat GitHub 存储库中的 Ansible playbook(用于 PCI DSS、CJIS、NIST、CCE)。

为什么/etc/shadow应该是 000 而不是例如看似功能相同的 600背后是否有起源故事?或者我关于 Linux 对 root 用户的限制/宽容程度的假设是错误的吗?

Ste*_*itt 35

将/etc/shadow权限设置为 000背后的想法是通过确保访问由DAC_OVERRIDE 功能控制来保护该文件不被守护程序访问,即使在以 root 身份运行时也是如此。自 Fedora 12 和 RHEL 6 起,基于 Fedora 的系统运行守护进程DAC_OVERRIDE,但不授予DAC_OVERRIDE管理员登录会话权限(因此管理员无法看到更改)。

有关详细信息,请参阅较低的流程能力。

这依赖于 600 和 000 权限在功能上不相同的事实:600 授予文件所有者读写权限,而 000 仅授予具有该DAC_OVERRIDE功能的进程的访问权限。传统上,以 root 身份运行总是会被授予DAC_OVERRIDE,但事实并非如此。

(SELinux 也可用于限制 root 的能力,但这不是这里涉及的内容。/etc/shadow确实有自己的 SELinux 上下文,提供额外的访问控制。)

  • 即使没有大写字母,UID 为 0 的进程仍然可以“chmod”文件,然后对其进行读/写,因此将权限设置为 000 并不能真正防止任意命令执行,对吗? (5认同)
  • @ilkkachu 是的,我认为任意命令执行不在该功能的范围内。这个想法是为了减少特权升级的可能性;如果它没有一个小工具来为您运行“chmod”,那么破坏功能减少的守护进程不会让您走得太远。(我还没有检查 SELinux 上下文的用途,这可能与 `chmod` 相关......) (2认同)