最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

IPsec 原理和應(yīng)用簡(jiǎn)介(一篇搞定~)

2023-02-06 16:14 作者:補(bǔ)給站Linux內(nèi)核  | 我要投稿

IPsec(Internet Protocol Security)是為IP網(wǎng)絡(luò)提供安全性的協(xié)議和服務(wù)的集合,是一組基于網(wǎng)絡(luò)層的,應(yīng)用密碼學(xué)的安全通信協(xié)議族,不具體指某個(gè)協(xié)議。它是 VPN(Virtual Private Network,虛擬專用網(wǎng))中常用的一種技術(shù)。由于IP報(bào)文本身沒(méi)有集成任何安全特性,IP 數(shù)據(jù)包在公用網(wǎng)絡(luò)如 Internet 中傳輸可能會(huì)面臨被偽造、竊取或篡改的風(fēng)險(xiǎn)。通信雙方通過(guò) IPsec 建立一條 IPsec 隧道,IP 數(shù)據(jù)包通過(guò) IPsec 隧道進(jìn)行加密傳輸,有效保證了數(shù)據(jù)在不安全的網(wǎng)絡(luò)環(huán)境如 Internet 中傳輸?shù)陌踩浴?br>

IPsec的工作過(guò)程

IPsec 可以分為配置運(yùn)行兩個(gè)過(guò)程。配置過(guò)程可以手工進(jìn)行也可以通過(guò)軟件自動(dòng)配置,比如 strongSwan,LibreSwan,OpenSwan,F(xiàn)reeSwan等;


IPsec工作時(shí)需要的數(shù)據(jù):

安全策略(Security Policy,縮寫SP),定義了什么樣的數(shù)據(jù)要進(jìn)行ipsec處理,相關(guān)的配置被存儲(chǔ)到SPD(Security Policy Database)中。

安全關(guān)聯(lián)(Security Association 縮寫SA,有些文章翻譯為"安全聯(lián)盟"),是建立ipsec通信所需的相關(guān)參數(shù)。比如加密密鑰、認(rèn)證密鑰等,保存在SAD(SA Database)中。

SP 描述了需要做什么;而 SA 描述了它應(yīng)該如何實(shí)現(xiàn)。

一對(duì)SA和SP負(fù)責(zé)一個(gè)方向的數(shù)據(jù)處理,雙向都需要IPsec就需要兩對(duì)SA和SP。

建立SA,手工配置又復(fù)雜又不安全,生產(chǎn)上應(yīng)該沒(méi)人會(huì)用。利用軟件自動(dòng)配置是首選,軟件配置是通過(guò)?Internet Key Exchange?協(xié)議(有IKEv1 和 IKEv2兩個(gè)版本) 自動(dòng)協(xié)商。IKE是一個(gè)復(fù)合協(xié)議,協(xié)議建立在Internet安全聯(lián)盟和密鑰管理協(xié)議ISAKMP定義的框架上,是基于UDP(User Datagram Protocol)的500 端口的應(yīng)用層協(xié)議,在NAT環(huán)境下會(huì)切換為4500端口。
IKE的精髓在于它永遠(yuǎn)不在不安全的網(wǎng)絡(luò)上傳送密鑰,而是通過(guò)一些數(shù)據(jù)的交換,通信雙方最終計(jì)算出共享的密鑰,并且即使第三方截獲了雙方用于計(jì)算密鑰的所有交換數(shù)據(jù),也無(wú)法計(jì)算出真正的密鑰。其中的核心技術(shù)就是DH(Diffie Hellman)交換技術(shù)。

DH方法針對(duì)的是以下困難的局面:

Alice 和 Bob 想?yún)f(xié)商一個(gè)密鑰,用于對(duì)稱加密。但是他們之間的通信渠道是不安全的。所有經(jīng)過(guò)此渠道的信息均會(huì)被敵對(duì)方Eve看到。為了防止密鑰泄露,Diffie 與 Hellman提出以下密鑰交換協(xié)議:

有兩個(gè)全局公開(kāi)的參數(shù),一個(gè)素?cái)?shù)p和一個(gè)整數(shù) g ,g 是 p 的一個(gè)原根。

1. Alice 和 Bob 先對(duì) p 和 g 達(dá)成一致,而且公開(kāi)出來(lái)。Eve 也就知道它們的值了。

2. Alice 取一個(gè)私密的整數(shù)a, 不讓任何人知道, 發(fā)給 Bob 計(jì)算結(jié)果:A=ga mod p. Eve 也看到了A的值。

3.類似,Bob 取一私密的整數(shù) b ,?不讓任何人知道,?發(fā)給Alice計(jì)算結(jié)果B=gb mod p. 同樣 Eve 也會(huì)看見(jiàn)傳遞的B是什么。

4. Alice 擁有的信息為g、p、a、B 計(jì)算出 K=Ba mod p=(gb)a mod p=gab mod p.

5. Bob 擁有的信息為g、p、b、A 也能計(jì)算出 K=Ab mod p=(ga)b mod p=gab mod p.

6. Alice 和 Bob 現(xiàn)在就擁有了一個(gè)共用的密鑰K.

7.雖然Eve也看見(jiàn)了p、g、A、B ?但是鑒于計(jì)算離散對(duì)數(shù)的困難性,他無(wú)法知道a和b 的具體值,所以Eve就無(wú)從知曉密鑰K是什么了。


IKE有三個(gè)組件:(了解一下不細(xì)聊)SKEME,Oakley ,ISAKMP。

  • SKEME:實(shí)現(xiàn)公鑰加密認(rèn)證的機(jī)制

  • Oakley:基于到達(dá)兩個(gè)對(duì)等體間的加密密鑰的機(jī)制

  • ISAKMP:在兩個(gè)實(shí)體間進(jìn)行分組格式及狀態(tài)轉(zhuǎn)換的消息交換的體系結(jié)構(gòu)。

IKE協(xié)商分兩個(gè)階段:第一階段,用來(lái)協(xié)商自己用的連接信息,被稱為 IKE SA(或 ISAKMP SA ),期間需要完成身份驗(yàn)證和密鑰信息交換。

身份驗(yàn)證的方法
Public Key Authentication

Pre-Shared-Key Authenticiation (PSK)

Extensible Authentication Protocol (EAP) 用戶名密碼

eXtended Authentication (XAuth)


這個(gè)階段有主模式(Main Mode)和野蠻模式(Aggressive Mode)兩種協(xié)商方法。感興趣的可以自行搜索或參考文后的擴(kuò)展鏈接了解。
第二階段,是在第一階段建立的?IKE SA?的保護(hù)下來(lái)確立 IPsec SA,使用快速模式。根據(jù)配置的 AH/ESP 安全協(xié)議等參數(shù)協(xié)商出 IPsec SA。
協(xié)商出IPSec 需要使用的認(rèn)證算法和加密算法及相關(guān)密鑰
(1)認(rèn)證算法 IPSec可以使用三種認(rèn)證算法
MD5(Message Digest 5):MD5 通過(guò)輸入任意長(zhǎng)度的消息,產(chǎn)生 128bit 的消息摘要。
SHA-1(Secure Hash Algorithm):SHA-1 通過(guò)輸入長(zhǎng)度小于 2 的 64 次方比特的消息,產(chǎn)生 160bit 的消息摘要。
SHA-2:SHA-2 算法相對(duì)于 SHA-1 加密數(shù)據(jù)位數(shù)有所上升,安全性能要遠(yuǎn)遠(yuǎn)高于SHA-1
(2)加密算法
加密算法實(shí)現(xiàn)主要通過(guò)對(duì)稱密鑰系統(tǒng),它使用相同的密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密。IPSec使用以下三種加密算法:
DES:使用 56bit 的密鑰對(duì)一個(gè) 64bit 的明文塊進(jìn)行加密。
3DES:使用三個(gè) 56bit 的 DES 密鑰(共 168bit 密鑰)對(duì)明文進(jìn)行加密。
AES:使用 128bit、192bit 或 256bit 密鑰長(zhǎng)度的 AES 算法對(duì)明文進(jìn)行加密。


