本文將繼續介紹如何在開源軟體pfSense上使用OpenVPN套件來建立Site-to-Site VPN(在兩部設備之間建立VPN連線),讓pfSense下的電腦都能輕易地透過VPN連線取得遠端的資源,而無須個別進行連線的動作。
pfSense相關設定:OpenVPN Client
這個步驟的目的是為了建立OpenVPN Client。先在Client端先點選VPN,再點選OpenVPN以及選擇Client,接著點選加號圖示,以新增一組Client。在Sever host or address欄位內,輸入Server端的WAN IP:203.70.228.5,如圖13所示。
|
▲圖13 設定OpenVPN Client的Server host or address。 |
接著將Automaticaly generate a shared TLS authentication key的勾選取消,並貼上之前所備份的Server端TLS Key。Client Certificate的部分,請選擇先前匯入的OpenVPNClient(CA: My OpenVPN CA),如圖14所示。
|
▲圖14 貼上TLS key並設定Client Certificate。 |
然後是Tunnel的設定,先在IPv4 Tunnel Network欄位填入與建立OpenVPN Server時相同的10.0.0.0/30,之後的IPv4 Remote Network/s部分填入Server的LAN IP網段:192.168.1.0/24,如圖15所示。
|
▲圖15 設定Tunnel網段。 |
pfSense相關設定:Firewall相關設定
在此階段將設定防火牆的規則,讓WAN介面可以接受OpenVPN的封包,並且將透過OpenVPN邏輯介面傳送的封包予以放行。
先點選Firewall選單裡面的Rules,並點選WAN,以及點選最上面的〔+〕號,新增一筆規則。而Protocol的設定,選擇下拉式選單內的TCP/UDP,如圖16所示。
|
▲圖16 設定WAN介面Firewall Rule。 |
接著,在Destination port range from部分選擇OpenVPN(to會自己變成OpenVPN),並按下〔Save〕按鈕存檔,如圖17所示。
|
▲圖17 設定Destination port range並存檔。 |
再點選上方選單的OpenVPN,並點選〔+〕號以新增一筆規則。接著找到Protocol部分,選擇下拉選單內的any,並按下〔Save〕按鈕進行存檔,如圖18所示。
|
▲圖18 設定OpenVPN Firewall Rule。 |
pfSense相關檢查:OpenVPN status
此時分別在Client和Server確認OpenVPN目前的狀態。在Client端點選Status裡面的OpenVPN,就可以看到相關的資訊,包含目前的狀態為up、連線建立的時間,以及虛擬IP和遠端IP等資訊。右上角的〔+〕號可以用來建立其他Server及Client,〔+〕號右邊的第二個像文件一樣的圖示,則可用來查看OpenVPN的Log,另外也可使用Status裡面的System Logs來加以查看,此功能在除錯上有很大的幫助,畫面擷圖如圖19所示。
|
▲圖19 查看Client端OpenVPN建立的狀態。 |
同樣地,在Server端亦可以查看OpenVPN建立的狀態。在Service右方的按鈕可以停止或重啟OpenVPN Service,如圖20所示。虛擬IP的部分,就如同之前建立Tunnel時設定的10.0.0.0/30,同時也可以看到遠端的IP為何。
|
▲圖20 查看Server端OpenVPN建立的狀態。 |
OpenVPN成果驗證
先在Client端準備了一台Cisco Router,並開啟其Web功能。再從Server端的電腦連入,測試能否開啟其網頁,驗證結果如圖21所示。透過192.168.2.2這個內部IP來進行連結,並且可以正常開啟其網頁。接著,telnet進入192.168.2.2,再ping回Server端的192.168.1.2,確認Client也可以連線至Server端的電腦,如下所示:
|
▲圖21 驗證OpenVPN連線是否成功建立。 |
此時使用Wireshark確認OpenVPN在建立和傳輸時的封包內容為何。圖22是Client發起建立VPN Tunnel時的封包,可以看出在Secure socket Layers的部分使用的是TLS,如此一來就可以確實增加其安全性。
|
▲圖22 確認及檢查OpenVPN封包內容。 |
最後,再查看實際傳輸資料時真實的資料是否受到保護。從192.168.1.2持續對192.168.2.2發起ICMP的封包,並以Wireshark觀察其內容,圖23是其輸出結果,可以看出資料已經被包在OpenVPN的封包裡,有心人士無法輕易地看出其中的內容。
|
▲圖23 以Wireshark查看傳輸時的封包內容。 |
<本文作者:丁光立,在ISP工作多年。對於Cisco設備較熟悉,除此之外也研究Linux,這幾年慢慢把觸角伸到資安的領域,並會在自己的blog(http://tiserle.blogspot.com/)分享一些實務上的經驗和測試心得。>