Raspberry OpenWRT Linux SSH VPN 樹莓派

實戰Raspberry Pi第三回 架設兩站間SSL VPN

2015-09-10
之前文章已經介紹過如何透過OpenWRT來建立Remote Access SSL VPN。本文將進一步介紹如何透過OpenWRT建立Site to Site的SSL VPN,並且會分別介紹如何在CLI介面及GUI介面中建立SSL VPN。
按下〔更多資訊〕按鈕,就會出現憑證資訊的視窗。緊接著按下〔檢視憑證〕按鈕,如圖8所示。


▲圖8 檢視憑證。

接著就可以看到憑證的相關訊息,在頁面的下方,就有需要的SHA1指紋,如圖9所示。


▲圖9 SHA1指紋內容。

將之複製下來後,將裡面的冒號(:)予以刪除,再貼回到圖4的VPN Server’s certificate SHA1 hash欄位內,並且按下〔Save〕進行儲存。

至此,使用帳號密碼認證的部分已經完成了,接著進行連線。回到Network → Interfaces,找到VPN的介面,並按下〔Connect〕按鈕,如圖10所示。


▲圖10 進行VPN連線。

連線建立後,可以至Server端進行連線驗證,並確認192.168.2.1可以連線,因此可以確認SSL VPN連線確實成功建立:


接著,要著手進行憑證的部分。Server端的設定,記得修改「/etc/ocserv/ocserv.conf.template」,從「auth = "|AUTH|"」改成「auth = "certificate"」,如果「ca-cert = /etc/ocserv/ca.pem」前方有#號,記得要刪除,並且存檔後重啟ocserv daemon(使用者憑證核發的部分,筆者於網管人八月號「樹莓派SSL VPN二部曲,捨棄密碼改用憑證更安全」一文已做介紹)。

為了便於讀者參考,以下是簡單的操作說明。首先,建立一個用戶的template檔,將其存放在「/etc/ocserv」目錄中,並命名為user.tmpl,其內容如下(這個檔案遵循X.509的格式):


這裡的cn = klting是刻意安排的設計,以便之後可以帶出Reverse Route,請自行代換為欲使用的使用者代碼。

接著要產生使用者的憑證檔,其檔名為user-cert.pem,並建立存放金鑰的user-key.pem這兩個檔案。以下為操作步驟:


隨即將CA及Server的template建立link至此目錄,以便之後產生使用者憑證時使用。

然後,建立user-key.pem檔案用以存放使用者的 金鑰:


產生金鑰檔之後,著手製作使用者的憑證檔user-cert.pem:


產生使用者憑證檔之後,先按下〔Stop〕按鈕,將Client端的VPN連線中斷。

接著點選Advanced Settings,會有User certificate (PEM encoded)、User key (PEM encoded)和CA certificate等幾個欄位需要填寫。其中CA certificate欄位可以不填寫,OpenWRT會在第一次進行連線時,從Server端取得後自行填入。

接著,依序將User certificate及User key填入,所對應的Server端檔案是user-cert.pem及user-key.pem,必須將Server端所核發的使用者相關憑證及金鑰檔內容填入。在填入時,有些人可能會覺得很奇怪,因為User key的格式與User Cert完全不同,但不需要懷疑,逕行貼入即可。

如果User Key的檔案太長不好貼入的話,可以使用scp將Server端的User Key檔直接複製到Client端的 「/etc/openconnect/user-key-vpn-VPN.pem」即可,指令如下:


完成後,同樣按下〔Connect〕進行連線。在連線建立後,回到Server端,檢查連線時是使用者的帳號密碼或者憑證進行連線:


此刻發現user及group的部分都是(none),因此可以確認目前是以憑證進行連線,而非帳號密碼進行 連線。

但由於未使用帳號密碼進行連線,因此也無法提供帳號給Server端,所以Client端192.168.2.0/24的網段就不會自動加在Server端的路由表中。

OpenConnect Server的Reverse Route是綁定在使用者或群組之設定檔裡面的iroute上,因此必須回頭修正「/etc/ocserv/ocserv.conf.template」 檔案。

找到cert-user-oid這一行,把它前面的#號刪除,並調整其內容為:


至於為何是2.5.4.3,可參考「https://technet.microsoft.com/en-us/library/cc772812%28WS.10%29.aspx」網頁內的說明。其實,2.5.4.3指的是取用"CommonName" (cn)的欄位,也可以依自己的需求進行調整。

接著,再將OpenConnect Server的daemon重啟。不久之後,OpenConnect的Client會自動建立連線,而預期的Reverse Route也就產生了,如圖11所示。


▲圖11 Server端順利產生Reverse Route。

結語

OpenConnect Server的功能相當強大,但其說明檔和網路上的範例相對不足,因此筆者特地花了很多時間做各種類型連線模式的介紹,在測試過程中也曾遭遇許多問題,所幸都能一一順利解決,希望這份文件可以協助各位讀者在實作時節省大量的時間。

<本文作者:丁光立,在ISP工作多年。對於Cisco設備較熟悉,除此之外也研究Linux,這幾年慢慢把觸角伸到資安的領域,並會在自己的blog(http://tiserle.blogspot.com/)分享一些實務上的經驗和測試心得。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!