通信與網絡安全之IPSEC


IPSec(IP Security)是IETF制定的為保證在Internet上傳送數據的安全保密性能的三層隧道加密協議。IPSec在 網絡層 對IP報文提供安全服務。IPSec協議本身定義了如何在IP數據包中增加字段來保證IP包的 完整性、 私有性和真實性 ,以及如何加密數據包。使用IPsec,數據就可以安全地在公網上傳輸。IPSec技術也可以實現數據傳輸雙方的身份驗證,避免黑客偽裝成網絡中的合法用戶攻擊網絡資源。 IPSec只能在IP網絡中使用。
1.IPSEC 特性
IPSec通過以下技術實現在機密性、完整性、抗抵賴和身份鑒別方面提高端到端的安全性:
1)通過使用加密技術防止數據被竊聽。 對稱+非對稱 數字信封 ,非對稱使用DH
2)通過數據完整性驗證防止數據被破壞、篡改。 HMAC 哈希算法
3)通過認證機制實現通信雙方身份確認,來防止通信數據被截獲和回放。 隨機數+IV+數字信封 
IPSec技術還定義了:
  • 何種流量需要被保護。 使用ACL
  • 數據被保護的機制。 使用AH、ESP協議
  • 數據的封裝過程。 使用DH 算法進行交換
2.IPSEC和IKE的關系
IKE(Internet Key Exchange)為IPSec提供了自動協商交換密鑰、建立安全聯盟的服務, 能夠簡化IPSec的使用和管理,大大簡化IPSec的配置和維護工作。
IKE是UDP之上的一個應用層協議,端口號500,是IPSEC的信令協議。
IKE為IPSEC協商建立安全聯盟,並把建立的參數及生成的密鑰交給IPSEC。
IPSEC使用IKE建立的安全聯盟對IP報文加密或驗證處理。
IPSEC處理做為IP層的一部分,在IP層對報文進行處理。AH協議和ESP協議有自己的協議號,分別是51和50
3.IPSec兩種工作模式
3.1.傳輸模式
傳輸(transport):只是傳輸層數據被用來計算AH或ESP頭,AH或ESP頭和被加密的傳輸層數據被放置在原IP包頭后面。(數據包,根據OSI七層模型,一層層封裝,從最外層依次為MAC-IP-TCP/UDP-數據)
傳輸模式一個最顯著的特點就是:在整個IPSec的傳輸過程中,IP包頭並沒有被封裝進去,這就意味着從源端到目的端數據始終使用原有的IP地址進行通信。而傳輸的實際數據載荷被封裝在IPSec報文中。對於大多數IPSec傳輸而言, IPSec的報文封裝過程就是數據的加密過程,因此,攻擊者截獲數據后將無法破解數據內容,但卻可以清晰地知道通信雙方的地址信息。
由於傳輸模式封裝結構相對簡單(每個數據報文較隧道模式封裝結構節省20字節),因此傳輸效率較高,多用於通信雙方在同一個局域網內的情況。例如:網絡管理員通過網管主機登錄公司內網的服務器進行維護管理,就可以選用傳輸模式IPSec對其管理流量進行加密。
 
總結:對傳輸層數據進行處理(不對IP包頭處理),IP包頭暴露在外,存在一定風險。適合主機對主機的訪問。
3.2.隧道模式
隧道(tunnel):用戶的整個IP數據包被用來計算AH或ESP頭,且被加密,對整個網絡層數據包進行處理。AH或ESP頭和加密用戶數據被封裝在一個新的IP數據包中。
隧道模式中, 將整個三層數據報文封裝在IPSec數據內,再為封裝后的數據報文添加新的IP包頭。在AH、ESP處理之后再封裝了一個外網IP頭,主要用於Site-to-Site的應用場景
 
