Fortigate-教學(5) 防火牆規則

大軒軒
14 min readJun 7, 2023

--

防火牆規則是整個防火牆核心,並且不管是 流量朔型、防毒、入侵防護、沙盒、NAT 等功能,都是靠防火牆規則進行配對,配對成功就會執行相對應的動作

此篇目標:

  • 設定基本防火牆規則,允許流量通過或丟棄封包
  • 建立位址物件
  • 建立服務物件
  • 建立防火牆規則

此篇假設讀者已熟悉網段 (network, subnetwork)、遮罩 (netmask)、路由

目錄:

  • 名詞說明
  • 基本認識
  • 建立 zone
  • 建立防火牆規則
  • 建立位址物件
  • 建立服務

名詞說明

文章中提到的名詞不一定實務上通用,主要為了文章書寫方便

發起方 — 服務請求過程,第一個發送封包的主機,通常是 client 端。如,TCP三項交握,先送出 SYN 的主機

接收方 — 被動接收封包的主機,通常是 server 端。TCP 三項交握中收到 SYN 封包的主機

flow — TCP 封包內有來源和目的,來源的IP和Port與目的IP和Port,四個關鍵值合成一個 flow

session — 兩個 flow,且來源和目的互相交換
如底下兩個 flow 放在一起,即為 session
10.1.1.1:2000 -> 10.1.1.2:80
10.1.1.2:80 -> 10.1.1.1:2000

基本認識

方向

防火牆規則有方向性,因大部分的流量皆為TCP,因此發起方就是主要設定的依據

image from What is a TCP 3-way handshake process? (afteracademy.com)

依照三向交握的過程,第一個 SYN 封包

Client -> Server,這個方向為防火牆設定規則的方向(上圖中紅色的線)

Session (Cache)

這邊的 session 與上面提到的兩個 flow 不一樣,主要在說防火牆的 cache

當防火牆規則匹配成功,會在記憶體寫下兩條規則

  • 發起方 -> 接收方,發起方送到接收方的請求封包,依 TCP 的四個關鍵值為,來源IP和Port,目的IP和Port
  • 接收方->發起方,接收方回應請求的訊息

Session (Cache) 的優先權最高,如果刪掉防火牆規則,但這筆 session 還沒過期,此 session 的流量仍可通行

防火牆比對順序和粒度

  • 防火牆規則從上到下比對,一旦其中一條規則比對成功,即刻執行相應動作並且不再往下比對
  • 通常越上面的規則越細緻,越下面的規則越寬鬆
  • 所有規則都不匹配時,會中一條預設規則 policy 0,其動作是丟棄所有封包

底下為範例情境:

  • 辦公室 IP 範圍為 192.168.0.0/16,每個部門分配一個 /24
  • 192.168.3.0/24 為 Server 的網段
  • 方向皆為 Office 向 Server 發起

設定解說:

firewall policy example
firewall policy example

Allow_to_SVR_RDP,允許一小部分的人可以使用遠端桌面連到伺服器
Deny_RDP,阻擋全部員工使用遠端桌面連到伺服器
Manager_to_SVR,管理員可以無限制的連到伺服器,除了 RDP
Office_access_WEB,全體員工都可使用伺服器的網頁功能
implicit Deny,隱性的 Deny,預設規則,當上面四條都沒匹配,一定會中此規則

第一、二、三 條規則說明
只允許一部分管理員使用 RDP,剩下的管理員可以使用伺服器的所有功能 (如 MySQL)
規則一,先設定最小範圍,一部分管理員可使用 RDP
規則二,為了讓其他人不能用 RDP,補上一個阻擋規則
規則三,設定範圍較大,全部管理員都可連到伺服器,並使用任意服務 (除了 RDP)

第四條規則,最後再補上全部人可以使用 HTTP,其粒度最大

建立 zone

zone 是一種邏輯的分類,將介面組成一個群組,主要是更方便的設定防火牆規則
通常用在多條 LAN 的環境下,將多個 LAN 介面綁成一個區域,區域內的介面可以互相溝通 (也可以讓其不能互通)
常見的 zone 有三個

  • WAN — 網際網路的介面,現在通常改用 SDWAN
  • LAN — 連接辦公室設備的介面
  • DMZ — 給外部人員使用的服務區域

多條 WAN 的線路時,一般會用 SDWAN 這個功能,底下的圖僅為範例

常見的 zone
常見的 zone

建立 Zone

Network -> Interfaces -> Create New -> Zone

the path to create zone
the path to create zone
  • Name
    Zone的名稱,建議使用辨識度高的名稱
  • Block intra-zone traffic
    同一個 zone 裡面的不同介面,是否可以不用設定防火牆規則就可互相溝通。
    取消 (白球在左邊) 可直接溝通,啟用 (白球在右邊) 會阻擋流量
  • Interface members
    選擇要加入這個 zone 的介面,點擊 + 後,右邊會出現視窗,反黃的介面代表已選擇
  • Comments
    註解,給自己和其他同仁看的解釋,建議都要寫
