SSL VPN

使用Linux建置企業虛擬私有網路SSL VPN(下)

2012-02-03
在上集文章中,已詳細說明過VPN技術,並示範安裝OpenSUSE 11.4之後如何安裝並啟用OpenVPN,這裡將接著說明如何進行相關的細部說明,然後分別實作如何用openvpn-auth-pam驗證帳號密碼、使用LDAP做帳號密碼驗證,以及透過MySQL來驗證帳號密碼。
安裝好OpenSUSE作業系統及OpenVPN套件並成功啟動之後,整體的運作環境就已經建構好了。即使如此,如果想要持續正常運作,還必須進行一些使用前的預先設定才行。接下來,就來介紹這些重要的細部設定。

進行細部設定

接下來是較細部的設定。回到OpenVPN Server設定iptables,讓Client可以透過OpenVPN連到網際網路(Internet)。隨後,將OpenVPN Server的ip_forward打開,依序執行以下兩個指令:

請注意,第二個指令中的「-s 192.168.100.0/24」設定,須視使用者所設定的參數來變更。而「--to-source x.x.x.x」為OpenVPN Server eth0介面的IP,請自行變更IP或介面。

▲設定防火牆規則(Firewall Policy)。

建議將iptable寫成腳本(Script)放在開機啟動區域,就不怕重開機後iptable沒有啟用,該Script檔的內容如下:

以上的Script寫好之後,放到「/etc/init.d/boot.local」底下。可使用指令「sh firewall.sh」來執行該Script檔。

利用openvpn-auth-pam驗證帳號密碼

讀者可能會問:「只要製作完相關使用者的憑證後,就可以跟Server溝通,不用輸入任何帳號及密碼嗎?」當然不是這樣。

如果使用者想要再加入帳號和密碼驗證,那當然是可以,只不過必須加入相關的套件和設定檔。以下將介紹使用本機帳號做認證,或使用MySQL、LDAP認證時需要什麼套件及相關設定。

想要透過本機帳號和密碼做認證的話,需要使用openvpn-auth-pam-plugin套件。可上「http://rpm.pbone.net/」尋找這個套件,在搜尋欄內打入「openvpn-auth-pam-plugin」找尋相關套件。

因為本作業系統為OpenSUSE 11.4,所以必須找到符合該作業系統的套件,安裝時才不會有相容性的問題。

筆者找到的版本為openvpn-auth-pam-plugin-2.1.4-11.14.1.i586.rpm,剛好與本OpenVPN套件一模一樣。詳細下載網址如下:

ftp://ftp.pbone.net/mirror/ftp.opensuse.org/distribution/11.4/repo/oss/suse/i586/openvpn-auth-pam-plugin-2.1.4-11.14.1.i586.rpm

使用wget指令下載該套件安裝檔之後,直接使用指令「rpm -ivh openvpn-auth-pam-plugin-2.1.4-11.14.1.i586.rpm」安裝。

安裝完成後,在「/usr/lib/openvpn/plugin/lib」底下將會產生一個openvpn-auth-pam.so檔,如下圖所示。

▲安裝openvpn-auth-pam套件。

安裝完成後,接下來必須在Server和Client的設定檔配合之下才能生效。

▲使用本機帳號驗證之設定。

第一步先編輯Server的設定檔,使用指令為「vi /etc/openvpn/server.conf」。在該設定檔最下面加入如下的文字,如上圖所示。設定完畢,存檔離開。

第二步是編輯Client的設定檔。使用文字編輯器編輯client.ovpn。在設定檔最下面加入如下的文字。設定好了之後,存檔離開。

▲Client帳號驗證的設定。

接下來就是驗證的時候了。在Windows底下使用相同的連線步驟,應該就會出現如下頁圖示中的認證畫面。

其中的「Username」和「Password」欄位所須填入的就是OpenSUSE 11.4系統底下的使用者。至於建立使用者的相關指令及設定,就不再詳述,請依使用者需求自行建立。

▲Client帳號驗證。

使用LDAP做帳號密碼驗證

若想透過LDAP(openvpn-auth-ldap)做帳號和密碼認證,就需要openvpn-auth-ldap套件。先連結到網站「http://rpm.pbone.net/」,在搜尋欄內鍵入關鍵字「openvpn-auth-pam-plugin」找尋相關套件。

必須找到相符於OpenSUSE 11.4作業系統的套件,安裝時才不會出現其他相容性問題,但是在這裡筆者找不到相關的版本,不過卻找到一個剛好可以使用的版本,試著安裝此套件,結果可以相容,檔案名稱為openvpn-auth-ldap-2.0.3-6.el6.i686.rpm,其詳細下載網址如下:

ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/epel/6/i386/openvpn-auth-ldap-2.0.3-6.el6.i686.rpm

使用wget指令來下載檔案,然後用「rpm -ivh openvpn-auth-ldap-2.0.3-6.el6.i686.rpm」指令進行安裝。安裝完成後,會在「/usr/lib/openvpn/plugin/lib」目錄底下產生一個openvpn-auth-ldap.so檔。