總結:對網絡層整個包進行處理,添加新的IP包頭。適合站點對站點。
4.IPSec的組成
IPSec包括AH(協議號51)和ESP(協議號50)兩個協議。
1)AH(Authentication Header)報文驗證頭協議
主要提供的功能有數據源驗證、數據完整性校驗和防報文重放功能,可選擇的散列算法有MD5、SHA1等。AH插到標准IP包頭后面,它保證數據包的完整性和真實性,防止黑客截斷數據包或向網絡中插入偽造的數據包。AH采用了hash算法來對數據包進行保護。AH沒有對用戶數據進行加密
在傳輸模式下,AH協議驗證IP報文的數據部分和IP頭中的不變部分。
在隧道模式下, AH協議驗證全部的內部IP報文和外部IP頭中的不變部分。
 AH(認證頭協議)在RFC 2402中有明確定義,包括數據完整性、驗證和保護數據回放攻擊。
AH協議保護整個數據報文,但易變的字段除外,如IP包頭中的TTL和TOS字段。
AH協議只能實現驗證功能,而並未提供任何形式的數據加密。

AH模式無法與NAT一起運行,因為AH對包括IP地址在內的整個IP包進行hash運算,而NAT會改變IP地址,從而破壞AH的hash值。
2)ESP(Encapsulating Security Payload)報文安全封裝協議
ESP協議將用戶數據進行加密后封裝到IP包中,以保證數據的私有性。同時作為可選項,用戶可以選擇使用帶密鑰的哈希算法保證報文的完整性和真實性。ESP的隧道模式提供了對於報文路徑信息的隱藏。
在ESP協議方式下,可以通過散列算法獲得驗證數據字段,可選的算法同樣是MD5和SHA1。與AH協議不同的是,在ESP協議中還可以選擇加密算法,一般常見的是DES、3DES等加密算法。
ESP協議使用32比特序列號結合防重放窗口和報文驗證,防御重放攻擊。
在傳輸模式下,ESP協議對IP報文的有效數據進行加密(可附加驗證)。
在隧道模式下,ESP協議對整個內部IP報文進行加密(可附加驗證)。
另外,ESP協議加密功能的實現與采用何種連接模式相關。
 
