實驗8 IPSec 之虛擬私有網

Download Report

Transcript 實驗8 IPSec 之虛擬私有網

實驗 8:IPSec 之虛擬私有網路之建置
國立雲林科技大學
自由軟體研發中心
實驗 8:IPSec 之虛擬私有網路之建置
實驗目的

核心
本實驗使用自由軟體OpenSwan來架設一IPSec
的虛擬私有網路。藉由此實驗讓同學對於
IPSec有更深一層的體驗。
• IPSec相關協定
• 密碼套件

安裝
• IPSec-tools、OpenSwan
• L2TP、PPP
設定
• OpenSwan設定通道 (ipsec.conf)
• 設定認證方式與密碼
驗證
實驗目的
• 驗證OpenSwan(ipsec)是否正確
安裝
實驗架構
本實驗VPN雙端的裝置作業系統為


Gentoo Linux
Windows XP
為了讓客戶端使用最簡易的方式來建立VPN的
連線,本實驗所採用的VPN類型如下:
 Remote access VPN
 L2TP/IPSec VPN
 IPSec認證方式使用pre-share key
採用上列類型實作出的VPN,客戶端無論身在
何地,只要擁有合法的身份,即可使用VPN來
做存取資料。
VPN伺服器設定流程
國立雲林科技大學 自由軟體研發中心
2
實驗 8:IPSec 之虛擬私有網路之建置
Openswan介紹

Openswan介紹
Openswan 是一套基於ipsec的Linux工具,
它的前身就是Freeswan(目前已停止開發),
本實驗我們使用OpenSwan實作IPSec VPN。
Openswan可以用來與多種不同的裝置連
成VPN,以site-to-site建成VPN為例,兩
個端點同為openswan的話,各種類型的
ipsec都可以使用,另一種情況是,一端
為openswan所架構的VPN 伺服端用來為
windows vpn 客戶端來連線;或是與廠商所
販售的路由器或防火牆等的裝置連接,因
此,Openswan成為目前opensource軟體中
用來建置ipsec的主流軟體。
OpenSwan 官方網站
國立雲林科技大學 自由軟體研發中心
3
實驗 8:IPSec 之虛擬私有網路之建置

安裝L2TP、PPP
在核心中加入IPSec相關的協定
在使用IPSec之前,先檢查看看Linux核心是否有支援以下的選項。我們需要將以
下選項編譯為模組。
Networking support --->
Networking options --->
<M> PF_KEY socket
[*] TCP/IP networking
<M> IP: AH transformation
<M> IP: ESP transformation
<M> IP: IPComp transformation
<M> IPsec user configuration interface
[*] Network device support
<M> PPP (point-to-point protocol) support
<M> PPP support for async serial ports
<M> PPP support for sync tty ports
<M> PPP Deflate compression
<M> PPP BSD-Compress compression
<M> PPP over Ethernet (EXPERIMENTAL)
Device Drivers --->
Character devices --->
[*] Legacy (BSD) PTY support
國立雲林科技大學 自由軟體研發中心
4
實驗 8:IPSec 之虛擬私有網路之建置

安裝L2TP、PPP
在核心中加入IPSec相關密碼套件
IPSec使用了相當多種的加解密演算法,因此在核心選項中也要將這些演算法與前
頁的一併編譯成模組加到核心中。
Cryptographic options --->
--- Cryptographic API
--- HMAC support
<M> Null algorithms
<M> MD4 digest algorithm
<M> MD5 digest algorithm
<M> SHA1 digest algorithm
<M> SHA256 digest algorithm
<M> SHA384 and SHA512 digest algorithms
<M> DES and Triple DES EDE cipher algorithms
<M> Blowfish cipher algorithm
<M> Twofish cipher algorithm
<M> Serpent cipher algorithm
<M> Deflate compression algorithm
國立雲林科技大學 自由軟體研發中心
5
實驗 8:IPSec 之虛擬私有網路之建置
安裝L2TP、PPP

安裝範例
#安裝PPP
emerge pppd
#安裝l2tp
emerge xl2tpd
#安裝ipsec-tools
emerge ipsec-tools
核心加入上述IPSec功能選項編譯完成之
後,就可以開始安裝本實驗所需要的軟體
套件,由於此VPN實作類型為L2TP/IPSec,
因此才需要安裝下列套件,如果單純為
IPSec VPN的話,就不需要安裝L2TP與
PPP協定的套件。
 安裝PPP
L2TP了連線是基於PPP協定之上,因
此為了安裝L2TP還要安裝PPP協定。
使用下列指令安裝
emerge pppd
 安裝L2TP
使用下列指令安裝
emerge xl2tpd
 安裝IPSec-tools
使用下列指令安裝
emerge ipsec-tools
國立雲林科技大學 自由軟體研發中心
6
實驗 8:IPSec 之虛擬私有網路之建置
L2TP設定範例

[global]
listen-addr = 140.125.32.19
port = 1701
auth file=/etc/ppp/chap-secrets
[lns default]
ip range = 192.168.123.1-192.168.123.20
local ip = 192.168.123.254
length bit = yes
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPN
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
圖1
設定L2TP
設定L2TP.conf
L2TP.conf設定的範例如左圖:
[global]區域是本機(伺服端)的資訊,要注
意的是L2TP所使用的port是固定的(UDP
1701)。
[lns]區塊的設定是給客戶端連線使用的
,圖1為客戶端的對照圖。
 auth file=/etc/ppp/chap-secrets 指定此
檔為認證檔案。
 ip range為伺服端發配給客戶端使用
的IP。
 local ip指的是VPN伺服端用來與客
戶端連線的一個窗口,他必須不存
在ip range中,且要與ip range為同一
網域。
其餘的設定套用就可以了。
國立雲林科技大學 自由軟體研發中心
7
實驗 8:IPSec 之虛擬私有網路之建置
設定OpenSwan-ipsec.conf

PPP設定範例
ipcp-accept-local
ipcp-accept-remote
ms-dns 140.125.252.1
noccp
auth
crtscts
idle 1800
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
silent
設定/etc/ppp/options.l2tp
L2TP的連線是基於PPP構成的,因此要
設定PPP連線的設定。文件中的參數可使
用man pppd來查看。這裡的設定是在客
戶端完成VPN連線之後的組態設定。




ipcp-accept-local
接受撥入方提供的IP地址
ipcp-accept-remote
將接受撥入方自己的IP地址
ms-dns
DNS位址
Crtscts
硬體流程控制
國立雲林科技大學 自由軟體研發中心
8
實驗 8:IPSec 之虛擬私有網路之建置
安裝OpenSwan
#安裝OpenSwan
emerge openswan
安裝OpenSwan

安裝OpenSwan
用下列指令安裝OpenSwan
emerge openswan

設定OpenSwan
設定IPSec相關文件如下

#openswan相關文件
ipsec.conf (/etc/ipsec/ipsec.conf)
設定ipsec主要的檔案
ipsec.secret (/etc/ipsec/ipsec.secret)
用來存放vpn認證所需的資料

ipsec.conf (/etc/ipsec/ipsec.conf)
此檔案中要設定ipsec的各項類型,主要
是要設定各個通道所要執行的加密方式
、ipsec的模式與金鑰交換的方式…等。
ipsec.secret (/etc/ipsec/ipsec.secret)
此檔案中會放置認證的相關資料,例如
:本實作是使用pre-share key來做認證,
則此檔案中要設定pre-share key為何,若
是採用證書的方式做認證的話,則證書
要設定在此檔案中,其他認證方式亦同
。
國立雲林科技大學 自由軟體研發中心
9
實驗 8:IPSec 之虛擬私有網路之建置
設定OpenSwan-ipsec.conf

config setup
# ipsec基本設定區塊
interfaces=ipsec0=eth0
klipsdebug=none
plutodebug=none
overridemtu=1410
nat_traversal=yes
virtual_private=%v4:192.168.123.0/24
conn %default
#各個通道的預設設定區塊
keyingtries=3
compress=yes
disablearrivalcheck=no
authby=secret
#表認證的資料在ipsec.secret
type=tunnel
# ipsec通道模式
keyexchange=ike
ikelifetime=240m
keylife=60m
設定OpenSwan-ipsec.conf
ipsec.conf的設定格式要注意,若格式錯
誤ipsec不會成功開啟。此檔案的編寫是
整個IPSec的主要核心,在此分為兩個部
分來解說。本頁解說IPSec的基本設定與
各個通道的預設設定區塊。
 Config setup
config setup是ipsec service 基本設定
config和conn都是設定區塊的起始行
其下的設定參數都要用空格或 Tab
內縮編排,否則 service ipsec start 時
會出現錯誤訊息。
 Conn %fault
每一段conn起頭的區塊就好比是程
式中的副程式一般,在這個指的就
是客戶端連線的條件為何,就為他
建立何種通道。
conn %default 是各通道 (tunnel) 的
共通設定若不設定 conn %default 可
將本區塊裡的設定值分別寫入各通
道的區塊中。
國立雲林科技大學 自由軟體研發中心
10
實驗 8:IPSec 之虛擬私有網路之建置
設定OpenSwan-ipsec.conf

conn roadwarrior-l2tp # for windows vpn client
leftprotoport=17/1701
rightprotoport=17/1701
also=roadwarrior
conn roadwarrior
pfs=no
#是否使用Perfect Forward Secrecy
left=%defaultroute
right=%any
rightsubnet=vhost:%no,%priv
auto=add
設定OpenSwan-ipsec.conf
本頁述敘的是remote-vpn的設定方式,在conn
後面的命名都可以隨意設定,但在大多數的文
件中roadwarrior指得是客戶端沒有使用固定的
IP來連上VPN伺服器。當然也無須要跟文件中
的命名相同。
 left為本機位址
left=%defaultroute
 right為遠端位址
right=%any,%any表任何IP都可連。
 leftprotoport=17/1701
開啟udp=17/port=1701傾聽連線
 also=roadwarrior
also的功能,就類似副程式跳躍,當有遠
端主機使用17/1701連上伺服器時,即套
用conn roadwarrior中的設定。
 Auto=add
ipsec.conf預設為ignore,add表示自動配
置此檔案。
國立雲林科技大學 自由軟體研發中心
11
實驗 8:IPSec 之虛擬私有網路之建置
設定OpenSwan-ipsec.secret

ipsec.secret
140.125.32.19 %any: PSK “what are you doing now"
設定OpenSwan-ipsec.secret


位址
/etc/ipsec/ipsec.secret
內容
填寫建立VPN時所需要的認證元件(如:
金鑰、憑證、pre-share key)。
OpenSwan相當注重設定檔的格式,以設
定Pre-share key為例,格式如下:
ipsec.secret(三種認證方式設定範例)
伺服端IP□客戶端IP:□PSK□”pre-share key”
(其中,□為空格)
由於IPSec認證的方式有三種,在左圖列
出了三種認證方式的格式為何,供大家
參考。
資料來源: OpenSwan 官方網站 http://wiki.openswan.org
國立雲林科技大學 自由軟體研發中心
12
實驗 8:IPSec 之虛擬私有網路之建置
設定OpenSwan-ipsec.secret

設定chap.secret

伺服端的chap.secrets設定
# Secrets for authentication using CHAP
# client
server
secret
IP addresses
es602
*
“test"
192.168.123.0/24

圖1

位址
/etc/ppp/chap.secret
內容
放置使用者層級的帳戶。
此檔案放置使用者層級的帳號及密碼,
當客戶端欲建立L2TP/IPSec時,除了要
有正確的pre-share key之外還要有使用者
層級的身分驗證,設定的格式如左圖所
示。
圖1所示的即為客戶端的使用者層級的帳
號與密碼。
MS-CHAP身分驗證
為 微 軟 公 司 擴 展 CHAP 而 成 的 , MSCHAP是建構在PPP協定之下,使用MD4
及DES進行認證。
國立雲林科技大學 自由軟體研發中心
13
實驗 8:IPSec 之虛擬私有網路之建置
驗證IPSec

驗證IPSec
用下列指令驗證OpenSwan/IPSec是否安
裝成功用以下指令
ipsec verify
如果驗證的結果有問題,可以由以下的
log檔案來除錯。
/var/log/everything/current
/var/log/ppp/current
驗證OpenSwan是否正確安裝
國立雲林科技大學 自由軟體研發中心
14
實驗 8:IPSec 之虛擬私有網路之建置
VPN客戶端 連線

新增
• 設定伺服器IP

設定
• 設定VPN類型
• 設定認證金鑰
VPN客戶端連線
此實驗中,我們使用Windows XP作業系
統與VPN Server進行連線。
由於作業系統本身對於VPN的支援,所
以設定較為簡易。L2TP使用UDP 1701埠
,因此如果在配置上有問題,客戶端要
注意防火牆是否有擋掉此連接埠。
本實驗將VPN客戶端連線流程分為三個
部分:


連線
• 輸入使用者層級的帳密
• 連線

第一部分是”新增”:主要是用來新增一個
VPN客戶端的連線。
第二部份是”設定”:是用來設定VPN類型
以及相關的認證方式。
最後一個部分是”連線”:在設定完VPN之
後,在連線的過程中,會驗證使用者層
級的帳號密碼,確認為合法的使用者之
後,就可以成功建立VPN連線, 。
VPN客戶端設定流程
國立雲林科技大學 自由軟體研發中心
15
實驗 8:IPSec 之虛擬私有網路之建置
1. 新增一個連線精靈
3. 選擇如圖的選項,然後下一步
VPN客戶端 新增
2. 選擇如圖的選項,然後下一步
4.此步驟的名稱可以隨便打,是為此連線的名稱
5.輸入VPN伺服器的IP
6.按下完成即完成連線
國立雲林科技大學 自由軟體研發中心
16
實驗 8:IPSec 之虛擬私有網路之建置
VPN客戶端 設定
2.一般預設的VPN類型為PPTP,因此要記得改回L2TP IPSec
1. 如圖選擇內容來設定
3. 在”安全性標籤”中找到
來設定pre-share key。
鈕,
4. 在”安全性標籤”中選擇”進階”,設定如圖。
國立雲林科技大學 自由軟體研發中心
17
實驗 8:IPSec 之虛擬私有網路之建置

VPN客戶端 連線
連線
VPN客戶端最後一個步驟-連線。輸入合法的帳號及密碼之後,按下連線紐,若無錯誤即
可連線成功。下圖的步驟2是成功連線的內容,內容顯示出,VPN客戶端從VPN 伺服端所
配置到的private IP位址以及IPSec所採用的加密方式為何。
在下一頁,我們將要驗證VPN客戶端所收到的封包是否有經過加密。
1. 如圖鍵入正確的使用者名稱及密碼
2. 成功連線後的結果內容
國立雲林科技大學 自由軟體研發中心
18
實驗 8:IPSec 之虛擬私有網路之建置

驗證IPSec
驗證IPSec
在完成VPN的連線之後,我們在VPN的客戶端使用封包擷取軟體來觀察封包的型態為何。
擷取出的封包如下圖所示,IP位址140.125.32.19為VPN的伺服端,140.125.32.235為VPN的
客戶端,所有的封包都是經由ESP加密過的。此結果代表VPN建置成功。
國立雲林科技大學 自由軟體研發中心
19
實驗 8:IPSec 之虛擬私有網路之建置

總結
總結
VPN的方式及種類都相當多樣化,本實驗說明如何架設以L2TP/IPSec為基礎的
VPN,此種方式讓VPN客戶端能方便的設定及使用。
本實驗難度在於VPN伺服器的架設,對於Linux系統不熟悉的使用者,在實作之
前,要先熟悉Linux系統一些基本的指令。另外,在架設VPN伺服器的過程中,
善用系統log來除錯可大大節省架設時間。
雖然只需要熟悉指令以及openswan的文件就可以完成架設,但是若不懂IPSec、
L2TP、VPN原理,對於openswan文件上的名詞一定是懵懵懂懂的,VPN連線的
流程不了解的話,在除錯的過程之中也一定是倍感艱辛。如果想要事半功倍的
完成此次的實作,務必要理論與實務並用。
對於VPN有興趣的使用者或是想要進一步的了解site-to-site VPN或是其他VPN上
的認證方式,可以參考OpenSwan官方網站上的資料。
國立雲林科技大學 自由軟體研發中心
20
實驗 8:IPSec 之虛擬私有網路之建置



參考資料
OpenSwan (http://wiki.openswan.org)。
鳥哥的私房菜 (http://linux.vbird.org/)。
Gentoo Linux (http://www.gentoo.org/)。
國立雲林科技大學 自由軟體研發中心
21