我有一台家用服务器,上面运行着一些 Web 和数据库服务(nodejs、postgres、neo4j)。稍后我打算添加一个 vpn 服务器,这样我就可以从办公室访问这些服务了。据我所知,如果有人设法破解了 nodejs 和/或数据库,他可能会以超级用户权限运行 shell 命令。是否可以以某种方式防止这种情况发生,例如通过添加具有有限权限的用户,该用户可以通过启动来启动这些服务?我没有使用 Linux 的经验,但我会尽量让系统尽可能安全。任何帮助都非常感谢。
(我已经把docker当成沙箱了,但我不觉得它已经准备好投入生产了。例如PID 1 僵尸收割问题,我认为这应该由 docker 开发人员修复,而不是由社区通过一些 init 进程解决方法修复。另一个反对 docker 的论点是,服务器的资源非常有限,所以最好不要使用虚拟机。)
答案1
通常最佳做法是以非 root 用户身份运行服务。 在我的 Ubuntu 系统上,安装 neo4j 默认以用户名 neo4j 运行 neo4j。如果你从官方仓库安装,使用 apt-get,这应该这不是什么问题。这些用户不应该属于任何可以获得 root 权限的组,例如 wheel、suers 或 admin。它不应该能够使用 sudo。
但 ...
如果您必须(或选择)编写自己的启动脚本或执行不基于官方 repo 的安装,并且它以 root 身份运行,请创建一个用户并使用“sudo -u 命令”以不以 root 身份运行它。
创建用户的方法如下:http://www.debianadmin.com/users-and-groups-administration-in-linux.html