Fortinet FortiGate 實戰課程

Level 2: Security & Connectivity | 10. SSL VPN 遠端存取 Tunnel Mode vs. Web Mode 與雙因子認證 (2FA) 整合

Concept一、核心概念

一句話定義:

SSL VPN 是一種利用瀏覽器標準加密協定 (TLS),讓外部使用者能安全地「穿越」網際網路,存取企業內部資源的技術,無需預先鋪設專線。

生活化比喻:任意門與傳送窗

  • Tunnel Mode (隧道模式) 就像「任意門」:
    你在家裡安裝了一個「任意門框」(FortiClient 軟體)。當你打開門走過去,你的人(封包)就完整地出現在公司辦公室裡。你可以走去印表機旁、走去伺服器旁,就像你真的在公司一樣 (獲得一個公司內部 IP)。
  • Web Mode (網頁模式) 就像「遙控無人機視窗」:
    你沒有任意門,但你透過家裡的窗戶 (瀏覽器) 操作一台位於公司的無人機 (Reverse Proxy)。你想看內部網站,無人機飛去幫你看,然後把畫面傳回來給你。你的人其實還在家裡,沒有真正進入公司 (沒有獲得虛擬網卡)。

Mechanism二、運作原理

Tunnel Mode 技術細節

  • 封裝 (Encapsulation): FortiClient 會建立一張虛擬網卡 (Virtual Adapter)。原始 IP 封包 (Payload) 會被加密並封裝在 SSL/TLS 標頭內。
  • Split Tunneling (分割通道): 這是關鍵參數。
    - 啟用:只有去公司的流量走 VPN,去 YouTube 的流量走本地網路 (節省頻寬)。
    - 停用:所有流量強制走回公司 (安全性高,但耗頻寬)。
  • IP Address: Client 會從防火牆定義的 IP Pool 取得一個內部 IP。

Web Mode 技術細節

關鍵參數與注意事項

  • Listening Port: 預設是 443,但強烈建議修改 (如 10443),避免與管理介面或 Virtual IP 的 HTTPS 服務衝突。
  • DTLS (Datagram TLS): 建議啟用。這是使用 UDP 來封裝 TLS。對於語音或視訊等即時流量,TCP over TCP (TCP Meltdown) 會導致效能低落,DTLS 使用 UDP 封裝可大幅改善。

Visuals三、架構視覺化

圖一:SSL VPN 連線建立流程 (Sequence Diagram)

展示使用者如何通過認證並建立隧道的過程。

sequenceDiagram participant User as 使用者 (FortiClient) participant Internet as 網際網路 participant FG as FortiGate (VPN GW) participant Auth as 認證伺服器 (LDAP/Radius) participant Internal as 內部伺服器 Note over User, FG: 階段 1: 建立 TLS 連線 User->>FG: 1. TCP Handshake (Syn/Ack) User->>FG: 2. Client Hello (TLS Setup) FG-->>User: 3. Server Hello + Certificate User->>User: 驗證憑證信任鏈 User->>FG: 4. Key Exchange complete Note over User, FG: 階段 2: 使用者認證 FG->>User: 5. 請求使用者帳密 User->>FG: 6. 傳送帳密 (Encrypted) FG->>Auth: 7. 驗證帳密 Auth-->>FG: 8. 驗證成功 (Access Accept) alt 啟用 2FA FG->>User: 9. 請求 FortiToken 驗證碼 User->>FG: 10. 輸入 Token Code end Note over User, FG: 階段 3: 隧道建立 FG->>User: 11. 分配內部 IP (IP Pool) & 路由表 User->>User: 12. 建立虛擬網卡 (Virtual NIC) Note over User, Internal: 階段 4: 資料傳輸 User->>FG: 13. [IP Header: Int-IP -> Svr-IP] [TCP Data] (Encrypted) FG->>FG: 14. 解密並檢查 Firewall Policy FG->>Internal: 15. 轉送封包

圖二:Tunnel Mode vs Web Mode 拓撲邏輯比較

flowchart TB subgraph Remote_User ["遠端使用者"] direction TB PC1[("筆電 A
(Tunnel Mode)")] PC2[("筆電 B
(Web Mode)")] end subgraph Internet_Cloud ["網際網路"] T_Tunnel[("==== 加密隧道 ====
(虛擬網卡, 全流量)")] W_Session[(".... HTTPS Session ....
(瀏覽器, 僅網頁)")] end subgraph HQ ["企業總部 (FortiGate)"] FW_Ext["WAN 介面
(Listen: 10443)"] subgraph Logic ["處理邏輯"] Virtual_IP["分配虛擬 IP Pool
(10.212.134.0/24)"] Proxy_Engine["Reverse Proxy 引擎
(URL 改寫)"] end FW_Int["LAN 介面"] end subgraph Internal_Servers ["內部資源"] ERP["ERP 系統
(TCP 8080)"] File["檔案伺服器
(SMB 445)"] end %% 連線關係 PC1 --> T_Tunnel --> FW_Ext PC2 --> W_Session --> FW_Ext FW_Ext --> Logic Virtual_IP -->|"路由/Policy檢查"| FW_Int Proxy_Engine -->|"代理請求"| FW_Int FW_Int --> ERP FW_Int --> File %% 樣式設定 classDef device fill:#f9f,stroke:#333,stroke-width:2px; classDef logic fill:#e0f2f1,stroke:#004d40,stroke-dasharray: 5 5; class PC1,PC2,FW_Ext,FW_Int device; class Logic,Virtual_IP,Proxy_Engine logic;

Use Case四、實務應用場景

場景描述:混合型遠端存取策略

某製造業公司需要滿足兩類使用者的需求:
1. 業務人員 (Sales):只需存取內網的 ERP 網頁下單,使用公用電腦或手機,不希望安裝軟體。
2. IT 維運人員 (Admins):需要 SSH 連線 Server、使用 RDP 維護主機,必須使用 Tunnel Mode。
且所有連線都必須強制啟用 FortiToken 雙因子認證

優缺點分析

優點 (Pros):
  • Web Mode 方便快速,零接觸部署 (Zero Touch)。
  • Tunnel Mode 功能強大,支援所有 TCP/UDP 應用。
  • 2FA 幾乎消除了帳號密碼外洩的風險。
缺點 (Cons):
  • Web Mode 容易遇到網頁相容性問題 (Java Script 重寫失敗)。
  • Tunnel Mode 需維護 Client 端軟體版本。
  • SSL 加解密對防火牆 CPU 負擔較大。

設定範例 (Configuration)

以下展示完成此場景的關鍵 CLI 設定指令 (亦可透過 GUI 完成)。

# 1. 建立使用者與群組 (包含 2FA)
config user local
  edit "sales_user"
    set type password
    set passwd context_ENC...
    set two-factor fortitoken // 啟用 FortiToken
    set fortitoken "FTKMOB12345678"
    set email-to "sales@example.com"
  next
end

# 2. 設定 VPN Portal (Web Mode & Tunnel Mode)
config vpn ssl web portal
  edit "Sales-Web-Portal"
    set web-mode enable // 啟用網頁模式
    set tunnel-mode disable
    config bookmark-group // 設定首頁書籤
      edit "Internal-ERP"
        set url "http://192.168.1.100"
      next
    end
  next
  edit "Admin-Tunnel-Portal"
    set tunnel-mode enable // 啟用隧道模式
    set web-mode disable
    set ip-pools "SSLVPN_TUNNEL_ADDR1" // 指派 IP Pool
    set split-tunneling enable // 啟用分割通道
  next
end

# 3. SSL VPN 全域設定 (監聽介面與對應)
config vpn ssl settings
  set servercert "Fortinet_Factory"
  set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
  set source-interface "wan1" // 外部介面
  set source-address "all"
  set default-portal "web-access"
  config authentication-rule // 依照群組指派 Portal
    edit 1
      set groups "Sales-Group"
      set portal "Sales-Web-Portal"
    next
    edit 2
      set groups "Admin-Group"
      set portal "Admin-Tunnel-Portal"
    next
  end
  set port 10443 // 修改 Port 避免衝突
end

# 4. 防火牆策略放行 (重要!)
config firewall policy
  edit 1
    set name "SSLVPN_to_LAN"
    set srcintf "ssl.root" // 來源是虛擬介面
    set dstintf "port1"
    set srcaddr "all"
    set dstaddr "Internal_Server_Subnet"
    set action accept
    set schedule "always"
    set service "ALL"
    set groups "Sales-Group" "Admin-Group" // 再次驗證身分
    set nat enable // 視需要啟用 NAT
  next
end

Quiz五、隨堂測驗

1. 關於 SSL VPN 的「Tunnel Mode」與「Web Mode」,下列敘述何者正確?

A. Web Mode 需要安裝 FortiClient 軟體才能使用。
B. Tunnel Mode 會在用戶端建立虛擬網卡,並取得內部 IP 位址。
C. Web Mode 支援所有 TCP/UDP 應用程式 (如 VoIP)。
D. 只有 Tunnel Mode 支援 2FA 雙因子認證。
解析:
A 錯誤,Web Mode 只需要瀏覽器。
B 正確,這正是 Tunnel Mode 的核心特徵。
C 錯誤,Web Mode 僅支援 HTTP/HTTPS 等有限協定,無法支援複雜應用。
D 錯誤,兩者皆支援 2FA。

2. 在設定 SSL VPN 時,為什麼建議將 Listening Port 從預設的 443 更改為其他埠號 (如 10443)?

A. 避免與 FortiGate 的 HTTPS 管理介面或 Virtual IP 服務發生衝突。
B. 443 Port 的加密強度較低。
C. 為了提高連線速度。
D. FortiClient 只支援非標準 Port。
解析: FortiGate 的管理介面 (Admin GUI) 預設也使用 443。若不修改,會導致 Port Conflict,或者讓外部直接存取到管理畫面造成安全風險。

3. 什麼是 "Split Tunneling" (分割通道) 的主要功能?

A. 將 TCP 流量轉換為 UDP 流量以加速傳輸。
B. 僅將存取企業內網的流量送入 VPN 隧道,其餘上網流量走本地網路。
C. 同時使用兩條 Internet 線路來增加頻寬。
D. 將 SSL VPN 流量分割給多台防火牆處理。
解析: Split Tunneling 的目的是區分「去公司的流量」和「去 Internet 的流量」,避免所有上網流量都繞回公司,浪費公司頻寬。

4. 在建立 SSL VPN 的 Firewall Policy 時,來源介面 (Source Interface) 應該選擇什麼?

A. wan1 (外部實體介面)
B. lan (內部實體介面)
C. ssl.root (SSL VPN 虛擬介面)
D. any (任意介面)
解析: SSL VPN 流量解密後,邏輯上是從虛擬介面 `ssl.root` 進入 FortiGate 的。因此 Policy 的來源必須是 `ssl.root`。

5. 若使用者反映 SSL VPN 連線後,使用 Teams 語音通話品質很差,最可能的改善設定為何?

A. 改用 Web Mode。
B. 停用 Split Tunneling。
C. 啟用 DTLS (Datagram TLS) 功能。
D. 將加密等級調到最高 (High Encryption)。
解析: 語音流量 (RTP) 對延遲敏感。標準 SSL VPN 使用 TCP 傳輸,若底層網路掉包會觸發 TCP 重傳 (TCP Meltdown),導致嚴重延遲。DTLS 使用 UDP 封裝,能有效避免此問題。