🛡 FortiGate SSL VPN 完全配置指南:憑證、LDAP、常見錯誤排查
FortiGate 的 SSL VPN 幾乎是中小企業最常用的遠端連線方案之一。只要正確設定 Portal、Policy、憑證與 LDAP 認證,就能讓使用者在外用 Notebook 或手機安全地連回公司內網。 本篇整理成一份「從 0 到可上線」的完整實務指南,包含:
- SSL VPN 架構與運作模式(Web Portal / Tunnel Mode)
- 最小可行配置步驟:Portal、使用者、Policy
- 匯入與綁定憑證(避免瀏覽器警告)
- LDAP 整合(AD 帳號登入 SSL VPN)
- 常見錯誤排查與診斷指令
一、SSL VPN 架構與模式概念
FortiGate 的 SSL VPN 大致可分成兩種操作模式:
1️⃣ Web Portal 模式
- 使用者用瀏覽器連到
https://防火牆 WAN IP:10443(預設) - 登入後看到 Web Portal,裡面可以放:
- Web Bookmark(內部 Web 系統)
- RDP / SSH Bookmark
- 下載 FortiClient 設定檔
- 適合:只需要存取少量內部 Web 系統的使用者
2️⃣ Tunnel Mode 模式
- 使用者透過 FortiClient 建立 SSL VPN Tunnel
- 連線成功後,PC 會拿到一個虛擬 IP(例如 10.10.10.x)
- 透過這個 Tunnel 存取內部網段(例如 192.168.1.0/24)
- 適合:需要完整內部網路存取(檔案伺服器、ERP、RDP…)
實務上大多同時啟用:Portal + Tunnel,但政策以 Tunnel Mode 為主。
二、上線前預先確認清單
- FortiGate 韌體版本已在支援 SSL VPN 的穩定版本上(例如 7.x LTS)
- 對外 WAN 介面已有固定 IP 或可對應的 FQDN
- 已確認 SSL VPN 使用的 Port(預設 443 / 10443)沒有被 ISP 或上游設備封鎖
- 內網網段規劃清楚,避免 SSL VPN IP 池與內網網段衝突
三、建立 SSL VPN 基本組態(Portal、IP Pool、User Group)
1️⃣ 建立 SSL VPN 使用的 IP 池
例如規劃給 VPN 用戶的虛擬 IP 範圍:10.10.10.0/24。
config firewall address
edit "SSLVPN_TUNNEL_SUBNET"
set subnet 10.10.10.0 255.255.255.0
next
end
config firewall ippool
edit "SSLVPN_POOL"
set type overload
set startip 10.10.10.1
set endip 10.10.10.254
next
end
2️⃣ 建立本機使用者(若沒有 LDAP / AD 時)
config user local
edit "vpnuser1"
set type password
set passwd "StrongPassw0rd!"
next
end
3️⃣ 建立使用者群組(之後可掛 Local 或 LDAP)
config user group
edit "SSLVPN_Users"
set member "vpnuser1"
next
end
四、設定 SSL VPN Portal
Portal 決定使用者登入後看到的畫面與權限。常見的是 full-access(Tunnel + Portal)。
config vpn ssl web portal
edit "full-access"
set tunnel-mode enable
set web-mode enable
set ip-pools "SSLVPN_POOL"
set split-tunneling enable
set split-tunneling-routing-address "LAN_SUBNET"
next
end
split-tunneling enable:讓 VPN 只走公司內部流量,其餘仍走使用者本地網路, 可降低頻寬負擔。若有「必須所有流量都走公司出口」的合規需求,可改成 disable。
五、啟用 SSL VPN Listener(綁定 WAN 介面)
接著在 SSL VPN 設定中,指定由哪個 WAN 介面接收 SSL VPN 連線、使用哪個 Port、用哪一個 Portal。
config vpn ssl settings
set servercert "FGT_SSL_CERT"
set tunnel-ip-pools "SSLVPN_POOL"
set source-interface "wan1"
set source-address "all"
set default-portal "full-access"
config authentication-rule
edit 1
set groups "SSLVPN_Users"
set portal "full-access"
next
end
end
servercert:綁定 SSL VPN 使用的憑證(之後會講怎麼匯入)source-interface:一般是wan1或上網用的介面authentication-rule:決定哪個 User Group 進來用哪個 Portal
六、建立 SSLVPN → 內網的防火牆 Policy
SSL VPN 建好後,還要用 Policy 讓 ssl.root 這條虛擬介面可以存取內部 LAN。
config firewall policy
edit 100
set name "SSLVPN_to_LAN"
set srcintf "ssl.root"
set dstintf "lan"
set srcaddr "SSLVPN_TUNNEL_SUBNET"
set dstaddr "LAN_SUBNET"
set action accept
set schedule "always"
set service "ALL"
set groups "SSLVPN_Users"
set nat enable
next
end
srcintf "ssl.root":所有 SSL VPN Tunnel 連線都出現在這個介面dstintf "lan":實際內部網段所在的介面(視你的命名而定)groups:限制只有 SSLVPN_Users 群組的帳號可以走此 Policy
七、憑證設定:避免瀏覽器警告
若使用 FortiGate 內建憑證,瀏覽器與 FortiClient 會跳安全警告。正式上線建議:
- 使用公司自己 CA(內部 PKI)簽 SSL 憑證
- 或使用公開 CA(如 Let's Encrypt、商用 CA)
1️⃣ 匯入憑證(已在外部產生好)
在 GUI 操作路徑大致為:System → Certificates → Import,底層 CLI 可用:
config vpn certificate local
edit "FGT_SSL_CERT"
set password "YourPFXPassword"
set private-key "-----BEGIN PRIVATE KEY----- ..."
set certificate "-----BEGIN CERTIFICATE----- ..."
next
end
匯入後回到:
- VPN → SSL-VPN Settings → Server Certificate 選擇
FGT_SSL_CERT
2️⃣ 使用 FQDN 取代 IP
- 申請憑證時,CN/SAN 使用
vpn.company.com - 外部 DNS 將
vpn.company.com指向 FortiGate WAN IP - 使用者在瀏覽器 / FortiClient 填的就是
https://vpn.company.com
八、整合 LDAP / AD:用 AD 帳號登入 SSL VPN
實務上大多希望直接用 AD 帳密登入 VPN,避免多組帳號管理。
1️⃣ 設定 LDAP 伺服器
config user ldap
edit "AD_LDAP"
set server "10.0.0.10"
set cnid "sAMAccountName"
set dn "DC=company,DC=local"
set type regular
set username "CN=svc-ldap,OU=Service,DC=company,DC=local"
set password "SvcLdapStrongPass!"
set secure ldaps
set port 636
next
end
完成後可用 CLI 測試:
diagnose test authserver ldap "AD_LDAP" user1 "User1Password"
2️⃣ 建立使用者群組,掛載 LDAP
config user group
edit "SSLVPN_Users"
set member "AD_LDAP"
config match
edit 1
set server "AD_LDAP"
set group "CN=VPN_Users,OU=Security,DC=company,DC=local"
next
end
next
end
之後 SSL VPN authentication-rule 指定的 Group 就改用這個 LDAP 群組。
九、常見錯誤排查與診斷指令
1️⃣ 使用者無法連線:連到一半就失敗
- 先確認 WAN Policy 或上游設備沒有擋 SSL VPN Port
- 檢查是否有 IPS / WAF 誤擋
可用以下 Debug 觀察:
diagnose debug application sslvpn -1 diagnose debug enable
觀察使用者登入時是否有錯誤訊息,結束後:
diagnose debug disable
2️⃣ 登入失敗:帳密正確但被拒絕
- 確認 Authentication Rule 有包含該 User Group
- 確認 User Group 是否包含該使用者(Local 或 LDAP)
- LDAP 用
diagnose test authserver ldap測試
3️⃣ 登入成功但無法連到內部主機
- 檢查 Policy:
srcintf ssl.root → dstintf LAN是否有放行 - 確認
SSLVPN_TUNNEL_SUBNET有包含使用者拿到的虛擬 IP - 內部主機的防火牆是否允許來自 VPN 網段
- 若啟用 split tunneling,要確認 Routing / DNS 指到對的內網
4️⃣ 憑證錯誤或瀏覽器不信任
- 確認 SSL VPN 使用的
servercert是否為正確憑證 - 憑證的 CN/SAN 是否與使用者輸入的 FQDN 相符
- 若為內部 CA,要確保使用者端有安裝 Root CA
5️⃣ 併用二階段驗證(FortiToken / Email OTP)
- 啟用 Two-factor 後,如使用者登入次數異常,可從 Log → Event → VPN 分析
- 若 OTP 驗證失敗,常見是時間不同步或信箱收不到碼
十、實務建議與最佳實務小結
- 正式環境務必使用「有效憑證 + FQDN」部署 SSL VPN
- 使用 LDAP / AD 統一帳號管理,並搭配安全群組(如 VPN_Users)
- Policy 要盡量精準:限制來源、目的網段與服務,而非整個內網全開
- 建議開啟日誌並集中到 FortiAnalyzer / Syslog 以便稽核與事後追查
- 使用 split tunneling 可減少出口流量,但需評估資安政策;若有合規要求可全部導回總部
- 定期檢視未使用帳號,關閉離職或不再需要 VPN 的帳號
📘 結語
FortiGate SSL VPN 看起來選項很多,但實際上可以分為幾個關鍵步驟: 規劃 IP 池 → 建立使用者與群組 → 設定 Portal → 綁憑證 → 建 Policy → 測試與排錯。 一旦這套流程建立好,往後要擴充新使用者或新增內部系統,只需要調整群組與 Bookmark 即可。
— WWFandy・FortiGate 實戰筆記
🔗 延伸閱讀
💬 留下你的觀點,讓討論更精彩!
你在部署 FortiGate SSL VPN 時,有遇過什麼奇怪的問題或實戰心得嗎?歡迎在下方留言分享, 也可以寫下你目前的環境規模(人數、分點、版本),一起交流更穩定的做法。
沒有留言: