給 F5 工程師 · BIG-IP Advanced WAF/ASM 17.x、21.x

設定步驟:讓 3 個 php2shell signature 生效

共 4 個步驟。步驟 1 每台設備做一次,步驟 2 到 4 每個保護 PHP 網站的 policy 都要做。畫面取自 BIG-IP 17.5.1.8。

開始前

先確認是哪一種情況

F5 在 ASU 20261022_154742 更新了 200103697 與 200204115。要做的事取決於當初設定時裝的 ASU 版本,和設定的日期無關。

情況要做的事
A. 之前已用 ASU 20261021 完成設定,3 個 signature 都已 Enforced安裝 20261022,再 Enforce 一次。見情況 A
B. 之前沒有設定安裝 20261022,依步驟 1 到 4 設定,最後一定要 Enforce。見情況 B

不確定設備上是哪一版:在 Attack Signatures List(步驟 1 的最後)看 200103697 的 Accuracy。Low 表示還是 20261021,Medium 表示已是 20261022。

情況 A:已用 ASU 20261021 完成設定

  1. 安裝 ASU 20261022_154742 或更新版本(步驟 1)。如果設備已自動安裝,跳過這一步。
  2. 在每個 PHP policy 搜尋「PHP Remote Code Execution」(步驟 2 的畫面)。200103697 與 200204115 如果顯示 Staging,做下一步。
  3. 勾選顯示 Staging 的 signature,按 Enforce,再按 Apply Policy(步驟 4)。
  4. 依驗證方法確認防禦生效。

不需要重建 signature set,也不需要重新指派給 policy。lab 實測:ASU 更新後,專用 set 與 policy 仍包含這 3 個 signature。

為什麼要再 EnforceF5 更新 signature 後,policy 會把新版規則放進 staging。lab 實測:200103697 的舊版規則仍會阻擋,新版規則只記錄。新版 200204115 會擋下參數名稱巢狀 64 層以上的請求,舊版不會。要 Enforce 新版,才有這項保護。

情況 B:直接安裝 ASU 20261022

  1. 安裝 ASU 20261022_154742 或更新版本(步驟 1)。
  2. 在每個 PHP policy 搜尋「PHP Remote Code Execution」(步驟 2)。少於 3 筆時,做步驟 3。
  3. 新加入的 3 個 signature 都會顯示 Staging。全部勾選,按 Enforce,再按 Apply Policy(步驟 4)。
  4. 依驗證方法確認防禦生效。
一定要 EnforceStaging 中的 signature 只記錄、不阻擋。lab 實測:3 個 signature 都在 Staging 時,所有攻擊特徵都送到了 PHP。

和 20261021 相比,只有一個差異:3 個 signature 的 accuracy 都是 Medium。如果 policy 已指派「PHP Signatures (High/Medium Accuracy)」,3 個會自動進入 policy,步驟 2 會找到 3 筆,不需要做步驟 3。

步驟 1 安裝特徵碼更新(ASU)

GUI 路徑System ›› Software Management : Live Update ›› ASM Attack Signatures

找到 ASM-AttackSignatures_20261022_154742.im(或更新版本),看 Status 欄位。下面的畫面是較早的 20261021_191526,操作方式相同。

Status意思
Currently Installed已安裝,做步驟 2
Pending (Preview Available)已下載,但沒有安裝
清單中沒有按 Check for Updates;設備不能連網時,從 MyF5 Downloads 下載後按 Upload File
已下載但沒有安裝。「Installation of Automatically Downloaded Updates」是 Disabled 時,設備不會自動安裝。

點選檔名,按 View Full Readme 可查看這份 ASU 新增與更新的 signature。確認後按 Install,等 Status 變成 Currently Installed(實測 20261021 約 3 分 30 秒,20261022 約 1 分 30 秒)。

20261021 的 Readme:新增的 3 個 signature

確認設備上已有 3 個 signature

GUI 路徑Security ›› Options : Application Security : Attack Signatures : Attack Signatures List

按漏斗圖示,在 Attack Signature Name 輸入「PHP Remote Code Execution」,按 Apply。

