首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 木馬攻擊防禦全攻略:從伺服器加固到代碼審計的纵深防禦體系

     編輯:PHP 相關知識

PHP Webshell 防禦:系統級與應用級雙重防線

PHP 木馬(Webshell)是伺服器被植入惡意腳本後,攻擊者用於持久化控制、竊取資料、橫向移動的核心工具。防禦核心在於最小權限原則與攻擊面縮減。

防線一:限制 PHP 腳本存取路徑(open_basedir)

在 httpd.conf(Apache)或 php.ini 中設定:

php_admin_value open_basedir "/var/www/html:/tmp:/usr/share/php"
  • 限制腳本僅能讀寫指定目錄樹,嘗試存取 /etc/passwd 等敏感路徑將拋出 Warning: open_basedir restriction in effect。
  • 虛擬主機環境建議每站點獨立設定,互不干擾。

防線二:禁用高危函數

在 php.ini 設定 disable_functions:

; 命令執行類
disable_functions = passthru,exec,shell_exec,system,proc_open,popen,pcntl_exec

; 檔案系統操作類(視業務需求酌情保留)
disable_functions = fopen,mkdir,rmdir,chmod,unlink,dir,fread,fwrite,fclose,file_exists,closedir,is_dir,readdir,opendir,fileperms,copy,rename,file_get_contents,file_put_contents

; 資訊洩露類
disable_functions = phpinfo,ini_get_all,get_cfg_var

注意:過度禁用會導致正常功能(如模板引擎編譯、快取寫入、Composer 安裝)失效,建議採用「預設拒絕、按需開放」策略,並搭配 open_basedir 限制影響範圍。

防線三:Windows 平台 Apache 降權運行

預設 Apache 以 SYSTEM 權限運行,一旦被植入 Webshell 即獲得最高控制權。降權步驟:

  1. 建立低權限帳號:
    net user apache_weak Password123! /add
    net localgroup users apache_weak /del
  2. 服務管理器 → Apache 服務 → 登入 → 此帳號 → 輸入帳號密碼 → 重啟服務。
  3. 進一步為各站點目錄設定 ACL,僅授予該站點讀/寫權限,實現站點級隔離。

防線四:應用層代碼審計與 WAF

  • 上傳防禦:白名單驗證副檔名/MIME、重命名儲存、儲存目錄禁用腳本執行權限、病毒掃描。
  • 包含漏洞:禁用 allow_url_include、固定模板路徑、避免動態 include $_GET['file']。
  • SQL 注入:全面採用參數化查詢(PDO/Prepared Statements)。
  • WAF:部署 ModSecurity + OWASP CRS,或雲端 WAF(Cloudflare、阿里雲盾),攔截已知攻擊特徵。

防線五:檔案完整性監控(FIM)與日誌審計

  • 部署 AIDE、Tripwire 或 OSSEC 監控核心目錄(/var/www、/etc)檔案變更。
  • 啟用 PHP 錯誤日誌與存取日誌集中收集(ELK/EFK),設定告警規則(如單 IP 短時大量 404/500、出現 eval/base64_decode 等特徵)。

緊急應變:發現 Webshell 後的處理流程

  1. 立即離線/隔離受害主機(防止橫向移動)。
  2. 備份現場證據(磁鏡像、記憶體鏡像、日誌)。
  3. 掃描全盤查殺(ClamAV、Linux Malware Detect、人工排查 eval/assert/preg_replace.*e 等特徵)。
  4. 溯源入侵向量(上傳漏洞、第三方插件、弱口令、供應鏈)。
  5. 修補漏洞、輪換所有憑證、重新部署乾淨代碼。
  6. 事後複盤,完善防禦體系。

總結

「沒有絕對安全,只有不斷提高攻擊成本」。將 open_basedir、disable_functions、進程降權、上傳隔離、代碼審計、WAF、FIM、日誌審計串聯起來,構建纵深防禦體系,才能有效遏制 PHP 木馬攻擊。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved