VPN實戰(zhàn)1:構建SSL VPN
OpenVPN 是一個強大、高度可配置、基于SSL的 VPN (Virtual Private Network)Open Source 軟件。它具有多種的驗證方式以及許多強大的功能。OpenVPN使用SSL/TLS協(xié)議進行網(wǎng)絡傳輸。支持多種客戶認證方法,如證書、smart cards,加上用戶名密碼的證書認證等。除此以外,還有強大的ACL功能限制客戶的信息交換。
OpenVPN可以運行在多種操作系統(tǒng)中,包括:Linux, Windows 2000/XP and higher, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Solaris。通過使用OpenVpn,可以實現(xiàn)如下一些功能:
使用特定udp或tcp端口實現(xiàn)兩臺主機的之間的vpn連接。
實現(xiàn)C/S結構,實現(xiàn)多臺client通過server服務器互連互通。
通過TLS/SSL加密保證數(shù)據(jù)傳輸?shù)陌踩?/p>
通過數(shù)據(jù)的壓縮,提高數(shù)據(jù)傳輸?shù)乃俣取?/p>
安裝OpenVPN
企業(yè)級Linux版本的的安裝光盤中已經(jīng)自帶了OpenVPN的安裝程序,在系統(tǒng)安裝的時候,用戶可以選擇進行安裝。如果系統(tǒng)安裝時沒有安裝,用戶也可以隨時使用安裝盤進行安裝。為了確認系統(tǒng)是否已經(jīng)安裝該軟件,可以使用如下命令進行查看:
#rpm –qa | grep openvpn
制作證書
1.制作證書前的準備
復制openvpn證書工具包,在安裝完openvpn后,系統(tǒng)會在/etc下建一個openvpn的目錄,這樣我們可以把openvpn證書工具包拷貝到/etc/openvpn目錄下,需要注意如下幾個主要的存放位置:
證書工具包默認位置:/usr/share/openvpn/easy-rsa
準備配置證書位置:/etc/openvpn/
證書生成位置:/etc/openvpn/easy-rsa/2.0/keys
使用命令如下所示:
# cp -r /usr/share/openvpn/easy-rsa /etc/openvpn/
# mkdir /etc/openvpn/easy-rsa/2.0/keys
2.修改vars變量初始化配置文件
編輯easy-rsa/2.0/vars文件,需要進行如下幾個操作:
注釋掉export CA_EXPIRE=3650,在前面加個#號即可
注釋掉export KEY_EXPIRE=3650,在前面加個#號即可
修改證書默認值(如圖1中白色區(qū)域所示)
圖1 修改vars文件中的相應區(qū)域
#p#
3.初始化證書庫
主要包括初始化變量庫和清空變量庫兩個步驟,如下所示的命令:
//初始化變量庫
#./vars
//清空證書庫
#./clean-all
4.證書驗證機制
執(zhí)行如下命令,如圖2所示,在執(zhí)行過程中,輸入對應的信息,完成后在keys目錄下,會生成ca.crt和ca.key這兩個文件:
圖2 完成證書驗證機制
5.生成服務器證書
執(zhí)行./build-key-server server命令,執(zhí)行完成后在keys目錄下,會生成server.crt、server.csr和server.key這三個文件,如圖3所示:
圖3 生成服務器證書
6.生成客戶端證書
在openvpn中,這種配置方法是每一個登陸的VPN客戶端需要有一個證書,每個證書在同一時刻只能供一個客戶端連接(如果有兩個機器安裝相同證書,同時撥服務器,都能撥上,但是只有第一個撥上的才能連通網(wǎng)絡)。所以需要建立許多份證書。執(zhí)行./build-key vpn_client1命令將執(zhí)行完成后在keys目錄下,會生成vpn_client1.crt、vpn_client1.csr和vpn_client1.key這三個文件,如圖4所示:
圖4 為客戶端vpn_client1生成客戶端證書
一個服務器端可以配多個客戶端證書,但是每個客戶端都不能一樣,主要體現(xiàn)在Common Name這里,每一個客戶端的Common Name都必須不一樣,用戶可以再繼續(xù)建出多個客戶端證書,如下所示:
#./build-key vpn_client2
#./build-key vpn_client3
7.編譯證書
采用./build-dh命令將剛剛生成出來的證書和鑰匙等等進行了一次加密算法,然后證書和鑰匙都準備好了,此時在keys目錄下,會生成dh1024.pem文件。如圖5所示:
圖5 編譯證書
#p#
配置服務端
如果上面所述的七步都運行正常的情況下,用戶就開始配置服務端了,如果中間過程有出現(xiàn)什么問題,建議清空證書庫,重新來過,執(zhí)行./clean-all來清空庫即可。
配置客戶端需要執(zhí)行如下幾個步驟:
(1)首先把幾個證書、鑰匙和驗證機制都拷貝到/etc/openvpn目錄下,如下命令所示:
# cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt /etc/openvpn/
# cp /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem /etc/openvpn/
# cp /etc/openvpn/easy-rsa/2.0/keys/server.crt /etc/openvpn/
# cp /etc/openvpn/easy-rsa/2.0/keys/server.key /etc/openvpn/
(2)然后把服務器的配置文件拷貝到/etc/openvpn目錄下,如下所示:
# cp /usr/share/doc/openvpn-2.1/sample-config-files/server.conf /etc/openvpn/
(3)編輯/etc/openvpn/server.conf配置文件,去掉下述選項前面的;分號,以使其生效:
;user nobody
;group nobody
(4)啟動openvpn,查看一下端口1194是否已開放,如果1194已開放那就表明openvpn服務端已經(jīng)配置成功了,如下所示:
#/etc/init.d/openvpn start
(5)設置開機自啟動openvpn,使用如下命令,找到openvpn服務(如圖6所示),并選中服務確認即可,下次系統(tǒng)啟動的時候會自動加載openvpn服務:
#ntsysv
圖6 設置OpenVPN開機啟動
(6)設置防火墻,使得VPN流量能夠正常通過。在系統(tǒng)管理中,打開防火墻配置,開啟OpenVPN和SSH(前面打溝即可),如圖7所示:
圖7 設置防火墻
配置客戶端
配置客戶端vpn_client1需要使用源代碼包目錄sample-config-files里的client.conf 修改即可,如下片段所示:
client
dev tun
proto tcp
remote IP_address port
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca ca.crt
cert vpn_client1.crt。
key vpn_client1.key
#comp-lzo
其中,主要考慮如下幾個參數(shù)的設定:
proto tcp或proto udp:和server.conf 一致即可
remote IP_address port:指定vpn server 的IP 地址和端口
cert vpn_client1.crt和key vpn_client1.key:這2 行填給vpn_client1生成的密鑰文件
通過如上配置后,就可以使用OpenVPN進行安全通信了。