在安裝過程中,曾經出現要求安裝相依套件的提示訊息,還好這些相依套件在光碟裡面都找得到,所以可以順利安裝好openvpn-auth-ldap套件。

接著進行設定的部分。LDAP設定的方式比較麻煩,設定方式也要設定好才會生效。首先使用文字編輯器編輯「/etc/openvpn/auth/ldap.conf」檔案,相關參數說明如下:

以上的設定方式僅為基本設定方式,有興趣者可以自行至官網查閱相關設定。再來編輯「/etc/openvpn/server.conf」檔。

開啟該檔案後,在最底下加入一行「plugin /usr/lib/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf」設定。記得將之前設定的本機驗證openvpn-auth-pam要拿掉。

編輯完成後存檔離開,然後重新啟動OpenVPN。再依之前所說的方式進行驗證即可。

使用MySQL做帳號及密碼驗證

如果想透過MySQL資料庫(openvpn-auth-ldap)來做帳號密碼驗證的話,需要安裝pam_mysql套件。此套件可以至「http://pam-mysql.sourceforge.net/」網站下載,檔案的下載網址為「http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz」。

檔案下載回來之後,使用指令「tar zxvf pam_ mysql-0.7RC1.tar.gz」解壓縮pam_mysql。解壓縮後,接著執行指令「./configure && make && make install」。安裝完成後,在「/lib/security/」目錄下會產生一個名為pam_mysql.so的檔案。

接著新增使用者至資料庫,請自行安裝MySQL Server),相關設定語法如下:

這裡要注意是,如果在前面已設定crypt=2,PASSWORD()的Function一定要加上去,不然會驗證失敗。設定好了之後,執行指令「exit」離開MySQL設定畫面。

然後,編輯「/etc/pam.d/openvpn」檔案。此檔案或許是一個新建的檔案,內容如下:(請注意,底下auth開頭為一行,account開頭為另一行)

筆者將以上設定中的參數大概說明一下,其中的「xxxx」部分是使用者可以自行修改的地方,而其他參數代表意義如下所述:

user:MySQL資料庫使用者。
passwd:MySQL資料庫使用者密碼。
host:MySQL主機IP如果主機在本機的話,就輸入「localhost」。
db:MySQL所建立要給VPN User使用的DB。
table:MySQL所建立要給VPN User使用的table。
crypt:「0」代表不加密,「1」是指使用crypt加密,「2」則是使用MySQL的PASSWORD()加密。在這裡,筆者採用「2」,直接使用MySQL的PASSWORD()加密,「0」不建議使用,因為是明碼。

安裝至此,應該已經大功告成,接下來就是測試驗證的時候了。測試驗證指令為「testsaslauthd –u user1 –p user1 –s openvpn」,按下〔Enter〕按鍵後應該會出現如下訊息:

如果沒有出現以上的訊息,則必須安裝cyrus-sasl-saslauthd套件,下載網址如下:

ftp://ftp.pbone.net/mirror/ftp.opensuse.org/distribution/11.4/repo/oss/suse/i586/cyrus-sasl-saslauthd-2.1.23-15.2.i586.rpm

安裝好cyrus-sasl-saslauthd套件之後啟動saslauthd,啟動指令為「rcsaslauthd start」。確定啟動saslauthd後,再次使用以上的指令測試,應該就可以成功。

雖然剛剛在本機驗證時使用到openvpn-auth-pam此套件,不過在MySQL驗證時,卻無法使用此套件來進行。

不過放心,筆者已測試過,使用openvpn-2.0.9底下所附加的套件可以成功驗證,請至官網下載openvpn-2.0.9.tar.gz,下載網址如下:

http://openvpn.net/release/openvpn-2.0.9.tar.gz

下載之後,使用指令「tar zxvf openvpn-2.0.9.tar.gz」進行解壓縮(剛剛在本機使用的openvpn-auth-pam並不需要移除)。

接著,將所在位置切換到「/openvpn-2.0.9/plugin/auth-pam/」目錄,並執行指令「make」,執行完畢會出現一個相同的模組名稱「openvpn-auth-pam.so」,將這個檔案拷貝至「/etc/openvpn/」底下,等一下會用到。

接著編輯「/etc/openvpn/server.conf」檔,加入以下這一行plugin,但記得將先前的設定標記起來,不要讓它被執行。

至此大功告成!讀者可以依之前的操作教學開啟OpenVPN的使用者視窗操作畫面,並使用剛在MySQL底下建立的使用者驗證。

參考網站:
·http://openvpn.net/index.php/open-source/documentation/howto.html
·http://www.opensuse.org/zh-tw/
·http://en.wikipedia.org/wiki/Virtual_private_network
·http://pam-mysql.sourceforge.net/
·http://rpm.pbone.net/


追蹤我們Featrue us

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

我知道了!