IPSEC VPN
IPSecVPN
1.什么是IPSEC?
互联网安全协议(Internet Protocol Security)是一个协议包,透过对IP协议的分组进行加密和认证的网络传输协议族(一些相互关联的协议的集合)
封装安全载荷(ESP),提供机密性、数据源认证、无连接完整性、防重放和有限的传输流(traffic-flow)机密性[5];
因特网密钥交换(英语: Internet Key Exchange ,简称IKE或IKEv2),为 AH、ESP 操作所需的 安全关联(SA) 提供算法、数据包和密钥参数[6]。
IPsec协议工作在OSI模型的第三层,使其在单独使用时适于保护基于TCP或UDP的协议(如安全套接子层(SSL)就不能保护UDP层的通信流)。这就意味着,与传输层或更高层的协议相比,IPsec协议必须处理可靠性和分片的问题,这同时也增加了它的复杂性和处理开销。相对而言,SSL/TLS依靠更高层的TCP(OSI的第四层)来管理可靠性和分片。
2.认证头(AH(Authentication Header))(协议号51)
认证头(Authentication Header,AH)被用来保证被传输分组的完整性和可靠性。此外,它还保护不受重放攻击。认证头试图保护IP数据报的所有字段,那些在传输IP分组的过程中要发生变化的字段就只能被排除在外。当认证头使用非对称数字签名算法(如RSA)时,可以提供不可否认性
字段含义:
- 下一个头:标识被传送数据所属的协议。
- 载荷长度:认证头包的大小。
- 保留:为将来的应用保留(目前都置为0)。
- 安全参数索引:与IP地址一同用来标识安全参数。
- 串行号:单调递增的数值,用来防止重放攻击。
- 认证数据:包含了认证当前包所必须的数据。
AH协议会对数据和ip包头进行校验,因此AH协议不能穿透NAT,并且AH协议不会对数据进行加密,只会对数据进行校验
3.封装载荷(协议号50)
封装安全载荷(Encapsulating Security Payload,ESP)协议对分组提供了源可靠性、完整性和保密性的支持。与AH头不同的是,IP分组头部不被包括在内。
- 安全参数索引:与IP地址一同用来标识安全参数
- 串行号:单调递增的数值,用来防止重放攻击。
- 载荷数据:如果没使用ESP的加密功能,则载荷数据域的内容是“下一个头”所指示的数据;如果使用了ESP的加密功能,则使用加密载荷数据和ESP尾部数据所得的密文作为payload data.
- 填充:某些块加密算法用此将数据填充至块的长度。
- 填充长度:以位为单位的填充数据的长度。
- 下一个头:标识载荷中封装的数据所属的协议。
- 认证数据:又叫做完整性校验值(ICV)。包含了认证当前包所必须的数据。
ESP协议不校验ip包头,并且提供数据包的加密和校验。
4.IPsecVPN搭建
ipsecvpn实现有很多软件包的实现,这里基于archlinux使用strongswan实现ipsecvpn的搭建
1.安装ipsecvpn
1 |
|