目录
一、背景
企业处于异地的分部、异地出差员工需要与公司总部进行通信时,需要经过公网上传输完成私网访问。公网上传输企业可以通过直接拉专线、电路交换等广域网技术连接其分部或出差员工,对于这个方法除了部署成本高、移动用户远程拨号接入费用高外还存在着信息泄露、被篡改等安全问题。我们可以通过VPN技术在公网上建立一个专用、具有一定安全性和服务质量保障的隧道,确保数据能够被传输的同时不被未经授权的第三方截取或篡改。
二、简介
1、概述
IPSec VPN:是一个安全协议框架,具有基于密码学、可操作性、高质量的安全保护机制。
VPN类型:3层VPN,利用IPSec隧道构建的网络层VPN
场景:经过公网完成私网之间的访问,远程访问VPN、站点到站点VPN、云服务安全等
2、协议架构
IPSec VPN不是具体的协议,是由一系列安全协议组成的安全协议框架
①安全协议:
作用:业务数据经过IPSec加密后的报文,保护业务数据。保护的数据主要是IP数据包(包括应用层数据、TCP/UDP报头、原始IP报头)
类型:认证头(AH)、封装安全载荷(ESP)
AH:基于IP协议号51,验证头部。
ESP:基于IP协议号50,封装安全载荷。
特点:都支持提供身份验证、完整性检测、抗重放攻击;数据加密上,AH不支持,ESP支持;完整性和认证上,AH通过散列计算是对整个报文计算包括报文头和数据部分,ESP通过散列计算是只对数据部分做验证。
推荐使用ESP,ESP支持加密更加安全且可以在NAT环境下工作。NAT环境是对报文的源或目的IP地址进行转换,报文头发生变化AH认证不能通过。
②封装模式:
作用:定义报文的封装结构
概念:加密点、通信点
加密点:部署VPN的设备
通信点:业务数据的收发设备
类型:传输模式、隧道模式
封装前报文格式:IPH+DATA (IPH:IP头部;DATA:数据部分包括TCP/UDP头部)
传输模式:只保护IP数据包的有效负载(Payload),不保护IP头部。在传输模式下,原始IP包的头部保持不变,只有数据部分(以及TCP/UDP头)受到保护
封装后报文格式:IPH+安全协议(AH/ESP)+DATA
AH:在传输模式下,AH会对整个IP包(包括IP头和数据部分)进行完整性检查和认证。
ESP:在传输模式下只加密数据部分,并可选择对数据部分进行完整性检查。
场景:加密点和通信点在同一台设备上,业务本身可达
隧道模式:将整个IP包(包括原始IP头和数据部分)封装在一个新的IP包中。这个新的封装IP包具有新的IP头部。
封装后报文格式:IPH(新)+安全协议(AH/ESP)+IPH(原始)+DATA。新的IP头大多情况下是封装公网的IP地址实现公网上通信,原始的IP头指私网IP地址。
AH:在隧道模式下,AH会对整个封装后的IP包(包括新的IP头和原始的整个IP包)进行完整性检查和认证。
ESP:在隧道模式下会对整个原始IP包进行加密,并封装在一个新的IP包中。ESP可以选择对加密后的数据进行完整性检查,但不保护新的IP头部。
场景:加密点和通信点不在同一台设备上,业务本身不可达
区别:封装后是否会产生新的报文;业务本身是否可达
③安全联盟(SA):
作用:在两个通信实体之间建立一个安全通信的参数集合(看成是VPN双方安全参数的约定,是一份安全通信“合同”)
三要素:安全参数索引(SPI)、安全协议、目的地址
安全参数索引:唯一的标识符,用于区分不同的SA。SPI是方向性的,即发送方和接收方各自有一个用于加密和解密的SPI。
安全协议:使用AH/ESP
目的地址:跟谁建立VPN
安全联盟数据库(SADB):存储所有活跃SA的数据库
④互联网秘钥交换协议(IKE):
作用:实现在不安全的互联网上进行VPN交互,定义VPN双方的协商流程
阶段一:IKE SA
基于UDP端口号500
作用:建立一个安全的、加密的通道,用于接下来进行的密钥协商和SA协商。
模式:主模式、野蛮模式
主模式:最高的安全性,通过六个消息交换来完成,建立加密和认证。
第一对:SA交换,协商确认双方构建安全隧道策略的过程;
第二对:密钥交换
第三对:ID信息和验证数据的交换,验证对等体。
野蛮模式:快速,使用三个消息交换来完成。
第一条:发起方发送本地IKE信息,包括建立IKE SA所使用的参数、与密钥生成相关的信息和身份验证信息。
第二条:接收方对收到的第一个消息进行确认,查找并返回匹配的参数、密钥生成信息和身份验证信息。
第三条:发起方通过第三条消息回应验证结果,并成功建立IKE SA。
区别: 交互的报文数量、对等体标识
场景:主模式适合安全需求高;野蛮模式适合已知对方所使用的VPN策略能够快速建立VPN
阶段二:IPSec SA
作用:在已经建立的IKE SA通道上协商实际的IPSec SA,用于保护IP数据包的传输
模式:快速模式。过程与野蛮模式相似
3、特点
不支持组播,也就是说不能直接使用路由协议(需要额外的配置或特定的网络设计让IPSec VPN支持组播)
分支之间无法直接访问,在一些IPSec VPN部署场景中,存在所谓的“孤岛”现象,它们需要通过一个中心点或总部来进行路由和通信
IPSecVPN是一对一的,端对端建立的
三、执行流程
数据包出站:
数据包入站:
四、基本配置
厂商间IPSec VPN技术的执行流程、协议架构等大同小异,差别主要还是在配置上。以下将通过思科的环境,来为大家展示相应配置,其他厂商可以参考厂商的产品文档
实验要求
RA为企业分支网关,RB为企业总部网关,分支与总部通过公网建立通信。分支子网为10.1.1.0/24,总部子网为10.1.2.0/24。
企业希望对分支子网与总部子网之间相互访问的流量进行安全保护。分支与总部通过公网建立通信,可以在分支网关与总部网关之间建立一个IPSec隧道来实施安全保护。由于维护网关较少,考虑采用手工方式建立IPSec隧道。
IPSec配置前的准备
四步走:确定保护的流量/业务、确定保护的路径、确定保护的策略、确定保护的强度
通过ACL来确定保护的流量,使用VPN路径进行保护,根据需要的保护强度确定两边安全策略
思科
RA和RB分别为企业公司分部、总部的出口路由器和子网的默认网关,PCA、PCB分别为企业分部、总部内的终端,ISP模拟运营商。
实验要求实现PCA能够通过IPSec VPN去访问PCB
1)路由器RA、RB上修改设备名称、配置端口IP地址、配置静态路由指向ISP实现公网可达
RA
Router>ena
Router#conf t
Router(config)#ho RA ---修改设备名称RA(config)#int e0/1
RA(config-if)#ip add 10.1.1.1 255.255.255.0
RA(config-if)#no shu
RA(config-if)#exit
RA(config)#int e0/0
RA(config-if)#no shu
RA(config-if)#ip add 1.1.1.1 255.255.255.0 ---配置端口IP地址
RA(config-if)#exit
RA(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.2 ---配置静态路由
RB
Router>ena
Router#conf t
Router(config)#ho RB ---修改设备名称RB(config)#int e0/1
RB(config-if)#ip add 10.1.2.1 255.255.255.0
RB(config-if)#no shuRB(config-if)#exit
RB(config)#int e0/0
RB(config-if)#no shu
RB(config-if)#ip add 2.1.1.1 255.255.255.0 ---配置端口IP地址
RB(config-if)#exit
RB(config)#ip route 0.0.0.0 0.0.0.0 2.1.1.2 ---配置静态路由
测试公网可达
![]()
2)配置ACL匹配需要保护的业务/流量
使用高级访问控制列表(ACL)可以精确匹配并控制感兴趣的数据流,帮助确保只有符合特定条件的流量才能通过VPN隧道。
RA(config)#access-list 100 permit ip host 10.1.1.2 host 10.1.2.2 ---配置高级ACL,精准匹配保护流量
RB(config)#access-list 100 permit ip host 10.1.2.2 host 10.1.1.2
3)阶段一策略:加密、完整、认证方式、DH算法(生成密钥资源)
阶段一主要目的建立IKE安全关联(IKE SA),用于保护随后密钥交换过程的安全通道。在该阶段,两个通信端点(通常是两个IPSec网关)执行密钥交换,以建立一个安全且经过身份验证的通信会话。
RA(config)#crypto isakmp policy 10 ---创建一个名为10的ISAKMP策略组
RA(config-isakmp)#encryption 3des ---使用三重DES(3DES)作为加密算法
RA(config-isakmp)#hash md5 ---使用MD5哈希算法进行完整性检查
RA(config-isakmp)#authentication pre-share ---认证方式 预共享密钥
RA(config-isakmp)#group 15 ---DH算法
RA(config-isakmp)#exitRA(config)#crypto isakmp key 123 address 2.1.1.1 ---配置预共享密钥,其中key值为123,对端地址为2.1.1.1
RB(config)#crypto isakmp policy 10
RB(config-isakmp)#encryption 3des
RB(config-isakmp)#hash md5
RB(config-isakmp)#authentication pre-share
RB(config-isakmp)#group 15
RB(config-isakmp)#exit
RB(config)#crypto isakmp key 123 address 1.1.1.1
4)阶段二:协商IPSec参数、建立IPSec SA、密钥管理。同时在接口下调用
一旦阶段一成功完成,IKE SA建立后,就可以进入阶段二。阶段二的主要目的是建立IPSec安全关联(IPSec SA),用于保护实际数据传输的安全通道。在这个阶段,端点协商用于封装和加密IP数据报文的具体参数。
RA(config)#crypto ipsec transform-set ie esp-3des esp-sha-hmac ---创建名为
ie
的IPSec转换集,使用了3DES作为加密算法和SHA-HMAC作为认证算法。
RA(cfg-crypto-trans)#mode tunnel ---设置转换集ie
在隧道模式下工作
RA(cfg-crypto-trans)#exit
RA(config)#crypto map ie 10 ipsec-isakmp ---创建名为ie
的加密映射,并给它分配了一个优先级数字10
。这个映射将使用IKE来协商安全参数。
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
RA(config-crypto-map)#set peer 2.1.1.1 ---指定与本加密映射关联的对等体(即VPN对端)的IP地址为2.1.1.1
。
RA(config-crypto-map)#set transform-set ie ---将之前定义的名为ie
的转换集应用到这个加密映射上
RA(config-crypto-map)#match address 100 ---调用ACL列表
RA(config-crypto-map)#exit
RA(config)#int e0/0
RA(config-if)#crypto map ie ---在接口下调用加密映射ie
RB(config)#crypto ipsec transform-set ie esp-3des esp-sha-hmac
RB(cfg-crypto-trans)#mode tunnel
RB(cfg-crypto-trans)#exit
RB(config)#crypto map ie 10 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
RB(config-crypto-map)#set peer 1.1.1.1
RB(config-crypto-map)#set transform-set ie
RB(config-crypto-map)#match address 100
RB(config-crypto-map)#exit
RB(config)#int e0/0
RB(config-if)#crypto map ie
5)测试效果及相关查看命令
PCB ping PCA 测试通信
![]()
RA#show crypto isakmp sa ---查看阶段一状态
![]()
RA#show crypto isakmp policy ---查看阶段一策略
RA#show crypto ipsec sa ---查看阶段二状态
RA#show crypto ipsec transform-set ---查看阶段二策略
RA#show crypto map ---查看静态map
RA#show crypto engine connections active ---查看加解密的报文数量
厂商产品文档
华为: