Posted by aionman on Jun 29, 2009 in
Networking

就算你的老闆出差到中國,也能透過SSL VPN 連回公司存取內部資料,甚至避開偉哉網路長城的封鎖,藉由香港的線路正常瀏覽新聞及相關網站。或許,有人會說為什麼不用PPTP VPN,我個人認為PPTP 其實沒有想像中方便,尤其對於一般使用來說,光找出連線設定恐怕就有一定的複雜度,更何況無法預期身處的網路環境是否允許PPTP 封包通過。
至於,啟用的設定方式也很簡單,記得三大原則:
● VPN 使用者及群組的設定
● 防火牆Policy 的設定
● 路由設定
當然,這次還是拿FG60B(FortiOS 3.0 MR7)當範例:
1) 到VPN -> SSL,啟用SSL VPN。參考上方的網路架構圖,設定Tunnel IP 範圍為「192.168.254.1 至 192.168.254.50」。
由於我假設的內部網路為網域環境,所以在進階設定的DNS及WINS Server,都指定AD主機的IP。實務上,如果公司同樣有網域環境,強烈建議設定成跟內部網路環境一樣,在網芳連線上也比較不會有問題。

2) 到User -> Local 新增使用者。

本範例為建立一個使用者「sslvpn」於本機上。記得..密碼要設定啊!

3) 到User Groups -> 新增群組。

範例所建立的群組名稱為「SSLVPN_GP」,設定SSL VPN 的Tunnel IP 範圍與先前設定一樣,為「192.168.254.1 至 192.168.254.50」。注意!類型需選擇「SSL_VPN」,並且將已經建立好的帳號「sslvpn」選取至Members 裡。
至於其他選項的功能,有興趣的人可以翻原廠文件:SSL VPN User Guide 3.0 MR7。

4) 到Firewall -> Policy ,新增相關Policy。依據最上方的網路架構及設想可能的用途,VPN 進來的用戶端及內部網路必須能互相溝通,而且VPN用戶端可透過該設備上網。所以必須增加下列Policy:
● Wan1 -> Internal。注意!「Action」的類型請務必選擇「SSL-VPN」,並且允許「SSLVPN_GP」群組可使用SSL VPN。
其實,這條Policy 就是攸關使用者能否透過https存取及登入的設定,沒有建立這條就啥都別談了。

● Internal -> ssl.root。「ssl.root」指的就是SSL VPN 的網路環境位置,故要讓內部網路能存取到VPN 用戶端的資源,則必須建立相關Policy。

● ssl.root -> Internal。這…不用特別解釋了吧…


● ssl.root -> Wan 1。這點要注意的是,因為SSL VPN 用戶端在撥入後,需要透過Fortigate上網,所以務必勾選「NAT」,不然你就在內部網路玩小圈圈就好了。
完成後,除了原本就有的「Internal -> wan 1」,一共增加了四條Policy。
5) 到Router -> Static,新增一筆Static Route。由於SSL VPN 的Tunnel IP Range 範例設定為192.168.254.[1-50],所以我就直接設定「192.168.254.0/255.255.255.0」。注意!Device 類別請記得選「ssl.root」。
你高興的話也可以不要新增啦,只是連上去會發現不能互通而已。

以上就算是完成所有設定。
接著進行測試,請先確認Fortigate 的外部IP及SSL VPN 的Login Port。

然後輸入「https://外部ip:10443」,就能看到登入畫面了。請記得加上「https」跟「埠號」,否則到死都連不上。

如果是初次登入,在登入後應該會跳出安裝ActivX 的要求。想連SSL VPN 的話,乖乖裝就對啦!

連接成功就會出現像下面這兩張圖一樣的訊息。


很讚吧!用HTTPS 網頁登入的方式就能完成SSL VPN 連線,就代表你的電腦只要能上網,就能輕鬆連回公司內部。
對~~關掉那個頁面,VPN 也就跟著斷了… 
所以,我個人強力推薦到Fortinet 技術支援網站下載SSL VPN 撥接軟體。(限定已註冊用戶)

撥接方式更為簡單,只要預設的SSL VPN Login Port 沒有更動(預設為10443), 輸入IP 後連埠號都無須輸入,再鍵入帳號密碼選「Connect」,就能連上SSL VPN 囉!

就算不小心點到「X」,也只會縮到右小角的工具列中。

上面教的步驟真的是快速設定,所以Policy 的Source 及Destination Address 都是設定「all」,而且連防護的Protection Profile 都沒加上。
如果對Fortigate 有一定熟悉度的人,我還是建議認真把相關防護設定好,不然哪天被玩很大就麻煩了。
下一篇再來討論「如何切割VPN通道」,也就是VPN 用戶端除了進公司內部網路的流量走VPN 通道,其餘都還是走原本的對外線路。應該沒人希望哪天老闆到荷蘭出訪看紅燈區的櫥窗女郎,上Internet 查資料時還要透過半個地球外的Fortigate 吧!?
相關參考文件:
Fortinet Knowledge Center - SSL VPN User Guide(簡體版)
Tags: Fortigate, SSL VPN
Posted by aionman on Jun 28, 2009 in
Networking

先簡單說明網路測試環境,否則後續圖解一定會看到眼花:
Z1 Network – 192.168.123.0/24
有Fortigate 60 設備(FortiOS v4.0.1 beta)
WAN IP: 123.123.123.123
Lan IP:192.168.123.254
Z2 Network – 192.168.1.0/24
有Fortigate 60B 設備(FortiOS v3.0 MR7)
WAN IP: domain.dyndns.org(外部採PPPoE 無固定IP,故申請免費的dyndns.org 服務以達成兩端即時連線)
Lan IP:192.168.1.252
理所當然,我們先從Z1 區的FG60 下手設定:
1) 設定FG60 的IPSEC Key。到VPN -> IPSec,選擇「Create Phase 1」。

為方便未來清楚設定,建議參考下圖命名為「Z1toZ2_Tunnel」,進階的部分用預設即可。但幾個地方要注意:
a. 由於Z2 區的Fortiagte 對外是使用浮動式IP,所以Remote Gateway 請選擇「Dymamic DNS」模式,「Dynamic DNS」欄位則輸入Z2 對外的DDNS 名稱。
b. 「Local Interface」是個很容易讓人誤會的設定,請選擇Fortigate 上對外連線VPN 的介面。因此範例是選擇「wan1」。
c. 「Pre-shared Key」的密碼設定至少為三個字元以上。範例是設定「123456」,到時候另一端的設備也需要設同一組密碼作溝通。

建立完「IPSEC Phase 1」,接著新增「Phase 2」

參考下圖將「Phase 2」命名為「Z1toZ2_phase2」,並記得選擇前面phase 1 所設定「Z1toZ2_Tunnel」;進階的部分用預設即可。(就說了是快速設定啊
)

Z1 端IPSEC 的設定完成如圖。

2) 到Firewall -> Address 新增兩組IP 網段。
請參考下圖,分別新增Z1(192.168.123.0/255.255.255.0)及Z2(192.168.1.0/255.255.255.0)的IP。

3) 到Firewall -> Policy 新增Internal -> Wan1 的Policy。
由於是Z1 到Z2 的設定,Source Address 當然要選擇Z1 的IP Address,Destination Address 則選擇Z2 的IP Address。要比較注意的是,Action 設定請記得選擇「IPSEC」,而VPN Tunnel 則選擇先前建立的「Z1toZ2_Tunnel」。

如果建立Policy 後,順序跟下圖一樣是後於「all to all」,請將調整於其之前。

如果以上步驟都確實完成,那麼Z1 端就算收工了,等於做完一半啦!

鏡頭轉到Z2 的FG60B 設定。以下步驟其實跟Z1 的設定幾乎一樣。
1) 到VPN -> IPSEC 新增FG60B 的IPSEC Key。一樣要先新增Phase 1,命名為「Z2toZ1_Tunnel」。而要注意的事項:
a. Z1 對外是使用固定IP,所以Remote Gateway 請選擇「Statics IP Address」模式,「IP Address」欄位則輸入Z1 對外的IP「123.123.123.123」。
b. 「Local Interface」請選擇擇「wan1」介面。
c. 「Pre-shared Key」的密碼必須跟Z1 端的IPSEC 設定一樣,所以請輸入「123456」。

新增Phase 2。不多講,看圖說故事。

完成Z2 端的IPSEC 設定。

2) 到Firewall -> address 新增兩組IP 網段。這部分跟Z1 端一樣。

3) 到Firewall -> Address 新增Internal -> Wan1 的Policy。
現在是Z2 到Z1 的設定,Source Address 請務必選擇Z2 的IP Address,Destination Address 則選擇Z1 的IP Address,不要搞混現在在哪裡設定啊。Action 設定別忘了選擇「IPSEC」,VPN Tunnel 則選擇「Z2toZ1_Tunnel」。

大功告成!

當然,照例要來個有圖有真相。從Z1 端的電腦直接Ping Z2 端的FG60B,會看到已經可以直接連接。不過,會發現第一次Ping 的時候似乎停頓1至1秒半的時間。

這是因為預設的IPEC VPN 不會主動建立連線,只有在Fortigate 發現內部有需要時才會開始連線(這算節能省碳嗎?),甚至在雙方達到一定時間且沒有流量時還會自動中斷VPN。
要解決這個問題,就是到IPSEC 的phase 2 設定找到進階選項,然後勾選「Autokey Keep Alive」。另外,從這裡可以發現「keylife」預設是30分鐘會換一次Key,如果又沒有勾選「Autokey Keep Alive」且沒有流量,設備就會因此停止VPN 連線。高興的話,也可以改一個小時甚至一天,就看你的安全考量;畢竟是透過Internet 傳輸IPSEC VPN,「keylife」時間越久就越有可能遭到有心駭客去破解。

認真研究起來,上面的設定其實不很難,難的是Fortinet 原廠提供的教學文件 - IPSec VPN User Guide 並沒有提供截圖,所以在閱讀上會有些困難。不過,一般企業會想到的應用幾乎都在文件裡出現,像是Redundant VPN、Hub and spoke 架構等等。如果資源夠的話,我會建議印出來閱讀,會比較容易從文件中抓出重點。
至於Site to Site IPSEC VPN 是否僅限定Fortigate 設備,其實不然!(假如連這都要綁標就太機車了…)原廠Knowledge Center 還提供了像是跟ZyXEL ZyWALL、SonicWall、Cisco PIX 等大廠設備,甚至連Microsoft ISA Server 都有的連線文件(詳情可參考Fortinet Knowledge Center 的 IPSec VPN interoperability 頁面),有需要的人可以上網參考看看喔!
Tags: Fortigate, IPSec, VPN