ESP(Encapsulating Security Payload)是報文安全封裝協議
ESP將需要保護的用戶數據進行加密后再封裝到IP包中,保證數據的完整性、真實性和私有性。 可選擇的加密算法有DES,3DES等。
3)AH和ESP可協同工作
AH(Authentication Header)協議是認證頭協議,AH協議通過使用帶密鑰的驗證算法,對受保護的數據計算摘要。通過使用數據完整性檢查,可判定數據包在傳輸過程中是否被修改;通過使用認證機制,終端系統或網絡設備可對用戶或應用進行認證,過濾通信流;認證機制還可防止地址欺騙攻擊及重放攻擊。
在使用AH協議時,AH協議首先在原數據前生成一個AH報文頭,報文頭中包括一個遞增的序列號(Sequence number)與驗證字段(空)、安全參數索引(SPI)等。AH協議將對新的數據包進行離散運算,生成一個驗證字段(authentication data),填入AH頭的驗證字段。
5.IPSEC使用的算法
DH算法的使用:
使用公鑰和私鑰兩個不同的秘鑰進行加密和解密。用一個秘鑰加密的數據僅能被另一個秘鑰解密,且不能從一個秘鑰推出另一個秘鑰。常用的非對稱加密算法有:RSA(使用三位數學家名字的首字母來命名)、DSA(digital signature algorithm,數字簽名算法)、DH(diffie-hellman,迪菲赫爾曼)。前兩種常用於驗證功能,而DH一般被用來實現ipsec中的internet秘鑰交換(IKE)協議
DH(diffie-hellman,迪菲赫爾曼)算法的原理與傳統意義上的非對稱加密算法的區別:通信雙方交換公鑰后,會用自己的秘鑰和對方的公鑰通過DH算法計算出一個共享秘鑰,然后雙方會使用這個共享秘鑰加密傳輸數據。從算法原理看,可以說DH算法已經將對稱加密算法和非對稱加密算法綜合在一起
DH算法支持可變的秘鑰長度,由於公鑰和私鑰的長度不同,因此通過DH算法計算出的共享密鑰的有效長度也就不同。這些都是通過DH算法的密鑰組定義的。Cisco的路由器只支持DH組1、2和5。其中DH組1的有效秘鑰長度為768,DH組2的有效密鑰長度為1024,DH組5的有效密鑰長度為1536。密鑰的有效長度越長,安全性也就越強。同時CPU的資源占用率也就越高。因此,選擇合適的DH組要從網絡的安全需求和設備本身的性能兩個方面考慮。
密鑰的產生是通過DH交換技術,DH交換(Diffie-Hellman Exchange)過程如下:
(1) 須進行DH交換的雙方各自產生一個隨機數,如a和b;
(2) 使用雙方確認的共享的公開的兩個參數:底數g和模數p各自用隨機數a,b進行冪模運算,得到結果c和d,計算公式如下:
c =g a mod p, d=g b modp;
(3) 雙方進行交換下圖所示的信息;
(4) 進一步計算,得到DH公有值:
da mod p = c b mod p = g a b mod p
此公式可以從數學上證明。
若網絡上的第三方截獲了雙方的模c和d,那么要計算出DH公有值gab mod p 還需要獲得a或b,a和b始終沒有直接在網絡上傳輸過,如果想由模c和d計算a或b就需要進行離散對數運算,而p為素數,當p足夠大時(一般為768位以上的二進制數),數學上已經證明,其計算復雜度非常高從而認為是不可實現的。所以,DH交換技術可以保證雙方能夠安全地獲得公有信息。
6.IKE協議
IKE(Internet Key Exchange)因特網密鑰交換協議是IPSEC的信令協議,為IPSec提供了自動協商交換密鑰、建立安全聯盟的服務,能夠簡化IPSec的使用和管理,大大簡化IPSec的配置和維護工作。
使用UDP的500端口。
IKE是非常通用的協議,不僅可為IPsec協商安全關聯,而且可以為SNMPv3、RIPv2、OSPFv2等任何要求保密的協議協商安全參數。
IKE屬於一種混合型協議,由Internet安全關聯和密鑰管理協議(ISAKMP)和兩種密鑰交換協議OAKLEY與SKEME組成。IKE創建在由ISAKMP定義的框架上,沿用了OAKLEY的密鑰交換模式以及SKEME的共享和密鑰更新技術,還定義了它自己的兩種密鑰交換方式。
IKE不是在網絡上直接傳送密鑰,而是通過一系列數據的交換,最終計算出雙方共享的密鑰,並且即使第三者截獲了雙方用於計算密鑰的所有交換數據,也不足以計算出真正的密鑰。IKE具有一套自保護機制,可以在不安全的網絡上安全的分發密鑰,驗證身份,建立IPSEC安全聯盟。
1)IKE的組件
ISAKMP:定義了信息交換的體系結構,也就是格式SKEME:實現公鑰加密認證的機制
Oakley:提供在兩個IPsec對等體間達成相同加密密鑰的基本模式的機制
安全聯盟(SecurityAssociation,簡稱SA)是兩個通信實體經協商建立起來的一種協定,它們決定了用來保護數據包安全的IPsec協議、轉碼方式、密鑰、以及密鑰的有效存在時間等等。
2)IKE建立的兩個階段
IKE使用了兩個階段的ISAKMP
第一階段,協商創建一個通信信道(IKE SA),並對該信道進行驗證,為雙方進一步的IKE通信提供機密性、消息完整性以及消息源驗證服務;
第二階段:使用已建立的IKE SA建立IPSec SA
第一個隧道ISAKMP SA是用於保護后續的再次協商,第二次隧道協商的參數是在完全加密的環境下進行的,之后得到的IPsecSA才真正為數據做加密!第一階段策略集面向對象是第二階段的協商包,第二階段的轉換集面向對象是最終的數據包。
IKE會構建一個SA數據庫(SADB),由它來維護IPsec協議,用來保障數據包安全。 
SA是單向的:如果兩個主機(比如A和B)正在通過ESP進行安全通信,那么主機A就需要有一個SA,即SA(OUT),用來處理外發的數據包,另外還需要有一個不同的SA,即SA(IN)用來處理進入的數據包。主機A的SA(OUT)和主機B的SA(IN)將共享相同的加密參數(比如密鑰)。
SA要根據協議來區分:如果兩個主機間同時使用ESP和AH,對於ESP和AH會生成不同的SA。 SA分為兩種:IKE(ISAKMP)SA 協商對IKE數據流進行加密以及對對等體進行驗證的算法(對密鑰的加密和peer的認證)IPsec SA 協商對對等體之間的IP數據流進行加密的算法。
SA分為兩種:
IKE(ISAKMP)SA:協商對IKE數據流進行加密以及對對等體進行驗證的算法(對密鑰的加密和peer的認證)
IPsec SA 協商對對等體之間的IP數據流進行加密的算法 
對等體之間的IKE SA只能有一個,對等體之間的IPsec SA可以有多個
7.IPSEC建立過程
1)第一階段:建立ISAKMPSA協商
交換信息包括:
  • 對等體之間采用何種方式做認證,是預共享密鑰還是數字證書。
  • 雙方使用哪種加密算法(DES、3DES)
  • 雙方使用哪種HMAC方式,是MD5還是SHA
  • 雙方使用哪種Diffie-Hellman密鑰組
  • 使用哪種協商模式(主模式或主動模式)
  • 協商SA的生存期。
IKE協商(第一階段)過程中包含三對消息:
a)SA交換,是協商確認有關安全策略的過程;
b)密鑰交換,交換Diffie-Hellman公共值和輔助數據(如:隨機數),加密物在這個階段產生;
c)ID信息和驗證數據交換,進行身份驗證和對整個SA交換進行驗證。
主模式交換提供身份保護機制,經過三個步驟,共交換六條信息。三個步驟分布是策略協商交換、Diffie-Hellman共享值、nonce交換以及身份驗證交換。
在主模式中,這三個任務是通過六個數據報文完成的:前兩個數據包用於協商對等體間的管理連接使用何種安全策略(交換ISAKMP/IKEc傳輸集);中間的兩個數據包通過DH算法產生並交換加密算法和HMAC功能所需的秘鑰,最后兩個數據包使用預共享秘鑰等方式執行對等體間的身份驗證。這里需要注意的是,前四個報文為明文傳輸,從第5個數據報文開始為密文傳輸,而前四個數據包通過各種算法最終產生的秘鑰用於第5、地6個數據包及后續數據的加密。
野蠻模式交換分為三個步驟,但只交換三條信息,頭兩條消息協商策略、交換Diffile-Hellman公開值表要的輔助信息以及身份信息;第二條消息認證響應方;第三條消息認證發起,並為發起方提供在場的證據。
a)交換ISAKMP/IKE傳輸集
* ISAKMP/IKE傳輸集就是一組用來保護管理連接的安全措施,有些書籍稱之為IKE策略或ISAKMP策略,它主要包括以下幾個方面。
* 加密算法:DES,3DES或AES。
* HMAC功能:MD5或SHA-1。
* 設備驗證的類型:預共享秘鑰(也可以使用RSA簽名等方法)。
* Diffie-Hellman秘鑰組:cisco支持1、2、5、7(cisco的路由器不支持秘鑰組7)。
* 管理連接的生存周期。
設備可能會有不止一個傳輸集,如果設備發起來接,它會將傳輸集列表(包括所有傳輸集)發送到遠端對等體設備進行依次對比,直到找到匹配的結果。如果對比所有傳輸集后沒有發現匹配的傳輸集,管理連接將無法建立,ipsec連接失敗。例如,兩端設備都只有一個傳輸集,且一端配置DES加密算法,另一端配置了3DES加密算法,就會導致IPSEC建立失敗。如果給其另一端多配置一個傳輸集使用DES算法,對等體會自動找到與之匹配的傳輸集,管理連接便會建立起來。
b)通過DH算法實現秘鑰交換
第一步只是協商管理連接的安全策略,而共享秘鑰的產生與交換就要通過Diffie-Hellman來實現。
DH算法屬於非對稱加密算法,因此它將產生公鑰和私鑰對的組合,且彼此共享公鑰。對等體用對方的公鑰和自己的私鑰通過一種功能運算產生一個安全的共享秘鑰,即使有人截獲數據,也會因為沒有私鑰而無法對出共享秘鑰。
c)實現設備之間的身份驗證
設備身份驗證時最常使用的方法就是預共享秘鑰,即在對等體之間通過帶外的方式共享秘鑰,並存儲在設備的本地。設備驗證的過程可以通過加密算法或HMAC功能兩種方法實現,而加密算法很少用於身份驗證,多數情況都會通過HMAC功能實現。
ISA/KMP/IKE階段1相關配置命令
a)配置安全策略
ISAKMP/IKE策略包含以下參數:策略的序列號、加密算法、驗證方法、DH組、生存周期。配置命令如下。(用於加密和驗證階段1第5、6個數據包)
Router(config)# crypto isakmp policy { 1-10000 } #建立ISAKMP/IKE管理連接策略,序列號越低,優先級越高 Router(config-isakmp)# encryption { des | 3des | aes } #指定加密算法 Router(config-isakmp)# hash { sha | md5 } #指定驗證過程采用HMAC的驗證功能 Router(config-isakmp)# authentication pre-share #采用預共享密鑰方式進行身份驗證 Router(config-isakmp)# group { 1 | 2 | 5 } #指定DH算法的密鑰長度,默認為1,組號越大,算法越安全,占用設備資源越多 Router(config-isakmp)# lifetime 86400 #指定管理連接的生存周期,默認86400s(24小時) Router# show crypto isakmp policy #查看上述配置
b)配置預共享秘鑰
Router(config)# crypto isakmp key { 0 | 6 } keystring address peer-address {subnet_mask}
 
 
參數解釋:
0表示秘鑰為明文,6表示秘鑰被加密
Keystring表示秘鑰的具體內容
Peer-address表示對端與之共享秘鑰的對等體設備地址
Subnet_mask:這里為可選命令,如果沒有指定,默認將使用255.255.255.255作為掩碼
Router# show crypto isakmp key #查看密鑰,秘鑰處於明文和密文時,命令顯示內容的差異
 
 
 
為了增強安全性,在IOS12.3(2)T版本中,增加選項來加密秘鑰,但要求設備的IOS鏡像必須支持AES加密:
Router(config)#key config-key password-encrypt New key: #輸入的秘鑰至少為8個字母 Confirm key: #確認密鑰 Router(config)#password encryption aes
 
2)建立IPsecSA協商
具體協商內容包括:
  • 雙方使用哪種封裝技術,AH還是ESP
  • 雙方使用哪種加密算法
  • 雙方使用哪種HMAC方式,是MD5還是SHA
  • 使用哪種傳輸模式,是隧道模式還是傳輸模式
通過三條消息建立IPSec SA:
  • 頭兩條消息協商IPSec SA的各項參數值,並生成IPSec使用的密鑰;
  • 第二條消息為響應方提供在場的證據;
  • 第三條消息為發現方提供在場的證據。
ISAKMP/IKE階段2主要是在兩個ipsec對等體間建立數據連接,其主要完成以下任務:
  • 定義對等體間需要保護何種流量。
  • 定義用來保護數據的安全協議。
  • 定義傳輸模式。
  • 定義數據連接的生存周期及秘鑰刷新的方式。
其中,ipsec對等體一般是通過ACL來匹配那些需要加密傳輸的流量。
ISAKMP/IKE階段2的建立
a)安全關聯(sa)
Ipsec需要在兩個對等體之間建立一條邏輯連接,這就要使用一個被稱為安全關聯的信令協議,這是因為ipsec需要無連接的IP協議在安全運行之前要成為面向連接的協議。SA的連接是在源點和終點之間的單向連接,如果需要雙向連接,就需要兩個SA連接,每個方向一個。SA連接由三個要素定義。
  • 安全參數索引(SPI):用於唯一表示每條SA連接。
  • 安全協議的類型:IPSEC定義了兩種安全協議,即AH和ESP。
  • 目的IP地址。