create zone
create zone

使用 zone 進行防火牆規則設定

設定規則時,Inconing 或 Outgoing 的介面改使用 zone
反之,規則設定會是 office-01=> wan-01,office-02 => wan-01 類似這樣的規則

使用 zone 建立規則

防火牆規則設定

建立防火牆規則的一些注意事項

  • 可以細緻就不要隨意
    如果有辦法將規則細分,不要設定的太粗糙。
    建議同類型/同專案主機設定一筆
    如: WEB server 向 DB 取資料
    192.168.1–10 -> 192.168.2.100
  • LOG 紀錄不要都用 All Sessions
    重要的流量,如資料庫,建議 LOG 使用 All Sessions。
    但上網的流量,建議只用 Security Events
  • 使用群組
    當來源或目的 IP 很多時,或服務很多時,建議將這些物件變成一個群組,增加閱讀性

建立防火牆規則

路徑
Policy & Objects -> Firewall Policy -> Create New

防火牆規則常用欄位說明

防火牆規則是由好幾個稱為 profile (可以先認定為小型設定檔) 的物件組合而成

firewall policy page
firewall policy page
  • Name
    規則的名稱,可以輸入中文但建議不要,盡量保持英文並且沒有空白,並建議一定要輸入
  • Incoming Interface
    流量進入的介面
  • Outgoing Interface
    流量出去的介面
  • Source
    發起方的 IP 、網段或 FQDN
    也可結合 User ,當身分認證後才可放行,這部分較複雜不細討論
    現在可使用 Fortigate 提供的 Internet Service,Fortigate 依照功能一次設定很多位置,方便管理者設定,因作者未使用,不確定準確度如何
Internet Service
Internet Service

Internet Service,一個項目裏面包含眾多位置和服務

  • Destination
    接收方的 IP 、網段或 FQDN
  • Schedule
    這條規則生效的週期,一般都用 always (總是生效)
    也可設定中午生效,如中午可上 youtube
  • Service
    限定這條規則使用的協定,大方向分三個,TCP、UDP、ICMP,再依照協定允許通過的 Port 號。如 TCP 445 就是 SMB
  • Action
    匹配成功所執行的動作,ACCEPT 允許封包通過,DENY 丟棄封包
  • Inspection Mode
    安全功能用來檢查封包的方法,分成兩種模式,Proxy 和 Flow
    Flow — 預設值,處理速度較快,能控制的安全項目較少。建議都選這個
    Proxy — 有更多的安全控制項可調整

Incoming Interface 通常是 Client 端所在的位置
Outgoing Interface 通常是 Server 端所在的位置

防火牆介面
防火牆介面

NAT 欄位

fortigate policy page NAT
fortigate policy page NAT
  • NAT
    是否啟用 NAT 功能,此處 NAT 是 SNAT
  • IP Pool Configuration
    啟用 NAT 時,要使用那個 IP 當作轉換後的 IP
    - Use Outgoing Interface Address
    使用出口介面的 IP 當作 NAT 後的 IP
    - Use Dynamic Pool
    使用自定義 IP 作為 NAT 後的 IP

其它安全防護

此處的功能幾乎都要額外購買 License,並連到 Fortinet 網路進行更新
作者有在用的功能不多,這邊說明有在用的功能

  • AntiVirus
    防毒功能,從網路上下載檔案時,Fortigate 會同時進行掃毒,如果有病毒,會防止用戶下載
  • Web Filter
    網頁過濾,Fortinet 進行大量網頁收集後,進行一系列分類,如情色,遊戲,賭博等,用戶再依照要禁止的分類勾選,以禁止用戶連到相關網站
  • IPS
    入侵防護,即時檢查連線的行為或封包的行為等狀況,進行分析確認是否為攻擊事件,並中斷連線
  • SSL Inspection
    開啟上面任意功能,便會開啟此功能。
    此功能為攔截外部憑證,串改成自己的憑證送給 Client,這樣才能讀取被 SSL 加密的資料

Log 設定

當流量匹配到此規則時,要如何記錄 LOG,或是要記錄那種 LOG

  • Log Allowed Traffic
    是否紀錄流量日誌
    - Security Events 僅記錄與安全性有關的事件,如AntiVirus
    - All Sessions 每一條符合規則的 session 都記錄下來,會消耗較多的硬碟和資源,但可查到較完整個紀錄
  • Generate Logs when Session Starts
    一般紀錄都是在流量結束後才紀錄,勾選此功能後,會在流量剛進來時便紀錄,同時流量結束時也會記錄
  • Comments
    這個規則的註釋,建議寫清楚或填寫日期,其他同仁或交接時更為方便閱讀

建立位址物件 (addresses)

