IPSEC
VPN(虛擬專用網)我們最常提到的就是GRE隧道技術,除了實現隧道功能以外,還要實現數據安全,而在數據安全方面,其實就是要讓數據加密傳輸,至於如何對數據進行加密傳輸,這就是 IPsec(IP Security),IPsec 最突出,也是最主要的功能就是保證 VPN 數據的安全傳輸。
IPsec 能夠起到的功能有:
- 數據源認證(保證數據是從真正的發送者發來的,而不是來自於第三方攻擊者)
- 保護數據完整性(保證數據不會被攻擊者改動)
- 數據私密性(保證數據不會被攻擊者讀取)
- 防攻擊(防止數據被中間人截獲)
- 防重放(可以認為是防止數據被讀取和改動)
IPsec 定義了使用什麼樣的方法來管理相互之間的認證,以及使用什麼樣的方法來保護數據,IPsec 只是定義了一些方法,而 IPsec 本身並不是一個協議。
IPsec 服務的三個協議
IKE(Internet Key Exchange)
ESP(Encapsulating Security Protocol)
AH(Authentication Header)
IKE是個混合協議,其中包含部分Oakley協議以及內置在ISAKMP協議中的部分 SKEME 協議,它是針對密鑰安全的,是用來保證密鑰的安全傳輸、交換以及存儲,主要是對密鑰進行操作,並不對用戶的實際數據進行操作。
ESP(Encapsulating Security Protocol)和 AH(Authentication Header)主要工作是如何保護數據安全,也就是如何加密數據,是直接對用戶數據進行操作的。
在實施 VPN 時,除了實現隧道功能以外,還要實現數據安全,兩者缺一不可;傳統的隧道技術,只能實現隧道而不能實現安全,而 IPSec 則可以為隧道提供數據保護功能,從而構建一個完整的 VPN 體系。IPsec 除了能夠為隧道提供數據保護來實現 VPN 之外,IPsec 還可以自己單獨作為隧道協議來提供隧道的建立。
IKE
由於公鑰加密算法的速度明顯慢於私鑰加密算法,IPsec 在保護數據時選擇了使用私鑰加密算法,保證密鑰的安全傳遞與交換。在密鑰的交換過程中,必須在雙方有認證機制,以防止被冒充。
認證
IKE 會在 VPN 對等體之間採用認證機制(Authentication),IKE 的認證方式有三種:
- Pre-Shared Keys (PSK) 預共享密密鑰
- X.509數字證書(第三方證書認證,即CA認證)
- RSA(不經常用)
密鑰算法
在密鑰方面,IKE 使用了稱為 Diffie-Hellman(簡稱DH算法) 的算法在 VPN 對等體之間建立安全的密鑰用來加密數據,Diffie-Hellman 使用了極為複雜的數學算法,最後將在 VPN 對等體之間計算出只有它們自己才知道的密鑰。
Diffie-Hellman 算法目前有 3 種密鑰長度可選:
- Groups 1 密鑰長度768bit,默認的密鑰長度
- Groups 2 密鑰長度1024bit
- Groups 5 密鑰長度 1536bit
用於數據加密的密鑰的值是靠算法計算出來的,是不能由管理員定義和修改的
SA(Security Association)
IPsec 的所有會話都是在通道中傳輸的,包括協商密鑰,傳遞用戶數據;這樣的通道稱為 SA,SA 並不是隧道,而是一組規則。SA 中的規則能夠保證所有數據的安全傳遞,因此 SA 中包含了之前提到的保證數據和密鑰安全時必不可少的認證、加密等安全策略,這些都要在 SA 中定義。
SA 並不是只有一個,由於密鑰安全和數據安全我們是分開對待的,所以 SA 有兩個,分別定義瞭如何保護密鑰和如何保護數據。
- ISAKMP Security Association(IKE SA)
- IPsec Security Association(IPsec SA)
每個SA都有lifetime,過期後SA便無效,IKE SA 要保護的對象是與密鑰有關的,IKE 並不直接關心用戶數據,並且 IKE SA是為安全協商 IPsec SA 服務的。 lifetime 默認為 86400秒,即一天。
IPsec SA 直接為用戶數據流服務,IPsec SA 中的所有安全策略都是為了用戶數據流的安全。IPsec SA 的 lifetime 默認為 3600 seconds,即 1 小時。
所以呢,我們也可以將 IKE 的整個運行過程分成兩個 Phase(階段),即 :
- IKE Phase One
- IKE Phase Two
IKE Phase One 的主要工作就是建立 IKE SA(ISAKMP SA),IKE SA 的協商階段被稱為 main
mode(主模式)。IKE SA 之間需要協商的套安全策略包括:
- 認證方式:PSK、PKI、RSA
- 加密算法:DES,3DES,AES 128,AES 192,AES 256,默認為 DES
- HASH算法:SHA-1,MD5,默認為 SHA-1
- 密鑰算法:Groups 1,Group 2,Group 5,默認為 Groups 1
IKE Phase Two 的目的是要建立 IPsec SA,IPsec SA 是基於 IKE SA 來建立的,建立 IPsec SA 的過
程稱為 快速模式(quick mode)。IPsec SA 同樣也需要協商出一整套安全策略,其中包括:
- 加密算法:DES,3DES,AES 128,AES 192,AES 256,默認為 DES
- HASH算法:SHA-1,MD5,默認為 SHA-1
IPSEC模式
IPsec Mode 分兩種:
- Tunnel mode
- Transport mode
隧道模式:
IPsec 中的 Tunnel mode 就擁有著與 GRE 相同的隧道功能,那就是將數據包原來的私有 IP 地址先隱藏起來,在外部封裝上公網 IP,等數據包通過公網 IP 被路由到該 IP 的路由器後,再由該路由器剝除數據包外層的公網 IP,從而發現數據包的私有IP 後,再通過私有 IP 將數據包發到真正的目的地。
當 IPsec 工作在 Tunnel mode 時,數據包的封裝過程如下:
傳輸模式:
IPsec 除了為隧道提供數據保護之外,也可以提供隧道的建立,如果 IPsec 自己單獨作為隧道協議來使用,那麼 IPsec 就不需要藉助任何其它隧道協議就能獨立實現 VPN 功能;這些都是由 IPsec Mode 來控制的。如果 IPsec 要自己獨立實現隧道來完成 VPN 功能,就需要工作在 Tunnel mode。
Tunnel模式的 IPsec 不僅實現了隧道功能,也保留了數據安全,實現了完整的 VPN功能。如果 IPsec 不需要實現隧道功能,而只需要實現保護數據的安全功能,就只要工作在 Transport mode 即可,因為 Transport 模式的 IPsec 只有安全功能而沒有隧道功能,所以還要再配合其它隧道協議,最終實現完整的 VPN 功能。
當 IPsec 工作在 Transport mode 時,數據包的封裝過程如下:
從圖中可以看出,當 IPsec 工作在 Transport mode 時,IPsec 包頭是添加在原始 IP包頭與上層協議(如傳輸層)之間的,所以當通過 Internet 連接的遠程網絡之間需要直接使用對方私有 IP 地址來互訪時,此封裝不可行,因為 Transport mode 沒有實現隧道功能,所以如果要實現 VPN 功能,Transport 模式的 IPsec 就應該配合 GRE over IPsec 來使用。
閱讀更多 小小網絡人 的文章