跳轉到

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 看命中哪條規則,排錯最快。