溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)

發(fā)布時間:2020-07-06 02:51:22 來源:網(wǎng)絡(luò) 閱讀:2301 作者:crazy_charles 欄目:網(wǎng)絡(luò)安全

一、軟件說明
1、Openswan簡介   

 Openswan是Linux下IPsec的最佳實(shí)現(xiàn)方式,其功能強(qiáng)大,最大程度地保證了數(shù)據(jù)傳輸中的安全性、完整性問題。   openswan支持2.0、2.2、2.4以及2.6內(nèi)核,可以運(yùn)行在不同的系統(tǒng)平臺下,包括X86、X86_64、IA64、MIPS以及ARM。   

 Openswan是開源項(xiàng)目FreeS/WAN停止開發(fā)后的后繼分支項(xiàng)目,其分裂為兩個項(xiàng)目,Openswan與 Strongswan,Openswan由三個主要組件構(gòu)成:配置工具(ipsec命令腳本)、Key管理工具(pluto)、內(nèi)核組件(KLIPS/26sec)26sec使用2.6內(nèi)核內(nèi)建模塊Netkey,用來替代Openswan開發(fā)的KLIPS模塊,2.4及以下版本內(nèi)核無Netkey模塊支持,只能使用KLIPS。如果你用的是2.6.9以上的內(nèi)核,推薦使用26sec,可以不用給內(nèi)核打Nat-T補(bǔ)丁就可以使用NAT,2.6.9以下版本內(nèi)核的NETKEY存在Bug,推薦使用KLIPS。IPSec差不多是最老的×××標(biāo)準(zhǔn)了,她的依然很安全,當(dāng)然是在配置好以后。言下之意,她的配置比較麻煩。本文下面將做說明。 
 因?yàn)镕reeS/WAN已經(jīng)在2004年三月停止開發(fā),所以我們使用她的后繼項(xiàng)目Openswan來做我們的IPSec實(shí)驗(yàn)。其相比FreeS/WAN有個好處,如果使用 26sec 的時候,Openswan不用打補(bǔ)丁,就可以用nat。
2、Openswan的安裝  

  因?yàn)镮PSec工作在網(wǎng)絡(luò)層,所以需要系統(tǒng)內(nèi)核態(tài)的支持,上面說過,有兩個選擇,用自帶(26sec)的或用Openswan(KLIPS)的,為了方便(如何打補(bǔ)丁和編譯內(nèi)核不是本文討論的重點(diǎn)),本文使用CentOS源中編譯好的Openswan來進(jìn)行實(shí)驗(yàn)。# yum install openswan    如果你想從源碼安裝,到http://www.openswan.org/code  下載軟件包,然后按照包中的說明安裝。由于我們使用26sec,所以只要make programs;make install就可以搞定。值得注意的是,現(xiàn)在的Openswan已經(jīng)內(nèi)建些個好用的補(bǔ)丁,比如x.509和NAT Traversal的支持,使用起來非常的方便。你也可以用下面的命令來檢驗(yàn)?zāi)愕陌惭b。
# ipsec verify
3、Openswan的認(rèn)證方式   
Openswan支持許多不同的認(rèn)證方式,包括 :

RSA keys、   (RSA Signature比較簡單)

pre-shared keys、

xauth或x.509證書方式。.


4、Openswan的連接方式:
1)  Network-To-Network方式   本文重點(diǎn)是以此來完成企業(yè)需求的

   Network-To-Network方式是把兩個網(wǎng)絡(luò)連接成一個虛擬專用網(wǎng)絡(luò)。當(dāng)連接建立后,每個子網(wǎng)的主機(jī)都可透明地訪問遠(yuǎn)程子網(wǎng)的主機(jī)。

要實(shí)現(xiàn)此種連接方式,要滿足以下兩個條件:  

  I. 每個子網(wǎng)各自擁有一臺安裝有OpenSWan的主機(jī)作為其子網(wǎng)的出口網(wǎng)關(guān)或者路由; 

  II.每個子網(wǎng)的IP段不能有疊加