防火牆規則中,來源 IP (Source)和 目的 IP (Destination) 都要事先建立好,才能放到防火牆規則中。

隨版本更新,已經可以在防火牆規則中即時建立位址物件

路徑
Policy & Objects -> Addresses -> Create New -> Addresses

位址物件的類別常用的有

  • subnet
    最常用的一種,使用 IP 和 遮罩設定位址的範圍
    格式為,IP/BIT 或 IP MASK
    如:
    192.168.1.0/24
    10.2.0.0 255.255.0.0
  • IP Range
    設定連續 IP,如 192.168.1.1-50,設定一段連續 IP 時很好用
    格式為 IP1-IP2,兩個IP必須是連續不能中斷
    如:
    10.1.1.1-10.1.1.50
    192.168.1.1-192.168.2.254
  • FQDN
    改用網址代替 IP,使用此功能要先設定 DNS
    實際上 fortigate 還是以 IP 作為規則的依據
    Fortigate 會每 10 分鐘詢問 FQDN 的 IP,再把 IP 存起來當作規則比對
    如要手動變更時間,必須一個一個調整,而且只能用 CLI

config firewall address
edit address名稱
set cache-ttl 600

  • Geography
    國家 IP 群組,當要允許某個國家或禁止某個國家時,可使用此功能
    IP 的準確度沒有細查,大部分情況可以使用的很順暢

位址欄位說明

  • Name
    位址的名稱,作者一般使用網段作為名稱,註解才說明此功能
    如,192.168.1.0/24
  • Color
    圖標的顏色,提高使用者的辨識度
  • Type
    位址的類型,如上面所述的類別
  • IP/Netmask
    這個欄位隨著 Type 不同也會跟著改變,但意思大同小異,就是填入位址的範圍
  • Interface
    這個位址屬於那一個介面 / Zone,如果指定,在設定防火牆規則中,當選擇位址時,會看 Interface 的名稱是否匹配,有匹配才會顯示出來供使用
    也可選 Any,代表所有介面都適用。
    在防火牆規則中,Incoming Interface 呼應 Source
    Outgoin Interface 呼應 Destination
  • Static route configuration
    這個位址是否會出現靜態路由的 Source,如果啟動,設定靜態路由時可以用選的,選擇 source
  • Comments
    註解,建議描述清楚此位址的功能

建立位址群組

主要目標是方便管理和增加可讀性

路徑
Policy & Objects -> Addresses -> Create New -> Address Group

設定防火牆規則時,如果 source 或 destination 有很多且不連續,設定時會看到長長一條規則,閱讀和修改上都會顯得困難,此時可先把這些物件放到一個群組內,再到防火牆規則中,使用群組代替。

如下圖,把六個 IP 變成一個群組,更能理解這些 IP 的意思,也能增加規則可讀性

group example
group example

建立服務

服務,所代表的是網路通訊時使用的 Port 號,不管是 TCP、UDP 或 ICMP
如常用的網頁,HTTP 為 TCP 80,HTTPS 是 TCP 443
DNS是 UDP 53

會需要建立,代表使用到不常用或自訂的 Port 號
例如將 HTTP 改到 TCP 8080,或公司開發的服務使用 TCP 5555

路徑
Policy & Objects -> Services -> Create New -> Service

服務欄位說明

  • Name
    服務的名稱,作者一般使用 協定+Port號 作為名稱,註解欄位說明此功能
    如,TCP_12345
  • Comments
    註解,建議描述清楚此服務的功能或給誰使用
  • Color
    圖標的顏色,提高使用者的辨識度
  • Show in Service List
    此服務是否可在建立防火牆規則時,從清單中找到
  • Category
    服務 頁面裡,這筆新建的服務會屬於那一類型,主要用在方便查找
  • Protocol Type
    有三類
    TCP/UDP/SCTP — 常見的 TCP 和 UDP,幾乎99%都選這個
    ICMP - 最常用到的就是 Ping,如要新增其它 Type / code,可以參考網站
    Internet Control Message Protocol (ICMP) Parameters (iana.org)
    IP - ISO 7 層的第 4 層所用的編號,TCP 是 6,UDP 是 17,作者還沒用過

下面僅介紹 TCP/UDP 類別的設定

  • Address
    這個服務適用於那些目的 IP 或目的 FQDN,一般都用 0.0.0.0,全部都適用
  • Destination Port — 目的地的 Port 範圍,可選 TCP 或 UDP
    填寫 Port 號的欄位,左邊是最低 Port 號,右邊是最高 Port
  • Specify Source Ports
    同時也指定來源的 Port 號,不建議使用

建立服務的群組

建法類似位址的群組,目的也是方便觀看和管理,Fortigate 已經提供一些常用的 Service Group,如 WindowsAD

路徑
Policy & Objects -> Services -> Create New -> Service Group

建立方法與建立位址群組類似,此處不再贅述

Service Group Example
Service Group Example

--

--