【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【749907784】整理了一些個(gè)人覺(jué)得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦!?。。ê曨l教程、電子書、實(shí)戰(zhàn)項(xiàng)目及代碼)? ? ?



IPsec運(yùn)行過(guò)程

工作模式和封裝協(xié)議

工作模式有隧道模式(Tunnel mode)和傳輸模式(Transport mode)。

封裝協(xié)議有?AH?(Authentication Header頭部驗(yàn)證) 和?ESP?(Encapsulating Security Payload安全載荷封裝)兩種,協(xié)議號(hào)分別為51、50。IPSEC 使用 ESP 來(lái)支持加密,使用 AH來(lái)保護(hù)報(bào)文的完整性。二者可以單獨(dú)使用, 也可以一起使用。

AH 認(rèn)證頭協(xié)議:
鑒別頭 AH:(不提供保密性,只對(duì)整個(gè)IP數(shù)據(jù)包提供保護(hù))
無(wú)連接數(shù)據(jù)完整性:通過(guò)哈希函數(shù)產(chǎn)生的校驗(yàn)來(lái)保證
數(shù)據(jù)源認(rèn)證:通過(guò)計(jì)算驗(yàn)證碼時(shí)加入一個(gè)共享密鑰來(lái)實(shí)現(xiàn)
抗重放服務(wù):AH報(bào)頭中的隨機(jī)序列號(hào)可以防止重放攻擊

ESP 封裝安全載荷協(xié)議:
除提供 AH 認(rèn)證頭協(xié)議的所有功能之外,還有數(shù)據(jù)保密和有限的數(shù)據(jù)流保護(hù)。ESP 協(xié)議允許對(duì) IP 報(bào)文凈荷進(jìn)行加密和認(rèn)證、只加密或者只認(rèn)證,ESP 沒(méi)有對(duì) IP頭的內(nèi)容進(jìn)行保護(hù)。
保密服務(wù)通過(guò)使用密碼算法加密 IP 數(shù)據(jù)包的相關(guān)部分來(lái)實(shí)現(xiàn)。
數(shù)據(jù)流保密由隧道模式下的保密服務(wù)提供。
ESP 通常使用 DES、3DES、AES 等加密算法實(shí)現(xiàn)數(shù)據(jù)加密,使用 MD5 或 SHA1 來(lái)實(shí)現(xiàn)數(shù)據(jù)完整性認(rèn)證。
IPsec的數(shù)據(jù)封包方式注:下邊的圖只是示意圖,AH 頭,ESP 頭等還有其他細(xì)節(jié)結(jié)構(gòu),并未體現(xiàn)出來(lái),詳情請(qǐng)自行搜索。

AH 協(xié)議在兩種模式下的封裝:

ESP 協(xié)議在兩種模式下的封裝:


興趣流量的識(shí)別和封裝,由內(nèi)核空間網(wǎng)絡(luò)棧的 xfrm (讀作transfrom)框架提供支持,處于Netfilter的處理路徑上:


上圖是知名的 netfilter 框架處理過(guò)程圖的一部分,可以清楚的看到:input 的數(shù)據(jù)在 xfrm lookup 處,發(fā)現(xiàn)是需要解碼的數(shù)據(jù),解碼后重新進(jìn)入網(wǎng)絡(luò)棧處理。

output 的數(shù)據(jù)經(jīng)過(guò) xfrm lookup 處,發(fā)現(xiàn)是需要編碼的數(shù)據(jù),編碼后重新進(jìn)入網(wǎng)絡(luò)棧發(fā)出。

下邊這個(gè)圖看的可能更清晰些:

查看 xfrm 的狀態(tài),策略,監(jiān)控可以使用ip命令:

關(guān)于 IPsec 做 VPN:

傳輸模式,只是對(duì)原始IP包的數(shù)據(jù)部分進(jìn)行處理,目的IP并沒(méi)有變化。傳輸模式只為高層協(xié)議提供安全服務(wù),提供端到端的數(shù)據(jù)保護(hù),本身并不能做VPN。但是

常用的VPN比如 L2TP over IPsec, 即在 IPsec 的傳輸模式+ESP協(xié)議下,去跑 L2TP VPN:(由外到內(nèi)的數(shù)據(jù)封裝)

IP/UDP(4500)/ESP/UDP(1701)/L2TP/PPP/IP/TCP/HTTP

其他協(xié)議(比如GRE等)跑到傳輸模式的ESP加密的模式上,用ESP做加密,然后用其他協(xié)議做功能,也是常見(jiàn)的用法。

隧道模式,是對(duì)原有的整個(gè) IP 包進(jìn)行處理,外層又封裝了一層IP頭。可以做 VPN用,但因?yàn)橹?IPsec 隧道模式認(rèn)證和分配IP的協(xié)議標(biāo)準(zhǔn)化不太好,所以也不常用,現(xiàn)在不知是否可以直接使用了。

關(guān)于 IPsec 的 NAT 穿透

注:NAT 有很多類型,這里指的是 Port Address Translation (PAT)型的NAT,是和端口相關(guān)的 NAT ,一般家庭網(wǎng)絡(luò)都是這種 NAT。

AH 主要用于保護(hù)消息的完整性,其驗(yàn)證范圍包含IP報(bào)文頭,而 NAT 修改 IP 報(bào)文頭會(huì)導(dǎo)致 AH 檢查失敗,因此使用 AH 保護(hù)的 IPSec 隧道是不能穿越 NAT 網(wǎng)關(guān)的。

ESP協(xié)議保護(hù)的報(bào)文不存在該問(wèn)題,因?yàn)?ESP 保護(hù)的部分不包含IP報(bào)文頭(對(duì)隧道方式而言是外層IP報(bào)文頭)。

因?yàn)?AH/ESP 是 IP 層有協(xié)議號(hào)的協(xié)議,和 TCP、UDP 是同級(jí)協(xié)議,本身沒(méi)有端口號(hào),在標(biāo)準(zhǔn)的 PAT-NAT下也無(wú)法工作。

但是,還記得之前 IKE 協(xié)商時(shí)如果發(fā)現(xiàn) NAT 環(huán)境會(huì)切換到 UDP 的 4500 端口么。IKE 用完了 UDP 的4500端口,后邊 IPsec 真正工作時(shí)也會(huì)把自己封到 UDP-4500 端口的數(shù)據(jù)中,以支持 NAT 。這依靠 IPsec 的?NAT-Traversal,簡(jiǎn)稱 NAT-T,NAT-Discovery ,簡(jiǎn)稱 NAT-D 機(jī)制來(lái)實(shí)現(xiàn)的。

最終得到結(jié)論,只有ESP協(xié)議 配合UDP4500端口封裝才能支持NAT環(huán)境。

關(guān)于本機(jī)的NAT配置對(duì)IPsec的影響

由下圖可知,NAT處理是在IPsec之前的,如果NAT改變了數(shù)據(jù)的IP地址,IPsec有可能就識(shí)別不到相關(guān)數(shù)據(jù)流了,所以在網(wǎng)關(guān)上配有NAT以支持內(nèi)網(wǎng)機(jī)器聯(lián)網(wǎng)的同時(shí),又要通過(guò)IPsec與遠(yuǎn)程網(wǎng)絡(luò)打通時(shí),一定要注意NAT的配置,不要對(duì)內(nèi)網(wǎng)打通的流量做NAT。


配置示例

可以參考下邊這個(gè)鏈接,通過(guò)strongSwan在Ubuntu系統(tǒng)上做個(gè)配置示例,

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-22-04

