背景故事:
我正在设置 MineCraft 服务器,并希望允许管理员通过 ssh 访问 MineCraft 服务器控制台和相应的 mc 服务器文件,但不能访问整个系统。minecraft 服务器提供的控制台仅供启动该过程的用户使用。此外,管理员需要终端访问一些基本的 cli 工具,例如 wget、cp、mv、rm 和文本编辑器。
计划:
- 我已经设置了 ssh 方面的内容,需要预共享密钥等等。
- 设置一个受限环境,所有用户活动都将被包含在内。
- 设置用户帐户。-
第一个用户帐户将是 minecraft 用户。minecraft 用户将在多用户屏幕会话并允许其他管理员附加到该目录。
- 后续用户应该拥有自己的 /home 目录以供正常使用。 - 为适当的文件设置 acl 以允许每个用户编辑 mc 服务器文件。
没有人会进行系统更新,也不会有人安装任何程序,所以我将是唯一拥有 sudo 的用户。
问题:
我不希望 ssh 用户访问整个系统。用户仍需要使用 wget 或 curl 来更新 mc 服务器文件。我没有设置 chroot 环境的经验,但找到了几个工具来帮助完成此过程。监狱工具似乎是最强大的,但它不在标准存储库中。
问题:
- chroot 是否是适合这种用例的工具,或者是否有更适合该工作的工具?
- 是否应该为每个用户提供一个 chroot 环境,或者为所有用户提供一个 chroot 环境?
- 我应该手动设置 chroot 吗,还是应该使用其中一个可用的工具?
- 系统更新如何影响 chroot 环境?
- 哪个 chroot 工具对新手最友好?哪个 chroot 工具最强大?
- 总体来说,虚拟机是否是更好的解决方案?
答案1
由于我不知道所有答案,因此我不会逐一回答,但我会给你以下几点建议:
- 摆脱 chroot 并不困难。摆脱 VM 则稍微困难一些。
- 由于虚拟机是一个完整的操作系统,因此它更易于设置和管理。
- chroot 占用的空间较小,因为它不一定是一个完整的操作系统。
- 无论是哪种情况,当您在主机上运行更新时,客户机环境都不会更新。您必须进入 chroot 或 VM 并手动进行更新。
- VM 有一个功能,对你来说可能是好事也可能是坏事:你通常必须为其配置固定数量的内存。Minecraft 可能非常耗内存,因此使用 VM 可能会耗尽内存。另一方面,VM 可以很容易地对其可使用的资源进行硬性限制。
- VM 和 chroot 都不会对用户通过网络执行的操作设置任何内在限制。只有防火墙可以做到这一点。
答案2
使用 chroot jail 在大多数情况下是一种虚假的安全感。它让诚实的用户保持诚实。如果您不信任用户登录机器,您应该给他们另一台机器,即 VM。
为了网络安全,请将 Minecraft 机器连接到防火墙上具有严格规则的不同区域。如果 Minecraft 在防火墙机器上运行,唯一安全的解决方案是使用在该机器上运行的虚拟机。