3 個 signature 已存在。畫面是 ASU 20261021,200103697 與 200204115 的 Accuracy 是 LOW。安裝 20261022 後,3 個都是 MEDIUM。

步驟 2 確認 policy 是否包含 3 個 signature

GUI 路徑Security ›› Application Security : Security Policies : Policies List ›› (policy 名稱)›› Attack Signatures

按漏斗圖示,在 Attack Signature Name 輸入「PHP Remote Code Execution」,按 Apply。

以 Rapid Deployment 範本建立的 policy:ASU 安裝後仍然沒有這 3 個 signature
搜尋結果下一步
3 筆都在,Status 都是 EnforcedApply Policy 後,做驗證
3 筆都在,但 Status 是 Staging做步驟 4
少於 3 筆,或沒有資料做步驟 3,再做步驟 4

為什麼會沒有

policy 只使用已指派的 signature set。這 3 個 signature 屬於 PHP 系統。常用的「Generic Detection Signatures」只包含 General Database、Various systems、System Independent、JavaScript 這 4 個系統,所以不包含它們。

在 policy 加入 Server Technology「PHP」時,GUI 會建立「PHP Signatures (High/Medium Accuracy)」:

這個 set 只收 High/Medium accuracy 的 PHP signature
設備上的 ASU只加 Server Technology PHP 的結果
20261021_191526只帶入 200204113。200103697、200204115 是 Low accuracy,不會進入 policy
20261022_154742 起3 個都是 Medium accuracy,3 個都會帶入
建議用步驟 3 的專用 signature set專用 set 不受 ASU 版本與 accuracy 影響,也不會一次加入其他 PHP signature。

步驟 3 建立專用 signature set 並指派給 policy

3-1 建立 signature set(每台設備一次)

GUI 路徑Security ›› Options : Application Security : Attack Signatures : Attack Signature Sets ›› Create
欄位設定值
Attack Signature Set Namephp2shell_CVE-2026-109618_109619
Default Blocking ActionsLearn、Alarm、Block 都勾選
Assign Set to Newly Created PoliciesNever
Signature Set TypeManual
基本設定
  1. 在 Signature Name or ID 輸入「PHP Remote Code Execution」。
  2. 把滑鼠移到 PHP Remote Code Execution、(2)、(3) 這 3 筆上,按右側的「+」。不要加入 Juniper JunOS 那一筆。
  3. 確認 Assigned Signatures 顯示 (3),按 Add。
Assigned Signatures (3)

3-2 指派給 policy(每個 PHP policy 都要做)

GUI 路徑Security ›› Application Security : Policy Building : Learning and Blocking Settings ›› Attack Signatures
  1. 在頁面上方選擇 policy,展開 Attack Signatures,按 Change...。
  2. 勾選 php2shell_CVE-2026-109618_109619,按 Change。
  3. 確認新 set 的 Learn、Alarm、Block 都已勾選,按 Save。
勾選新建立的 set
新 set 已加入,Learn/Alarm/Block 都已勾選

步驟 4 Enforce 並 Apply Policy

新加入 policy 的 signature 一律先進 staging。staging 期間(預設 7 天)只記錄、不阻擋,所以要手動 Enforce。

GUI 路徑Security ›› Application Security : Security Policies : Policies List ›› (policy 名稱)›› Attack Signatures
  1. 按漏斗圖示,搜尋「PHP Remote Code Execution」。
  2. 勾選 200204113、200103697、200204115,按 Enforce,在確認視窗再按 Enforce。
勾選 3 個 signature,按 Enforce
Status 變成 Enforced
  1. 按右上角 Apply Policy,在確認視窗按 OK。「Changes details (not applied)」消失就完成(實測約 10 秒)。
還有設定沒有套用時,會顯示「Changes details (not applied)」
安裝更新版 ASU 後,要再 Enforce 一次F5 更新的 signature 會回到 Staging。請依上面的步驟再 Enforce 並 Apply Policy,見情況 A。
多個 policy每個保護 PHP 網站的 policy 都要做步驟 2 到 4。BIG-IP 上可執行 唯讀檢查 script,一次列出所有 policy 的狀態。