(2)Road Warrior方式  

  當(dāng)使用Network-To-Network方式時,作為每個子網(wǎng)網(wǎng)關(guān)的主機(jī)(openswan server)不能像子網(wǎng)內(nèi)部主機(jī)那樣透明訪問遠(yuǎn)程子網(wǎng)的主機(jī),也就是說:如果你是一個使用LClient的移動用戶,經(jīng)常出差或是在不同的地點(diǎn)辦公,你的LClient將不能用Network-To-Network方式與公司網(wǎng)絡(luò)進(jìn)行連接。Road Warrior方式正是為這種情況而設(shè)計(jì)的,連接建立后,你的LClient就可以連接到遠(yuǎn)程的網(wǎng)絡(luò)了。(或者使用SSL ***的開源產(chǎn)品open***來實(shí)現(xiàn)出差時候,遠(yuǎn)程撥號訪問的需求)

   更多詳情請參見OpenSWan項(xiàng)目主頁:http://www.openswan.org
5、本文將從以下幾點(diǎn)進(jìn)行測試
net-to-net模型  **********
1)基于pre-shared keys認(rèn)證方式(PSK)
2)基于RSA Signature認(rèn)證方式(RSA數(shù)字簽名)
3)基于數(shù)字證書認(rèn)證方式(x.509證書)
4)基于XAUTH認(rèn)證方式(IPSec/Xauth PSK)
RoadWarrior
5)基于pre-shared keys認(rèn)證方式(PSK)
6)基于RSA Signature認(rèn)證方式(RSA數(shù)字簽名)
7)基于數(shù)字證書認(rèn)證方式(x.509證書)
8)基于XAUTH認(rèn)證方式(IPSec/Xauth PSK)


二、環(huán)境說明
1、網(wǎng)絡(luò)拓?fù)?/span>

CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)


2、實(shí)驗(yàn)?zāi)康?/span>


  本使用目的是為了實(shí)現(xiàn)client1和client2兩個不同地區(qū)不同子網(wǎng)的互通。即不同機(jī)房,不同網(wǎng)段的內(nèi)網(wǎng)機(jī)器通信


3、實(shí)驗(yàn)環(huán)境介紹 
設(shè)備名稱
IP地址信息
所屬機(jī)房

北京
***server1外網(wǎng)   eth0  192.168.2.48     
橋接內(nèi)網(wǎng)         eth2  192.168.183.1     
VMnet1網(wǎng)關(guān)            192.168.2.1
上海
***server2
外網(wǎng)eth0  192.168.2.111     
橋接內(nèi)網(wǎng)eth2  192.168.233.1     
VMnet2網(wǎng)關(guān)     192.168.2.1client1    


---北京
eth0      192.168.183.44   
VMnet網(wǎng)關(guān)      192.168.183.1     
說明,我使用的是網(wǎng)關(guān)路由模式,是client機(jī)器通過此網(wǎng)關(guān)來通信



client2    ----上海
eth0       192.168.233.44   VMnet4
網(wǎng)關(guān)       192.168.233.1


     

我本地的網(wǎng)絡(luò)是192.168.2.0/24網(wǎng)段,為了讓×××Server可以上網(wǎng),我這邊把×××Server的eht0設(shè)定到了192.168.2.0/24網(wǎng)段,并且網(wǎng)卡設(shè)定為橋接,其他的網(wǎng)絡(luò)安裝上面表格配置好,這樣我們就可以全部遠(yuǎn)程操作了,把每個主機(jī)的主機(jī)名修改好,這樣便于我們觀察。


三、Openswan環(huán)境部署

1、開啟數(shù)據(jù)轉(zhuǎn)發(fā)
# vim /etc/sysctl.conf
 net.ipv4.ip_forward = 1
 net.ipv4.conf.default.rp_filter = 0
2、關(guān)閉icmp重定向# sysctl -a | egrep "ipv4.*(accept|send)_redirects" | awk -F "=" '{print$1"= 0"}' >> /etc/sysctl.conf
# sysctl -p
3、關(guān)閉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,當(dāng)啟動IPsec后會自動加載系統(tǒng)自帶的netkey。
[root@***server1 etc]#service ipsec start
[root@***server1 etc]# ipsec verify    //對ipsec進(jìn)行驗(yàn)證(兩臺***serve上面都是同樣操作)


CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)

#################

重要說明,如果前邊的步驟沒做安裝文檔完成,匯報(bào)一下錯誤,導(dǎo)致接下來的未知錯誤

[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的結(jié)果都是如圖所示方可繼續(xù)接下來的配置

CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)


