普通用户会损害我的服务器吗?

普通用户会损害我的服务器吗?

我有一个LEMP 堆栈(Ubuntu 20.04)它由我完美配置和优化。它没有任何网页面板。我最初只将它用于我自己的网站。后来我开始将一些客户网站添加到服务器中。

由于他们请求 SFTP 访问权限来管理网站文件,我决定确保他们无法访问/编辑服务器上的敏感文件。

为了尽可能隔离用途,我做了以下更改:

  1. 创建了一个 sudo 用户(我们称之为服务器管理员)并且 root 访问权限已被禁用
  2. chmod 700 /home/serveradmin(没有-R
  3. 为我的客户创建普通用户帐户(例如客户端 1、客户端 2......),然后将其全部添加到服务器管理员团体
  4. 将 nginx 用户设置为服务器管理员
  5. 为每个客户端创建不同的 php-fpm 池。(例如所有者:client1 组:serveradmin,听众也一样)
  6. 使其他人无法访问敏感的网站文件(例如,wp-config.php 文件包含数据库凭据)
  7. chmod -R 700用于网站 SSL 文件夹。
  8. 当然,为每个客户端创建了不同的 mysql 用户和数据库。

现在,我 100% 确定没有人可以访问其他 /home/clientX 文件夹。他们至少不能编辑或删除任何文件。但是,我不是经验丰富的 Linux 用户,也不是托管服务提供商。事实是,这些客户端是否会通过访问和编辑 /home 文件夹之外的任何系统文件来损坏/损害我的服务器?(例如,/etc、/var/run 路径可能很危险,我猜)。

我没有更改默认系统文件的文件夹/文件权限。

那么,我的服务器不安全吗?是否仍需要进行更改以提高安全性,还是我应该完全避免向他们提供 SFTP 访问权限?

亲切的问候。

答案1

至少第 3 点和第 4 点是无效/不安全的。

  1. 为我的客户创建普通用户帐户(例如客户端 1、客户端 2......),然后将其全部添加到 serveradmin 组

普通用户帐户与服务器管理员有什么关系?绝对没有关系,甚至命名也是如此。让每个站点用户都属于该serveradmin组有什么意义?

  1. 将 nginx 用户设置为 serveradmin

同样。NGINX 应该在其自己的用户,通常为nginx(CentOS/RHEL 发行版)或www-data(基于 Debian 的系统)。它与服务器管理无关。

我无法详细说明当前设置如何不安全,因为这需要更多细节,例如 PHP 的套接字所有权、文件位置等。

真正安全的设置假设尽可能多地将用户分开,这适用于服务。因此,首先为 NGINX 分配(或使用包提供的用户)单独的用户,然后执行PHP-FPM 的安全权限。NGINX 的用户应该位于每个站点的用户组中,而不是相反:

usermod -a -G client1 nginx
usermod -a -G client2 nginx
...

现在nginx用户属于client1client2组。为什么呢?因为nginx用户确实必须能够读取每个网站文件。

另一方面,PHP-FPM 池可以很好地绑定到client1:client1运行时和套接字监听选项。

相关内容