此篇目標:
- 啟動 SSL VPN
- 設定 SSL VPN
- 建立 Split Tunneling
此篇假設讀者已熟悉網段 (network, subnetwork)、遮罩 (netmask)、路由
目錄:
- Fortigate SSL VPN 說明
- FortiClient 下載位置
- FortiToken
- 啟動 SSL VPN
- 建立帳號的群組
- 建立本機帳號
- 建立 SSL VPN 防火牆規則
- Portal 的設定
- SSL VPN 取得的 IP
- 依照不同入口介面給予不同 IP
- Split DNS
- SSL VPN 的路由
- DTLS (Datagram TLS)
Fortigate SSL VPN 說明
自己使用的時間不長,尚未碰到不良情況,但同事常常反應會斷線,因此建議在經費、使用時間短、人數不多的環境下可以使用。
條件允許下建議買中華電信 VPN 方案或其他商業 SSL VPN 品牌,如 ivanti
Fortigate 的 SSL VPN 分兩部分
一個是 Fortigate,作為 Server 端,幾乎全部的設定在此完成
一個是 FortiClient,作為 Client 端,這邊只會提到其中一個功能,VPN
FortiClient 作為端點防護,結合多種設備,有 Forti 雲端和 Fortigate 等,用意是將安全邊界擴張到最遠的終端用戶。
在過去 Fortigate 的 SSL VPN 有 10 個同時連線數的上限,現在似乎取消其限制,改成 FortiClient 完整功能才要 License,單純的 VPN 功能免費提供
SSL VPN 分成兩種模式
Tunnel mode
文章主要描述此方法
用戶要在終端裝置安裝 FortiClient,使用 VPN 功能連到 Fortigate,Fortigate 會派發一個指定好的 IP 給用戶,此時用戶如同在辦公室,可以使用 Private IP 連到公司資源,同時這些流量也會受到 Fortigate 的防火牆規則和路由限制
Web mode
Fortigate 有一個專屬 SSL VPN 的頁面並提供指定的應用程式服務,用戶使用網頁連結,把 Fortigate 當作跳板。
指定的應用程式有 HTTP/HTTPS, Telnet, FTP, SMB/CIFS, VNC, RDP, 和 SSH,如果要瀏覽的網頁使用複雜渲染技術,可能會有顯示的問題
FortiClient 下載位置
請依照自己的裝置選擇下載的軟體,這個是 VPN ONLY 的版本
Product Downloads | Fortinet Product Downloads | Support
操作過程不難,請參考官方網站進行安裝和設定
Connecting from FortiClient VPN client | FortiGate / FortiOS 7.0.0 | Fortinet Document Library
FortiToken
FortiToken 是 OTP (One-Time Password),有分軟體 (app) 和硬體,Fortinet 提供的雙因素驗證(MFA),沒有 License 的狀態下可以有兩個免費的軟體 (app) token,超過就要買授權
啟動 SSL VPN
完成指定的設定才能啟動 SSL VPN,都設定完後才能在防火牆規則的 Interface 看到 "SSL-VPN tunnel interface (ssl.root)" 這個介面
此處的設定屬於全域 (Global) 設定,代表所有 SSL VPN 都會受影響
VPN -> SSL-VPN Settings
- Listen on Interface
那些介面可以接收 SSL VPN 的連線請求,如果介面有多個 IP,這個介面的全部 IP 都可以接受請求 - Listen on Port
SSL VPN 連線的 Port 號,預設的 443 會跟控制 Fortigate 的網頁所使用的 Port 衝突,個人習慣使用 10443 - Server Certificate
用來建立 SSL VPN 的憑證,預設只有 Fortinet_Factory 這個憑證可以使用,這是 Fortigate 的自簽憑證
可以在 system -> certificate 匯入自己的憑證
- Authentication / Portal Mapping
使用者群組和 Portal 的配對,Portal 用來設定連入的方式和 FortiClient 的行為
以上設定完後 SSL VPN 才會生效。
其他的設定說明
- Restrict Access
限制可以連進來的 IP
通常用在限制國家,先到 Policy & Objects -> Addresses
建立一個 Type 為 Geography,選擇可以連入的地區
再回到這裡設定可以連入的 address
- Idle Logout
多久沒有傳送流量到 SSL VPN,會自動切斷連線
- Address Range
指定 SSL VPN 連線成功後會取得的 IP,預設使用 Portal 的設定,可使用指令修改。下面有詳細說明。
先到 Policy & Objects -> Addresses
建立一個 Type 為 IP Range,範圍就是發送 IP 的範圍
- DNS Server
成功連上 SSL VPN 後,Client 端所使用的 DNS。
調整此處會引響全部的 SSL VPN,如果 Portal 有設定,會優先使用 Portal 的設定。
Same as client system DNS — 連上 SSL VPN 後,DNS 不變
Specify — 指定特定的 DNS 主機
建立帳號的群組
User & Authentication -> User Groups -> Create New
Type 選 “Firewall”
建立本機帳號
SSL VPN 的帳號支援多種驗證方式,LDAP、RADIUS等,這邊描述最簡單的 Local 帳號。
User & Authentication -> User Definition -> Create New -> Local
輸入帳密,下一步的雙因素驗證保留 disable
最後一步啟用 User Group,選擇上面的群組
建立 SSL VPN 的防火牆規則
Policy & Objects -> Firewall Policy
Incoming Interface 使用 SSL-VPN 的介面,以前稱為 ssl.root
Source 欄位一定要同時有 SSL VPN 使用者的群組或帳號和來源 IP
NAT 一定要取消
剩下的設定與一般設定 Policy 一樣
PS: 如果 Interface 找不到 “SSL-VPN tunnel interface (ssl.root)”,代表 SSL VPN 還沒設定好。
到此 SSL VPN 設定完畢,現在應該可以使用 FortiClient 連上 SSL VPN。
請不要在內網使用 FortiClient 嘗試連上 SSL VPN,請改用手機分享 WIFI 的方式進行測試。
Portal 的設定
Portal 專門設定 FortiClient 可以做的事情,也是設定 Web 版 SSL VPN 的地方。
- Split tunneling
SSL VPN 路由的設定,下面會有詳細的描述 - Source IP Pools
SSL VPN 連線成功後會取得的 IP 範圍,預設使用 Portal 的設定,可告指令修改。下面有詳細說明
- Allow client to save password
允許用戶在 FortiClient 的 VPN 設定上儲存密碼,以後不用再打密碼
設定後 FortiClient 會多一個選項, Save Password - Allow client to connect automatically
上面的設定會強制啟動,允許自動連線
設定後 FortiClient 會多一個選項, Auto Connect - Allow client to keep connections alive
Allow client to save password會強制啟動
設定後 FortiClient 會多一個選項, Always Up - DNS Split Tunneling
DNS 會依照不同網址使用不同的 DNS,會在底下詳細描述
Portal 新增完後,記得到 VPN -> SSL-VPN Settings -> Authentication / Portal Mapping,將新的 Portal 綁上去。
SSL VPN 取得的 IP
預設狀態,SSL VPN 連線成功後,會優先使用 Portal 裡面 Source IP Pools,使用底下的指令後,會改為使用 SSL-VPN Settings 的 Address Range
config vpn ssl settings
set tunnel-addr-assigned-method round-robin
end
依照不同入口介面給予不同 IP
如果公司有兩條外線,一條中華,一條遠傳,可以設計成中華進來的拿10.10.10.0,遠傳進來的拿 10.10.20.0
首先建立兩個新 Portal,Source IP Pools 請使用不同的 IP 範圍
先檢查那幾個編號使用過
show vpn ssl settings
config vpn ssl settings
set servercert "Fortinet_Factory"
set tunnel-ip-pools "SSLVPN_TUNNEL_ADDR1"
set tunnel-ipv6-pools "SSLVPN_TUNNEL_IPv6_ADDR1"
set dns-server1 10.1.1.1
set source-interface "port3"
set source-address "all"
set source-address6 "all"
set default-portal "full-access"
config authentication-rule
edit 1 # 請確認已使用的編號
set source-interface "port3"
set source-address "all"
set groups "SSLVPN_GROUP"
set portal "full-access"
next
end
end
開啟指令模式,使用 CLI 設定
config vpn ssl settings
config authentication-rule
edit 2 # 請使用新編號
set groups "SSL_GROUP" # 連線進來的本機帳號群組
set portal "first-portal" # 前面步驟新建的 Portal
set source-interface "port3" # 主要設定,限制不同介面使用不同 Portal
set source-address "all"
# 必要設定,設定 source-interface 後依定要設定,指定來源 IP,建議使用 all
next
edit 3
set groups "SSL_GROUP"
set portal "second-portal"
set source-interface "port4"
set source-address "all"
next
end
end
Split DNS
特定 Domain 使用指定的 DNS 進行解析
想像底下兩種狀況同時發生
當公司使用私人的網域名稱,如 mycom.local
DNS 指向公共的 DNS 主機會無法解析,因此需要在連上 SSL VPN 後,將 DNS 指到公司內
公司的 DNS 主機不能解析外部的網域名稱
上 google, youtube 這些網站,使用公司 DNS 無法解析,因此又不能將全部的網域交給公司 DNS 解析
當同時發生上面兩種狀況時,便需要一情況使用不同的 DNS,只有特定網域才使用公司 DNS,其他的網域使用公共 DNS 主機
設定方式分成 DNS 後綴 (suffix) 和指定 Domain
DNS 後綴 (suffix)
這種設定方式只能用 CLI
公司有非常多網址時,適合此種方式,但後綴都相同
如 www.mycom.local,mail.mycom.local 等, suffix 都是 mycom.local
config vpn ssl web portal
edit "full-access" # 這邊是 portal 的名稱
set dns-suffix mycom.local
set dns-server1 10.1.1.1
set dns-server2 10.1.1.2
next
end
指定 Domain
只有指定的網址才會進到公司解析
VPN -> SSL VPN Portals,建立新的或選擇以存在的 Portal
打勾 DNS Split Tunneling,並新增 DNS。
不同的 Domain 可以設定不同的 DNS 主機
SSL VPN 的路由
當 Clinet 成功建立 SSL VPN 後,Fortigate 會傳送新的路由進來,依照設定的不同,送進來的路由不同。
windows 可以用 route print 指令檢查即時路由
Linux 可用 ip route
分類有
- Fully Tunnel
全部的流量,包含上 youtube 等流量都會先回到公司,再從公司出去,優點是全部流量都會經過防火牆規則,缺點是會大大提高公司流量。 - Split Tunnel
只有指定的網段,其流量會走 VPN 回到公司,其他沒有指定的流量直接透由中華電信進到網際網路。現在的版本預設開啟 split tunnel,建議使用此方式。
Full Tunnel
全部流量都進公司
設定非常簡單,但不建議使用,會增加公司流量。
VPN -> SSL VPN Portals,建立新的或選擇以存在的 Portal
Split tunneling 選 Disabled
Split Tunnel
部分流量進公司,其他流量直接進網際網路不會經過公司,有三種設定情境
在 VPN -> SSL VPN Portals,建立新的或選擇以存在的 Portal
Enabled Based on Policy Destination 並且
Routing Address Override 留空
有 SSL VPN 的防火牆規則中,Destination 的位置會送到SSL VPN,,其他流量直接進到網際網路。
只有這個方法可以設定目的地路由地位置是 FQDN。只要在防火牆規則上的 Destination 使用 FQDN 即可,其他的 Split Tunnel 不支援 FQDN 的路由配置
PS: 走 SSL VPN 的意思是,流量會回到公司
Enabled Based on Policy Destination 並設定
Routing Address Override
Routing Address Override 的位置會送到SSL VPN,其他流量直接進到網際網路,建議使用此方式。
Enabled for Trusted Destinations 並一定要設定
Routing Address Override
剛好跟上面的相反,Routing Address Override 所指定的是送到網際路網,不在 Routing Address Override 內的通通送到 SSL VPN
建議的設定方式為,Enabled Based on Policy Destination
設定 Routing Address Override,裡面放公司的網段
DTLS (Datagram TLS)
Fortigate 的 TLS 使用 TCP 建立 SSL VPN 連線,並把原始的封包加密後放在 TLS 裡面,而原始封包如果也是 TCP,就會變成 TCP-in-TCP 的模式。
因為 TCP 有各種的錯誤檢查機制,有時可能是 TLS 的 TCP 出錯,有時候可能是包在裡面的 TCP 出錯,造成效率降低。
因此將 TLS 的 TCP 改成 UDP,這個技術就是 DTLS
設定 DTLS 分兩個部分,客戶端和伺服器端,兩邊都要設定才會生效
伺服器端 (Fortigate)
config vpn ssl setting
set dtls-tunnel enable
end
客戶端
打勾 Preferred DTLS Tunnel