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 技術細節
- 反向代理 (Reverse Proxy): FortiGate 作為代理人。使用者只與 FortiGate 的 HTTPS Port 建立連線。
- URL Rewriting: 這是最消耗資源的部分。FortiGate 必須解析內部網頁的 HTML,將所有內部連結 (如 ``) 改寫為代理路徑,確保後續點擊仍透過 VPN。
- 限制: 只能存取特定協定 (HTTP/HTTPS, RDP, SSH, SMB 等),無法支援像 VoIP 或複雜的 C/S 架構軟體。
關鍵參數與注意事項
- Listening Port: 預設是 443,但強烈建議修改 (如 10443),避免與管理介面或 Virtual IP 的 HTTPS 服務衝突。
- DTLS (Datagram TLS): 建議啟用。這是使用 UDP 來封裝 TLS。對於語音或視訊等即時流量,TCP over TCP (TCP Meltdown) 會導致效能低落,DTLS 使用 UDP 封裝可大幅改善。
Visuals三、架構視覺化
圖一:SSL VPN 連線建立流程 (Sequence Diagram)
展示使用者如何通過認證並建立隧道的過程。
圖二:Tunnel Mode vs Web Mode 拓撲邏輯比較
(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 雙因子認證。
優缺點分析
- Web Mode 方便快速,零接觸部署 (Zero Touch)。
- Tunnel Mode 功能強大,支援所有 TCP/UDP 應用。
- 2FA 幾乎消除了帳號密碼外洩的風險。
- Web Mode 容易遇到網頁相容性問題 (Java Script 重寫失敗)。
- Tunnel Mode 需維護 Client 端軟體版本。
- SSL 加解密對防火牆 CPU 負擔較大。
設定範例 (Configuration)
以下展示完成此場景的關鍵 CLI 設定指令 (亦可透過 GUI 完成)。
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 只需要瀏覽器。
B 正確,這正是 Tunnel Mode 的核心特徵。
C 錯誤,Web Mode 僅支援 HTTP/HTTPS 等有限協定,無法支援複雜應用。
D 錯誤,兩者皆支援 2FA。
2. 在設定 SSL VPN 時,為什麼建議將 Listening Port 從預設的 443 更改為其他埠號 (如 10443)?
3. 什麼是 "Split Tunneling" (分割通道) 的主要功能?
4. 在建立 SSL VPN 的 Firewall Policy 時,來源介面 (Source Interface) 應該選擇什麼?
5. 若使用者反映 SSL VPN 連線後,使用 Teams 語音通話品質很差,最可能的改善設定為何?