ISAKMP/IKE階段2具有這種特性,即ISAKMP/IKE的數據連接實際是通過兩個單向連接建立的,而兩個連接采用的加密或者認證方式都是相同的。這就使ISAKMP/IKE階段2的這個特性不易被觀察到。
ISAKMP/IKE階段2的配置命令
ISAKMP/IKE階段2的配置過程有三個部分組成。
a)配置Crypto ACL
定義何種流量需要被保護的一種方法就是建立一個crypto ACL,通過ACL匹配ipsec ***流量,其中,permit語句指定了需要被保護的流量,而deny語句定義了不需要保護的流量。通常情況,兩端對等體設備上的crypto ACL互為鏡像,否則階段2的連接建立就會失敗。配置命令如下:
Router(config)# access-list number{ deny | permit } protocol source mac destination mac
 
b)配置階段2的傳輸集
在ipsec對等體之間可以配置多個數據連接的傳輸集,必須保證兩端至少有一對匹配的傳輸集,這樣ISAKMP/IKE階段2的數據SA連接才能協商成功。設備的傳輸集由設備性能決定,如果所有對等體設備的性能相近,則共同使用一種傳輸集即可,如果設備間性能差異較為明顯,通常就需要多個傳輸集了。配置如下。
Router(config)# crypto ipsec transform-set transform_set_name transform1[transform2[transform3]
參數解釋:
Transform_set_name:為傳輸集名稱,該名稱具有唯一性,不能與任何其他傳輸集相同
Transform1:傳輸集選項,參考下表:
Router(cfg-crypto-tran)# mode { tunnel | transport } #定義傳輸模式,默認為隧道模式
 
如果在數據連接建立之后修改傳輸集的配置,並不會影響現有的SA設置,只有連接的生存周期到期,SA才會重新建立連接或者SA被手動清除(通過clear crypto sa或clear crypto ipsec sa命令)。
c)配置crypto map
Crypto map的功能就是將所有的信息組織在一起構建ipsec會話。通常路由器的接口上只對應一個crypto map,一台路由器可以在多個接口上實現流量保護,這時可能就需要多個crypto map了。
Crypto map有兩種類型:靜態的crypto map和動態的crypto。在構建L2L會話時通常會使用靜態的。
Router(config)# crypto map map_name seq_num ipsec-isakmp #seq_num為map序列號,范圍1-65535,值越小,優先級越高 Router(config-crypto-m)# match address ACL_name_or_num #調用ACL的名字或編號 Router(config-crypto-m)# set peer { hostname| IP_address} #指定對等體設備,即配置的設備與誰建立連接 Router(config-crypto-m)# set transform-set transform_set_name1 #指定傳輸集的名稱,最多可以列出六個傳輸集的名稱 Router(config-crypto-m)# set pfs [ group1 | group2 | group5 ] Router(config-crypto-m)# set security-association lifetime {seconds seconds| kilobytes kilobytes} Router(config-crypto-m)# set security-association idle-time seconds
 
命令解釋:
* Set PFS:(PFS:perfect forward secrecy,完美轉發保密)保證兩個階段中的秘鑰只能使用一次,進一步增強了安全性,但使用PFS可能占用設備更多的資源。Set pfs命令用於啟用這項功能並指定使用哪個DH秘鑰組,這是一條可選命令。
* Set security-association lifetime:用於指定SA的生存周期。默認情況下,cisco的設備已經設定數據連接的生存周期為3600s或4608000KB,相當於一小時內以10Mb/s速率傳輸的流量。生存周期的閾值是由時間和流量兩個方面的因素決定的。且相當於任何一項到達閾值的限制時,SA就會被重新協商建立。
如果在IPSEC對等體之間只設置lifetime,即使沒有ipsec流量傳遞,SA也始終處於激活狀態,如果在×××設備上配置了很多ipsec連接,這些暫時沒有實際意義的SA就會占用設備的內存和CPU資源。從IOS12.2(15)T開始,cisco為數據SA引入空閑超時計時器,如果沒有流量通過SA傳輸,SA就會被設備自動刪除。
* Set security-association idle-time命令用於設定空閑超時計數器,范圍為60-86400s。默認情況下,空閑超時計時器是關閉的。
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM