您好,登錄后才能下訂單哦!
一、軟件說明
1、Openswan簡介
Openswan是Linux下IPsec的最佳實現方式,其功能強大,最大程度地保證了數據傳輸中的安全性、完整性問題。 openswan支持2.0、2.2、2.4以及2.6內核,可以運行在不同的系統平臺下,包括X86、X86_64、IA64、MIPS以及ARM。
Openswan是開源項目FreeS/WAN停止開發后的后繼分支項目,其分裂為兩個項目,Openswan與 Strongswan,Openswan由三個主要組件構成:配置工具(ipsec命令腳本)、Key管理工具(pluto)、內核組件(KLIPS/26sec)26sec使用2.6內核內建模塊Netkey,用來替代Openswan開發的KLIPS模塊,2.4及以下版本內核無Netkey模塊支持,只能使用KLIPS。如果你用的是2.6.9以上的內核,推薦使用26sec,可以不用給內核打Nat-T補丁就可以使用NAT,2.6.9以下版本內核的NETKEY存在Bug,推薦使用KLIPS。IPSec差不多是最老的×××標準了,她的依然很安全,當然是在配置好以后。言下之意,她的配置比較麻煩。本文下面將做說明。
因為FreeS/WAN已經在2004年三月停止開發,所以我們使用她的后繼項目Openswan來做我們的IPSec實驗。其相比FreeS/WAN有個好處,如果使用 26sec 的時候,Openswan不用打補丁,就可以用nat。
2、Openswan的安裝
因為IPSec工作在網絡層,所以需要系統內核態的支持,上面說過,有兩個選擇,用自帶(26sec)的或用Openswan(KLIPS)的,為了方便(如何打補丁和編譯內核不是本文討論的重點),本文使用CentOS源中編譯好的Openswan來進行實驗。# yum install openswan 如果你想從源碼安裝,到http://www.openswan.org/code 下載軟件包,然后按照包中的說明安裝。由于我們使用26sec,所以只要make programs;make install就可以搞定。值得注意的是,現在的Openswan已經內建些個好用的補丁,比如x.509和NAT Traversal的支持,使用起來非常的方便。你也可以用下面的命令來檢驗你的安裝。
# ipsec verify
3、Openswan的認證方式
Openswan支持許多不同的認證方式,包括 :
RSA keys、 (RSA Signature比較簡單)
pre-shared keys、
xauth或x.509證書方式。.
4、Openswan的連接方式:
1) Network-To-Network方式 本文重點是以此來完成企業需求的
Network-To-Network方式是把兩個網絡連接成一個虛擬專用網絡。當連接建立后,每個子網的主機都可透明地訪問遠程子網的主機。
要實現此種連接方式,要滿足以下兩個條件:
I. 每個子網各自擁有一臺安裝有OpenSWan的主機作為其子網的出口網關或者路由;
II.每個子網的IP段不能有疊加
(2)Road Warrior方式
當使用Network-To-Network方式時,作為每個子網網關的主機(openswan server)不能像子網內部主機那樣透明訪問遠程子網的主機,也就是說:如果你是一個使用LClient的移動用戶,經常出差或是在不同的地點辦公,你的LClient將不能用Network-To-Network方式與公司網絡進行連接。Road Warrior方式正是為這種情況而設計的,連接建立后,你的LClient就可以連接到遠程的網絡了。(或者使用SSL ***的開源產品open***來實現出差時候,遠程撥號訪問的需求)
更多詳情請參見OpenSWan項目主頁:http://www.openswan.org
5、本文將從以下幾點進行測試
net-to-net模型 **********
1)基于pre-shared keys認證方式(PSK)
2)基于RSA Signature認證方式(RSA數字簽名)
3)基于數字證書認證方式(x.509證書)
4)基于XAUTH認證方式(IPSec/Xauth PSK)
RoadWarrior
5)基于pre-shared keys認證方式(PSK)
6)基于RSA Signature認證方式(RSA數字簽名)
7)基于數字證書認證方式(x.509證書)
8)基于XAUTH認證方式(IPSec/Xauth PSK)
二、環境說明
1、網絡拓撲
2、實驗目的
本使用目的是為了實現client1和client2兩個不同地區不同子網的互通。即不同機房,不同網段的內網機器通信
3、實驗環境介紹
設備名稱
IP地址信息
所屬機房
北京 ***server1外網 eth0 192.168.2.48 橋接內網 eth2 192.168.183.1 VMnet1網關 192.168.2.1
上海 ***server2 外網eth0 192.168.2.111 橋接內網eth2 192.168.233.1 VMnet2網關 192.168.2.1client1 ---北京 eth0 192.168.183.44 VMnet網關 192.168.183.1 說明,我使用的是網關路由模式,是client機器通過此網關來通信 client2 ----上海 eth0 192.168.233.44 VMnet4 網關 192.168.233.1
我本地的網絡是192.168.2.0/24網段,為了讓×××Server可以上網,我這邊把×××Server的eht0設定到了192.168.2.0/24網段,并且網卡設定為橋接,其他的網絡安裝上面表格配置好,這樣我們就可以全部遠程操作了,把每個主機的主機名修改好,這樣便于我們觀察。
三、Openswan環境部署
1、開啟數據轉發 # vim /etc/sysctl.conf net.ipv4.ip_forward = 1 net.ipv4.conf.default.rp_filter = 0 2、關閉icmp重定向# sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print$1"= 0"}' >> /etc/sysctl.conf # sysctl -p 3、關閉SELinux# setenforce 0 4、安裝openswan (兩臺***serve上面都是同樣操作 # yum install openswan lsof -y # rpm -ql openswan //查看安裝了那些文件。 # ipsec --version //查看ipsec的版本 [root@***server1 etc]# ipsec --version Linux Openswan U2.6.32/K2.6.32-431.el6.x86_64 (netkey) See `ipsec --copyright' for copyright information. 這里并沒有加載任何的IPsec stack,當啟動IPsec后會自動加載系統自帶的netkey。 [root@***server1 etc]#service ipsec start [root@***server1 etc]# ipsec verify //對ipsec進行驗證(兩臺***serve上面都是同樣操作)
#################
重要說明,如果前邊的步驟沒做安裝文檔完成,匯報一下錯誤,導致接下來的未知錯誤
[root@localhost ~]# ipsec verify Checking your system to see if IPsec got installed and started correctly: Version check and ipsec on-path [OK] Linux Openswan U2.6.32/K(no kernel code presently loaded) Checking for IPsec support in kernel [FAILED] SAref kernel support [N/A] Checking that pluto is running [FAILED] whack: Pluto is not running (no "/var/run/pluto/pluto.ctl") Two or more interfaces found, checking IP forwarding [FAILED] whack: Pluto is not running (no "/var/run/pluto/pluto.ctl") Checking NAT and MASQUERADEing [OK] Checking for 'ip' command OK] Checking /bin/sh is not /bin/dash [OK] Checking for 'iptables' command [OK] cat: /etc/ipsec.d/examples/no_oe.conf: No such file or directory cat: /etc/ipsec.d/examples/no_oe.conf: No such file or directory Opportunistic Encryption Support
所以, 確保ipsec verify的結果都是如圖所示方可繼續接下來的配置
我們可以看到openswan監聽在UDP的500和4500兩個端口,其中500是用來IKE密鑰交換協商,4500的NAT-T是nat穿透的
四、Openswan配置(network-to-network)
1、基于pre-shared keys認證方式(PSK)
在***server1()上面作如下修改,里面的配置參數很多,大家可以參照man ipsec.conf里面的講解# vim /etc/ipsec.conf [root@melin etc]# grep -Ev '#|^$' ipsec.conf.psk config setup protostack=netkey nat_traversal=yes virtual_private= oe=off conn net-to-net ike=aes256-sha2_256;modp2048 phase2alg=aes256-sha2_256;modp2048 authby=secret type=tunnel left=192.168.2.48 leftsubnet=192.168.183.0/24 leftid=@test1 leftnexthop=%defaultroute right=192.168.2.111 rightsubnet=192.168.233.0/24 rightid=@test2 rightnexthop=%defaultroute auto=add /add代表只是添加,但并不會連接,如果為start則代表著啟動自動連接.
同樣在另一臺***server2上面配置和***sever1一樣的配置文件
即: scp ipsec.conf 192.168.2.111:/etc/ (兩臺***serve上面的ipsec.conf配置文件是一樣的)
[root@***server1 etc]# vim /etc/ipsec.secrets 192.168.2.48 %any 0.0.0.0 : PSK "123" 這個文件的格式為:“Local Ip address” “remote ip address” : PSK “your key” 在192.168.2.111(***server2)上面修改成如下 [root@***server2 etc]# vim /etc/ipsec.secrets 192.168.2.111 %any 0.0.0.0 : PSK "123" 重啟兩個***服務 # service ipsec restart然后啟動一下我們的con # ipsec auto --up net-to-net (此處由于ipsec.conf中auto=add,所以需要手動添加)
當我們看到ipsec sa estabilished,就證明我們連接成功了,也可以從中看到一些加密方法,密鑰交換參數,我們也可以在配置文件里面添加如下信息進行修改。(記得保持同步到***server2)
ike=aes256-sha2_256;modp2048
phase2alg=aes256-sha2_256;modp2048
然后在clinet1上面去ping對端子網的設備,可以看到如下,但是×××Server是不能ping通對方子網的設備的。
client1上的操作:
route add default gw 192.168.183.1
我們可以在任意×××Server網關上面抓包,查看數據信息
# tcpdump -i eth2 -nn
# tcpdump -i eth0 -nn
其中ESP(Encapsulating Security Payload)就是加密數據。
echo request
echo reply
表明既可以發送請求,也可以收到回應包
測試通過后,可以把連接配置中 auto=add
更改為: auto=start
這樣當Openswan啟動時就可自動進行連接。
到此我們net-to-net基于psk模式的×××就搭建成功了。
########################################################################################
二、基于RSA Signature認證方式(RSA數字簽名)
注:因為我是接著上面的實驗進行操作,一直有問題無法解決,后來重新安裝了一下,安裝下面的流程一次就成功了。
openswan的安裝方式同本文剛開始安裝一樣,下面我們主要講解配置的不同。
下面提到的L-Server指的是192.168.2..48(×××Server1), R-Server指的是192.168.2.111(×××Server2)。 在L-Server上面進行如下操作生成一個新的RSA密鑰對 # ipsec newhostkey --output /etc/ipsec.secrets(可以先不操作)因為這個生成過程太過緩慢,我們使用下面方面進行加速生成 # rm -rf /dev/random# ln -s /dev/urandom /dev/random # ipsec newhostkey --output /etc/ipsec.secrets 在R-Server上面執行一遍 # rm -rf /dev/random# ln -s /dev/urandom /dev/random # ipsec newhostkey --output /etc/ipsec.secrets 在L-Server上執行ipsec showhostkey --left得到L-Server的公鑰 # ipsec showhostkey --left
在R-Server上執行ipsec showhostkey --right得到R-Server的公鑰
# ipsec showhostkey --right
請記住這兩個key,后面會用到,也可以使用重定向加到配置文件里面
L-Sserver:
編輯/etc/ipsec.conf文件
# vim /etc/ipsec.conf
# scp /etc/ipsec.conf 192.168.2.111:/etc (同步到R-server上)
# service ipsec restart
# ipsec auto --up net-to-net
當我們看到ipsec sa estabilished,就證明我們連接成功了
測試通過后,可以把連接配置中 auto=add
更改為: auto=start
# service ipsec restart
測試:
在一端client1去ping另一端的客戶機client2,然后我們在***server上面抓包查看。
我們可以在任意×××Server1網關上面抓包,查看數據信息
# tcpdump -i eth2 -nn
# tcpdump -i eth0 -nn
此時一切測試成功之后
# chkconfig ipsec on
基于RSA Signature認證方式(RSA數字簽名)搭建完畢。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。