這個(gè)示例配通后,本機(jī)的請(qǐng)求會(huì)被IPsec封裝,傳輸?shù)竭h(yuǎn)端,在遠(yuǎn)端做NAT以使用遠(yuǎn)程服務(wù)器的IP訪問(wèn)網(wǎng)絡(luò)。配置過(guò)程中注意服務(wù)器本機(jī)的防火墻配置。


應(yīng)用情景

下圖來(lái)自 strongSwan文檔,可以用來(lái)解釋好幾種應(yīng)用情景


  • 左邊10.1.0.0/16網(wǎng)絡(luò),代表一個(gè)辦公區(qū)的內(nèi)網(wǎng),網(wǎng)關(guān)是moon。

  • 右邊10.2.0.0/16網(wǎng)絡(luò),代表另一個(gè)辦公區(qū),網(wǎng)關(guān)是sun。

  • 中間192.168.0.0/24網(wǎng)絡(luò)代表公網(wǎng),畫的是直連,但我們應(yīng)該理解成中間經(jīng)過(guò)很多路由器和不同的網(wǎng)段。

  • 下邊carol和dave代表能聯(lián)通公網(wǎng)的主機(jī),比如我們家里的電腦。

  • 下邊winnetou代表公網(wǎng)上的一臺(tái)服務(wù)器。

情景一,安全加密(Host-to-Host)

圖中moon和sun之間,想安全通信不被別人攔截?cái)?shù)據(jù)。他們之間就可以打通IPsec隧道(傳輸或隧道模式,興趣流?192.168.0.1?- 192.168.0.2),對(duì)他們之間的通信做加密。被加密的數(shù)據(jù),可以是L2TP,GRE等其他VPN或隧道協(xié)議,為其他協(xié)議提供安全支持和NAT穿越等服務(wù)。

情景二,遠(yuǎn)程訪問(wèn)(Host-to-Site)

比如圖中carol在家里,想訪問(wèn)左邊的辦公區(qū)的網(wǎng)絡(luò)中的所有設(shè)備。carol和辦公區(qū)的網(wǎng)關(guān)moon之間打通 IPsec 隧道(隧道模式,興趣流?192.168.0.100-10.1.0.0/16),carol之間就可以向目的網(wǎng)段的服務(wù)器地址比如10.1.0.10發(fā)送數(shù)據(jù)了。

情景三,內(nèi)網(wǎng)互聯(lián)(Site-to-Site)

比如右邊辦公區(qū)的bob想直接訪問(wèn)左辦公區(qū)的alice,那就在moon和sun之間打通IPsec隧道(隧道模式,興趣流10.1.0.0/16-10.2.0.0/16),他們相互通信的數(shù)據(jù)包會(huì)被自動(dòng)傳輸?shù)綄?duì)端。

情景四,隱藏IP(Host-to-Site + SNAT)

比如carol不想用自己的IP上網(wǎng),想用winnetou的IP,那就在他們之間打通IPsec隧道(隧道模式,一般會(huì)配置一個(gè)VIP作為默認(rèn)網(wǎng)關(guān),興趣流VIP?-?0.0.0.0/0), 在winnetou上開(kāi)通數(shù)據(jù)轉(zhuǎn)發(fā)功能,并對(duì)數(shù)據(jù)包做SNAT,發(fā)出前把源地址替換成自己的192.168.0.150。


原文作者:漫跑的小兔


IPsec 原理和應(yīng)用簡(jiǎn)介(一篇搞定~)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
台前县| 巨野县| 五台县| 正阳县| 尼木县| 巧家县| 南皮县| 陇川县| 德清县| 南郑县| 张家港市| 文成县| 新蔡县| 中超| 姚安县| 伽师县| 泸定县| 谢通门县| 定远县| 获嘉县| 淅川县| 宾川县| 信丰县| 宣城市| 南安市| 梁山县| 分宜县| 含山县| 华蓥市| 隆安县| 利川市| 同仁县| 霍邱县| 南安市| 南昌县| 睢宁县| 莫力| 莱阳市| 宜黄县| 明光市| 延寿县|