为了增加我正在进行的讨论的分量,我试图找到具体的例子来说明为什么从安全的角度来看,让 /root 目录可读是不好的。
我在网上发现了很多例子,人们重复这样的口头禅:给/root 755 权限确实不好,但没有进一步的证据。
如果是这种情况,有人可以提供一个系统安全可能受到损害的场景吗?越少做作越好 - 例如,如果 /root 有 755 个权限,新安装的 Centos 系统会受到什么影响?
编辑-感谢您的回复,但到目前为止还没有具体的例子。换句话说,您如何利用 /root 可见的事实来危害系统?是否有任何正在安装的程序并假设不是每个人都可以访问 /root 的示例?
编辑2 - 我认为到目前为止的共识是,这不是一个很大的安全风险,除了有人不检查权限并使用该目录,就好像它是root私有的一样。
答案1
这与防止其他用户读取任何其他用户的主目录的建议本质上没有什么不同。
如果默认设置是所有人都可读的,那么当您保存打算保密的新文件时,将会有一个机会之窗。总是有可能有人先于你复制它chmod go-r
。
答案2
从根本上来说,我认为这取决于核心开发人员的选择,仅此而已。为什么?因为默认情况下,.net 中几乎没有任何东西对任何人有任何价值/root
。任何人都不应该以 root 用户身份登录来处理一般事务。
例如,在 FreeBSD 上每个人都可以阅读/root
./root
由于安全原因无法读取其中的某些文件,但您仍然可以“看到”这些文件在那里ls
(只是无法读取它们)。例如,.history
已设置,-rw-------
但.login
是-rw-r--r--
。
FreeBSD 的安全方法与 Linux 略有不同。从历史上看,FreeBSD 一直用于服务器,虽然它可以作为桌面运行,但作为服务器确实更好(默认情况下)。
就我个人而言,我认为这种设置没有任何问题(/root
可以阅读)。
FreeBSD/root
上除了配置之外几乎什么都没有。邮件应转发给真实用户。任何人都不应该以 root 用户身份登录。该帐户只能用于安装和配置软件以及维护任务。我认为,在 FreeBSD 上,除了一些安全敏感文件(例如.history
)之外,没有什么可以隐藏的。/root
有关此内容的更多阅读,请尝试FreeBSD 手册中有关安全的部分。我没有看到他们选择/root
在快速扫描中可读的任何内容,但那里有很多信息。
答案3
也许粗心的管理员会搜索容易破解的密码,并将输出留在周围(这可能不是正确的调用,但您明白了):
# john-the-ripper /etc/shadow > ~/cracked-passwords.txt
答案4
如果~root
可写,任何用户都可以将其 SSH 密钥添加到~root/.ssh/authorized_keys
,然后只需通过 即可获得 root 访问权限ssh root@some-host
。
如果~root
“仅”可读,您仍然可以访问root
用户的.bash_history
文件,其中可能包含在命令行中输入的密码或其他凭据。或者意外地输入或粘贴到命令提示符中。
当然,您不应该在命令行上传递安全数据,但该警告通常被视为低风险,因为它很容易在飞行中捕获它,并且其他用户无论如何都不应该能够读取您的环境变量。如果您有权访问 的root
文件.bash_history
,您就可以访问root
可能以这种方式输入的任何敏感数据(无论是否意外)。
当然,这些问题有缓解措施,例如不允许root
登录 SSH,即使使用密钥身份验证也是如此。或者禁用 shell 历史记录。或者勤奋地清理它。但这些都是缓解措施;它们是安全洋葱中的层。
0700~root
是安全洋葱的另一层。如果你不想哭,就不要再剥洋葱了。