Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Apache + ProFTPD 虛擬主機安全架構:權限隔離與 WebShell 防禦實戰

編輯:關於伺服器

核心架構設計

  • FTP 層: 建立統一 hostuser 帳號,所有虛擬主機 FTP 映射至該帳號,家目錄鎖定於 htdocs/hosts,上傳檔案屬性為 hostuser:hostuser (644/755)。
  • Web 層: Apache 以 nobody(或專屬 apache)身分執行,讀取 hostuser 的腳本檔案。
  • 可寫目錄: uploads、cache 設為 777 並遞迴套用,並以 .htaccess: php_flag engine off 禁用腳本執行,防止 WebShell 執行。

權限衝突問題與解決方案

現象: Apache 建立的檔案/目錄屬主為 nobody (644/755),導致 FTP 使用者 hostuser 無法刪除 cache、uploads 內容。

方案一:PHP 程式碼層面修正權限

以 ADOdb 為例,修改兩處:

  1. adodb.inc.php 第 1681 行:if (!mkdir($dir, 0771))
  2. adodb-csvlib.inc.php 第 287 行:chmod($tmpname, 0644); → chmod($tmpname, 0666);

方案二:系統層面定期清理

建立排程腳本,定期將 cache、uploads 目錄權限重設為 777,或提供管理介面讓使用者自行清空。

進階防禦措施

措施說明
PHP safe_mode檢查腳本與目標檔案屬主一致性,但會阻擋 hostuser 刪除 nobody 建立的檔案,建議關閉。
open_basedir替代方案:php_admin_value open_basedir /docroot 限制各用戶僅能存取自身文檔根目錄。
程式碼審計確保所有 PHP 過濾 RCE 與 LFI 攻擊,防止讀取 config.php 或操作緩存目錄。
敏感資料隔離cache 目錄嚴禁存放密碼等敏感資訊。
expose_php = Off隱藏 HTTP 標頭中的 PHP 版本資訊,降低指纹識別風險。

總結

透過 FTP 與 Web 執行身分分離、可寫目錄禁用腳本執行、程式碼層面權限修正與 PHP 開放基礎目錄限制,可構建較完善的虛擬主機安全基線。

Copyright © Windows教程網 All Rights Reserved