Debian 和其他 GNU/Linux 系统通常带有世界可读的日志/配置/目录。例如,在新安装时,这些文件是世界可读的:
/etc/passwd
/var/log/lastlog
- 正在运行的 cron 作业列表
尽管能够读取这些文件并不是直接的威胁,但在所有用户都无法信任的系统中,明智的做法是尽量减少系统可见性。
是否有 linux 风格/标准工具可以避免新用户可以获取有关他们正在使用的服务器的许多详细信息的那种情况?理想情况下,它们应该被限制在自己的目录中。
我过去已经设置了 chroot 监狱,但我正在寻找一种替代解决方案或你们中的一些人可能拥有的技巧。
谢谢!
在“修复”此问题之前,您可能需要更深入地挖掘,并确保您的更改得到充分考虑。您提到的文件中:
我碰巧知道 /etc/passwd 必须对任意数量的程序 (ls) 都是可读的,才能在标准配置中访问用户名信息。/etc/passwd 中的任何内容在任何现代机器上都不是秘密或特权,因为这就是影子文件的用途,或者秘密通过 LDAP、Kerberos 或其他类似的东西托管在网络上。
我不太确定其他两个。cron 以正在执行其作业的用户身份运行,因此它可能需要能够以任何可以运行 cron 的用户身份读取该文件。普通系统上的任何用户都可以运行 last,w 以查看最近和当前的登录(从 lastlog 和 wtmp 读取,正常),因此这些文件是可读的。您当然可以删除这些命令或用户对它们的访问权限,然后您可能想要更改文件的权限或完全删除它们,一旦您确定它们没有被使用。
确保 Debian 手册可能能够为您回答更多这些问题或更好地解释事情。虽然它没有被积极维护,但它仍然相当不错。其他发行版也有类似的资源。
/etc/passwd
应该是世界可读的;许多程序需要阅读它。这不是安全风险(除非您认为显示机器上存在哪些用户是安全风险);密码现在没有存储在其中,也从未以未加密的方式存储。/var/log/lastlog
- 如果这是世界可读的,这意味着人们可以查看机器上是否存在管理员需要查看的问题,而无需先纠缠管理员。正在运行的 cron 作业列表 -
ps
我猜这是由 显示的?如果您担心用户看到其他人在同一台机器上所做的事情,那么您就有问题了。Unix 和 Linux 通常在机器上的用户之间有一点信任的情况下工作得最好。您可以通过相当普遍的公共读取访问安全地运行;没有它就很难运行。如果你想运行一个安全的系统,可以考虑SELinux。我不确定它是否处理这些特定问题,但在所有 Linux 系统中,SELinux 或其衍生产品之一最有可能做到这一点。