給 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。
開始前
- 確認保護 PHP 網站的 policy 是 Blocking 模式。Transparent 模式只記錄、不阻擋。
- 備份要修改的 policy(Export 或 UCS)。
- 建議在維護時段操作。Apply Policy 不會中斷連線,但新規則可能誤擋正常流量。
先確認是哪一種情況
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 完成設定
- 安裝 ASU 20261022_154742 或更新版本(步驟 1)。如果設備已自動安裝,跳過這一步。
- 在每個 PHP policy 搜尋「PHP Remote Code Execution」(步驟 2 的畫面)。200103697 與 200204115 如果顯示 Staging,做下一步。
- 勾選顯示 Staging 的 signature,按 Enforce,再按 Apply Policy(步驟 4)。
- 依驗證方法確認防禦生效。
不需要重建 signature set,也不需要重新指派給 policy。lab 實測:ASU 更新後,專用 set 與 policy 仍包含這 3 個 signature。
情況 B:直接安裝 ASU 20261022
- 安裝 ASU 20261022_154742 或更新版本(步驟 1)。
- 在每個 PHP policy 搜尋「PHP Remote Code Execution」(步驟 2)。少於 3 筆時,做步驟 3。
- 新加入的 3 個 signature 都會顯示 Staging。全部勾選,按 Enforce,再按 Apply Policy(步驟 4)。
- 依驗證方法確認防禦生效。
和 20261021 相比,只有一個差異:3 個 signature 的 accuracy 都是 Medium。如果 policy 已指派「PHP Signatures (High/Medium Accuracy)」,3 個會自動進入 policy,步驟 2 會找到 3 筆,不需要做步驟 3。
步驟 1 安裝特徵碼更新(ASU)
找到 ASM-AttackSignatures_20261022_154742.im(或更新版本),看 Status 欄位。下面的畫面是較早的 20261021_191526,操作方式相同。
| Status | 意思 |
|---|---|
| Currently Installed | 已安裝,做步驟 2 |
| Pending (Preview Available) | 已下載,但沒有安裝 |
| 清單中沒有 | 按 Check for Updates;設備不能連網時,從 MyF5 Downloads 下載後按 Upload File |
點選檔名,按 View Full Readme 可查看這份 ASU 新增與更新的 signature。確認後按 Install,等 Status 變成 Currently Installed(實測 20261021 約 3 分 30 秒,20261022 約 1 分 30 秒)。
確認設備上已有 3 個 signature
按漏斗圖示,在 Attack Signature Name 輸入「PHP Remote Code Execution」,按 Apply。
步驟 2 確認 policy 是否包含 3 個 signature
按漏斗圖示,在 Attack Signature Name 輸入「PHP Remote Code Execution」,按 Apply。
| 搜尋結果 | 下一步 |
|---|---|
| 3 筆都在,Status 都是 Enforced | Apply 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)」:
| 設備上的 ASU | 只加 Server Technology PHP 的結果 |
|---|---|
| 20261021_191526 | 只帶入 200204113。200103697、200204115 是 Low accuracy,不會進入 policy |
| 20261022_154742 起 | 3 個都是 Medium accuracy,3 個都會帶入 |
步驟 3 建立專用 signature set 並指派給 policy
3-1 建立 signature set(每台設備一次)
| 欄位 | 設定值 |
|---|---|
| Attack Signature Set Name | php2shell_CVE-2026-109618_109619 |
| Default Blocking Actions | Learn、Alarm、Block 都勾選 |
| Assign Set to Newly Created Policies | Never |
| Signature Set Type | Manual |
- 在 Signature Name or ID 輸入「PHP Remote Code Execution」。
- 把滑鼠移到 PHP Remote Code Execution、(2)、(3) 這 3 筆上,按右側的「+」。不要加入 Juniper JunOS 那一筆。
- 確認 Assigned Signatures 顯示 (3),按 Add。
3-2 指派給 policy(每個 PHP policy 都要做)
- 在頁面上方選擇 policy,展開 Attack Signatures,按 Change...。
- 勾選
php2shell_CVE-2026-109618_109619,按 Change。 - 確認新 set 的 Learn、Alarm、Block 都已勾選,按 Save。
步驟 4 Enforce 並 Apply Policy
新加入 policy 的 signature 一律先進 staging。staging 期間(預設 7 天)只記錄、不阻擋,所以要手動 Enforce。
- 按漏斗圖示,搜尋「PHP Remote Code Execution」。
- 勾選 200204113、200103697、200204115,按 Enforce,在確認視窗再按 Enforce。
- 按右上角 Apply Policy,在確認視窗按 OK。「Changes details (not applied)」消失就完成(實測約 10 秒)。