之前文章已經介紹過如何透過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/)分享一些實務上的經驗和測試心得。>