Access Control Policy¶
存取控制規則庫(Rulebase)是防火牆的本體。每個封包進來,Gateway 就拿它跟規則庫由上而下比對,第一條符合的規則決定放行或丟棄。
規則的組成¶
每條 Access Control 規則包含這些欄位:
| 欄位 | 意義 |
|---|---|
| No. | 規則編號(比對順序) |
| Name | 規則名稱(建議命名清楚) |
| Source | 來源(網段、主機、群組) |
| Destination | 目的地 |
| VPN | 適用的 VPN Community |
| Services & Applications | 服務 / 埠 / 應用程式 |
| Action | Accept / Drop / Reject / Ask / Inform |
| Track | 是否記 Log |
| Install On | 套用到哪些 Gateway |
比對邏輯:由上而下,First match¶
graph TD
P[封包進來] --> R1{規則 1 符合?}
R1 -->|是| A1[執行該規則 Action]
R1 -->|否| R2{規則 2 符合?}
R2 -->|是| A2[執行該規則 Action]
R2 -->|否| R3[... 直到 Cleanup Rule]
- First match wins:一旦命中某條規則,就執行它的 Action,不再往下比對。
- 所以「範圍小、特殊」的規則要放上面,「範圍大、通用」的放下面。
Cleanup Rule(清理規則)
規則庫最後通常放一條 Any / Any / Drop + Log 的 Cleanup Rule,明確記錄「沒被前面任何規則允許」的流量。沒寫的話會落到 Implicit Cleanup Rule(隱含丟棄,預設不記 Log),出事時查無紀錄。
Drop vs Reject¶
- Drop:直接丟棄,不回應來源(對方會 timeout)。
- Reject:丟棄並回送 RST / ICMP,來源立刻知道被擋。
對外服務通常用 Drop(不洩露防火牆存在),內部除錯有時用 Reject。
Implied Rules(隱含規則)¶
Check Point 有一組看不見的 Implied Rules,自動允許控制連線(例如 SmartConsole 管理、Gateway 與 Management 溝通)。在 Global Properties → Firewall 啟用 / 停用,並可設定它在規則庫的位置:
- First:在所有規則(含顯式)之前套用
- Last:在所有顯式規則之後、但在 Implicit Cleanup Rule 之前
- Before Last:在最後一條顯式規則之前
Management 會依 Global Properties 的勾選,自動在規則庫加入 / 移除這些 Implied Rules。
查為什麼被擋 / 被放行
在 SmartConsole 的 Logs 點該筆連線,會顯示是命中哪一條規則(含 Rule UID)。排錯時這比猜快得多。
Layers(分層規則庫)¶
R80 起 Access Control 採 Ordered Layers / Inline Layers:
- Ordered Layer:每個 Layer 內由上而下比對。命中 Drop → 停止;命中 Accept → 繼續比對「下一個 Ordered Layer」。
- Inline Layer:父規則的 Action 欄顯示的是 Inline Layer 名稱。封包命中父規則才進子規則;任一子規則命中即停止;子規則都沒中 → 套用該 Inline Layer 的 cleanup。封包沒命中父規則則跳過子規則,繼續比對同層下一條。
Implicit Cleanup 預設是 Drop
R80.10 起,沒有任何規則命中時的 Implicit Cleanup Rule 預設動作是 Drop(因多數策略採 allow-list)。官方最佳實務:每個 Inline Layer 結尾都加一條顯式 Cleanup Rule,且 Action 與 Implicit Cleanup 一致。
實用 CLI¶
# 看目前安裝的策略
fw stat
# 即時觀察被某規則命中的連線(expert)
fw log -n -t # 讀本機 log
# 查封包被丟棄的原因(官方 Performance Tuning Guide 寫法)
fw ctl debug -m fw + drop # 一般 Gateway / Cluster Member
g_fw ctl debug -m fw + drop # Scalable Platform(Maestro)整組
# 實務常用快捷(自動配 buffer、輸出印到 console)
fw ctl zdebug + drop # 排錯神器,屬 kernel debug、吃 CPU,量大慎用、用完即關
版本提醒
Ordered / Inline Layer、Implied Rules 機制在 R81.10 ~ R82.10 一致。R82 起規則庫的搜尋、批次編輯與 API 操作體驗持續強化。
小結¶
- 規則庫由上而下比對,第一條符合的就決定結果。
- 特殊規則放上面、通用規則放下面,最後加 Cleanup Rule(記 Log)。
- Drop 不回應、Reject 會回應。
- 用 Logs 看命中哪條規則,排錯最快。