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