ISPConfig 多 PHP 版本環境下應對 CVE-2026-115560 漏洞:全域修復與服務重啟實戰

在現今複雜的網頁寄存環境中,主機控制面板通常需要同時支援多個不同的 PHP 版本(從舊版的 PHP 5.4、5.6 到現代的 PHP 7.x、8.x),以滿足不同客戶或網站系統的相容性需求。然而,當突發重大安全漏洞(如針對 session.upload_progress 的 CVE-2026-115560 遠端程式碼執行漏洞)降臨孤立或多版本並存的伺服器時,管理員如何在不破壞多 PHP 架構的前提下進行一次性全域快速止血,就成為了一門重要的技術課題。

本文將以實際在 ISPConfig 伺服器上的防護經驗為例,分享如何利用 Shell Script 精準修復多版本 php.ini 並安全重啟服務。

一、 挑戰所在:ISPConfig 多 PHP 架構的配置特點

以採用 Remi 套件庫並透過 ISPConfig 管理多 PHP 版本的 Linux 伺服器為例:

  • 路徑分散:系統中往往同時存在多個獨立的 PHP 運行環境,其設定檔並非集中在單一的 /etc/php/ 目錄,而是散落于 /opt/remi/、/etc/opt/remi/ 或 /etc/ 等自訂路徑中。
  • 版本眾多:從 PHP 5.4 一直到 PHP 8.3 共存,若手動逐一打開每個版本的 php.ini 進行修改,不僅耗時費力,還極容易遺漏高風險版本。

二、 實戰演練:一次性全域修改 php.ini

為了精準切斷 CVE-2026-115560 的漏洞觸發路徑(即關閉 session.upload_progress.enabled 且不影響正常的檔案上傳功能),我們不需要「一刀切」禁止所有上載,而是可以直接在伺服器端執行一段迴圈腳本,自動掃描並更新所有版本的 php.ini。

1. 執行自動掃描與批次修改指令

透過以下 Shell 命令,系統會自動在 /opt/、/etc/ 及 /usr/local/ 中尋找所有的 php.ini 檔案:

  • 若檔案中已存在該參數,則自動將其設定為 0;
  • 若不存在,則在檔案結尾自動追加 session.upload_progress.enabled = 0。

Bash

for ini in $(find /opt/ /etc/ /usr/local/ -type f -name "php.ini" 2>/dev/null); do
    if grep -q "session.upload_progress.enabled" "$ini"; then
        sed -i 's/^[# \t]*session\.upload_progress\.enabled\s*=.*/session.upload_progress.enabled = 0/' "$ini"
    else
        echo "session.upload_progress.enabled = 0" >> "$ini"
    fi
    echo "已更新: $ini"
done

執行後,終端機會清晰列出所有被成功加固的 php.ini 路徑,確保無一遺漏。

三、 批次重啟 PHP-FPM 與網頁伺服器

設定檔修改完成後,必須重啟對應的 PHP-FPM 服務與網頁伺服器(以 Apache / httpd 為例),才能使全域修改正式生效。

1. 迴圈重啟各版本 PHP-FPM 服務

Bash

for s in php54-php-fpm php56-php-fpm php70-php-fpm php72-php-fpm php73-php-fpm php74-php-fpm php81-php-fpm php83-php-fpm; do
    systemctl restart $s 2>/dev/null
    echo "已重啟: $s"
done

2. 重啟網頁伺服器

Bash

systemctl restart httpd

四、 總結與防護建議

透過這套自動化處理方案,系統管理員能在短短數分鐘內完成整台 ISPConfig 多 PHP 版本伺服器的漏洞防護加固:

  1. 精準 surgical 級別防禦:關閉 session.upload_progress.enabled 有效阻斷了 RCE 攻擊途徑。
  2. 業務零中斷:完整保留了網站正常的檔案上傳與互動功能,避免粗暴禁止上傳所帶來的業務癱瘓。
  3. 高效維運:利用 Shell 迴圈完美解決了多版本、分散式路徑的管理難題。

建議各位主機維護團隊在面對新型自動化攻擊浪潮時,優先採用這類結構化、自動化的指令碼來提升應變效率,保障伺服器的絕對安全。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *