普通用戶會損害我的伺服器嗎?

普通用戶會損害我的伺服器嗎?

我有一個LEMP 堆疊 (Ubuntu 20.04)這是我完美配置和優化的。它沒有任何網路面板。我最初只將它用於我自己的網站。後來我開始將一些客戶端網站加入伺服器。

由於他們請求 SFTP 存取來管理網站文件,我決定確保他們無法存取/編輯伺服器上的敏感文件。

我為盡可能隔離用途所做的更改清單:

  1. 創建了一個 sudo 用戶(讓我們調用伺服器管理員)對於我自己來說,根訪問權限已被禁用
  2. chmod 700 /home/serveradmin(沒有-R
  3. 為我的客戶建立普通使用者帳戶(例如 client1、client2...),然後將它們全部新增至伺服器管理員團體
  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. 為我的客戶建立普通使用者帳戶(例如 client1、client2...),然後將它們全部新增至 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運行時和套接字偵聽選項。

相關內容