我們可以看到openswan監(jiān)聽在UDP的500和4500兩個端口,其中500是用來IKE密鑰交換協(xié)商,4500的NAT-T是nat穿透的


四、Openswan配置(network-to-network)
1、基于pre-shared keys認(rèn)證方式(PSK)

在***server1()上面作如下修改,里面的配置參數(shù)很多,大家可以參照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則代表著啟動自動連接.


CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)



同樣在另一臺***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"
重啟兩個***服務(wù)
# service ipsec restart然后啟動一下我們的con
# ipsec auto --up net-to-net  (此處由于ipsec.conf中auto=add,所以需要手動添加)




CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)

當(dāng)我們看到ipsec sa estabilished,就證明我們連接成功了,也可以從中看到一些加密方法,密鑰交換參數(shù),我們也可以在配置文件里面添加如下信息進(jìn)行修改。(記得保持同步到***server2)


ike=aes256-sha2_256;modp2048
phase2alg=aes256-sha2_256;modp2048


然后在clinet1上面去ping對端子網(wǎng)的設(shè)備,可以看到如下,但是×××Server是不能ping通對方子網(wǎng)的設(shè)備的。

client1上的操作:

route add  default gw  192.168.183.1

CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)



我們可以在任意×××Server網(wǎng)關(guān)上面抓包,查看數(shù)據(jù)信息

# tcpdump -i eth2 -nn

CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)

# tcpdump -i eth0 -nn

CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)


其中ESP(Encapsulating Security Payload)就是加密數(shù)據(jù)。

echo request 

echo  reply

表明既可以發(fā)送請求,也可以收到回應(yīng)包


測試通過后,可以把連接配置中 auto=add    

             更改為: auto=start 

這樣當(dāng)Openswan啟動時就可自動進(jìn)行連接。
到此我們net-to-net基于psk模式的×××就搭建成功了。


########################################################################################

二、基于RSA Signature認(rèn)證方式(RSA數(shù)字簽名)


注:因?yàn)槲沂墙又厦娴膶?shí)驗(yàn)進(jìn)行操作,一直有問題無法解決,后來重新安裝了一下,安裝下面的流程一次就成功了。
openswan的安裝方式同本文剛開始安裝一樣,下面我們主要講解配置的不同。

下面提到的L-Server指的是192.168.2..48(×××Server1),
R-Server指的是192.168.2.111(×××Server2)。
在L-Server上面進(jìn)行如下操作生成一個新的RSA密鑰對
# ipsec newhostkey --output /etc/ipsec.secrets(可以先不操作)因?yàn)檫@個生成過程太過緩慢,我們使用下面方面進(jìn)行加速生成
# rm -rf /dev/random# ln -s /dev/urandom /dev/random
# ipsec newhostkey --output /etc/ipsec.secrets

在R-Server上面執(zhí)行一遍
# rm -rf /dev/random# ln -s /dev/urandom /dev/random
# ipsec newhostkey --output /etc/ipsec.secrets
在L-Server上執(zhí)行ipsec showhostkey                   --left得到L-Server的公鑰
# ipsec showhostkey --left


CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)


在R-Server上執(zhí)行ipsec showhostkey --right得到R-Server的公鑰
# ipsec showhostkey --right

CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)


請記住這兩個key,后面會用到,也可以使用重定向加到配置文件里面



L-Sserver:
編輯/etc/ipsec.conf文件
# vim /etc/ipsec.conf

CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)


# scp /etc/ipsec.conf 192.168.2.111:/etc  (同步到R-server上)
# service ipsec restart

# ipsec auto --up net-to-net

CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)

當(dāng)我們看到ipsec sa estabilished,就證明我們連接成功了

測試通過后,可以把連接配置中 auto=add    

             更改為: auto=start 

# service ipsec restart

測試:

在一端client1去ping另一端的客戶機(jī)client2,然后我們在***server上面抓包查看。

我們可以在任意×××Server1網(wǎng)關(guān)上面抓包,查看數(shù)據(jù)信息

# tcpdump -i eth2 -nn

CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)

# tcpdump -i eth0 -nn

CentOS 6.5 ipesc下Openswan實(shí)現(xiàn)雙IDC互聯(lián)


此時一切測試成功之后 
# chkconfig ipsec on

基于RSA Signature認(rèn)證方式(RSA數(shù)字簽名)搭建完畢。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI