在本课中,你将了解IPsec。
通过展示IPsec的能力,你将能够使用FortiManager VPN管理器配置IPsec,使用调试流程对IPsec问题进行故障排除,验证IPsec加密和解密行为,捕获IPsec流量,并监控IPsec VPN状态。
在本节中,你将回顾FortiGate基础设施课程中的一些IPsec概念。
IPsec是一套用于验证和加密两个对等体之间流量的协议。该套件中最常用的两个协议是:
● IKE,负责握手、隧道维护和断开连接
● ESP,确保数据完整性和加密
IKE协商FortiGate用于创建IPsec隧道的私钥、身份验证和加密。安全协会(SA)为将安全功能构建到IPsec中提供了基础。IKEv1使用两个不同的阶段:第1阶段和第2阶段。第1阶段使用单个双向SA,第2阶段使用两个IPsec SA,每个流量方向一个。在IKEv2中,没有阶段1和阶段2的概念,但是,FortiOS命令行界面(CLI)和Web GUl基于IKEv1设置。此外,IKEv2中没有野蛮或主模式可供选择。在IKEv2中,对等体最初在初始IKE_SA_INIT交换期间建立安全通道,然后IKE_AUTH交换用于验证远程对等体并创建第一个IPsec SA。
如上图所示,IKEv1和IKEv2之间存在根本区别。在本课中,你将只了解IKEv2。
现在,你将查看最初的IKEv2交换。上图显示了发起者和响应者之间的初始交换。首先,对等体在初始IKE_SA_INIT交换期间建立安全通道,然后IKE_AUTH交换用于验证远程对等体并创建第一个IPsec SA。IKE_SA_INIT是IKEv2初始交换的第一次往返。对等体协商一组加密设置(SAi/SAr),交换他们的Diffie-Hellman公钥(KEi/KEr),交换随机数(Ni/Nr),然后计算用于保护所有后续交换的密钥,如IKE_AUTH、CREATE_CHILD_SA和INFORAL。
在正常的交换中,IKE_SA_INIT进行往返旅行。然而,如果响应者请求另一个带有无效有效载荷通知或DoS保护的密钥交换,它将扩展到两次往返。IKE_AUTH(身份验证)在SA_INIT之后进行,是初始交换的最后阶段。它受到加密算法和SA_INIT密钥的保护。IKEv2中有三种类型的身份验证方法。
IKEv2有三种类型的交换:初始交换、CREATE_CHILD_SA交换和信息交换。默认情况下,在IKE_AUTH期间,肩扛子(IPsec)SA与IKEv2 SA一起协商。如果需要额外的IPsec SA,例如,配置多个FortiOS阶段2,则在随后的CREATE_CHILD_SA交换期间协商它们。一个CREATE_CHILD_SA交换创建一对IPsec SA。IKEv2还使用CREATE_CHILD_SA交换来重新键入IKE SA和子SA。IKEv2使用信息交换来传达有关错误和通知的控制消息。
IKEv2有三种类型的交换:初始交换、CREATE_CHILD_SA交换和信息交换。默认情况下,在IKE_AUTH期间,肩扛子(IPsec)SA与IKEv2 SA一起协商。如果需要额外的IPsec SA,例如,配置多个FortiOS阶段2,则在随后的CREATE_CHILD_SA交换期间协商它们。一个CREATE_CHILD_SA交换创建一对IPsec SA。基于IKEv2设计,在IKE_AUTH交换期间不会交换Diffie-Hellman公钥(KE)。这意味着不能为IKE_AUTH期间谈判的肩扛子SA强制执行PFS。DiffieHellman公钥仅在CREATE_CHILD_SA中交换。这是唯一一个执行PFS的儿童SA谈判交易所。IKEv2还使用CREATE_CHILD_SA交换来重新键入IKE SA和Child SA。IKEv2使用信息交换来传达有关错误和通知的控制消息。
如果在IKEv2连接期间IP层发生碎片,有效载荷大小可能会超过IP最大传输单元(MTU),数据包可能会被碎片化。因此,一些网络设备不允许小型UDP碎片通过,以防它们是碎片攻击的一部分。问题是,如果不是所有UDP片段都通过,IKE协商就会失败,因为目标收件人无法重建原始IKE数据包。IKE SA无法建立。因此,解决方案是在IKE层碎片数据包。
借助IKEv2碎片化支持,碎片化发生在IKE层而不是IP层。因此,随着IKE层发生碎片,路由器和防火墙不会阻止IP层的数据包,IPsec通信也没有问题。重要的是要知道,在IKEv2碎片化期间,只有某些IKEv2数据包被认为是可碎片的。IKEv2片段的最大数量为64个,重新组装超时为15秒。你可以使用上图显示的FortiOS CLI来配置碎片。
上图显示的示例是发送方侧的IKEv2 AUTH消息碎片。AUTH消息比碎片mtu更大。
在接收方,所有七条消息都成功重新组装,并显示收到的AUTH消息。
在本节中,你将学习如何使用FortiManager VPN管理器配置IPsec VPN。
在VPN管理器屏幕上,你可以配置可以在多个设备上安装的IPsec VPN设置。这些设置作为对象存储在对象数据库中。你通过安装策略包将IPsec VPN设置推送到一个或多个设备。按照以下步骤与VPN管理器一起配置VPN:
1. 创建一个VPN社区。
2. 向社区添加网关(成员)。
3. 安装VPN社区和网关配置。
4. 添加防火墙策略。
5. 安装防火墙策略。
根据正在安装的VPN拓扑,有三种类型的社区:
● 点到点
● 星形
● 远程
VPN社区包含所有网关通用的IPsec第1阶段和第2阶段设置。
下一步是为社区添加网关。有两种类型的网关:
● 托管网关
● 外部网关
托管网关由FortiManager在当前ADOM中管理。你可以将不同ADOM或其他供应商设备中的设备视为外部网关。管理员必须在该ADOM中手动处理VPN配置。
在VPN网关中,你可以根据你选择的VPN拓扑配置节点类型(中心、分支等)。例如,中心和分支选项仅在星形拓扑中可用。
对于每个网关,你还可以配置受保护的子网、接口和一些高级设置。
在本节中,你将了解FortiGate如何路由IP流量。
如果IPsec VPN已在接口模式下配置,则每次拨号IPsec连接时,静态路由会自动添加到客户端。静态路由的目标子网是第2阶段快速模式选择器中收到的子网。当使用IKE模式配置或通过IPsec的DHCP时,这些子网(带有/32掩码)与分配给拨号用户的IP地址匹配。
如果你正在通过IPsec运行动态路由协议,请禁用添加路由。这将防止FortiGate动态添加路线。路由不需要动态添加,因为动态路由协议在隧道启动后更新路由表。
默认情况下,分配给这些动态路由的距离是15,优先级是0。你可以在第1阶段配置中更改这些值。
当启用第1阶段设置网络设备时,FortiGate为每个拨号客户端创建单独的虚拟接口。这些接口的名称包括第1阶段名称和索引号。
当你使用此配置时,FortiGate使用快速模式选择器的目标子网中的信息来学习每个远程IPsec客户端背后的网络。每个虚拟IPsec接口都与一个客户端(或一个IKE SA)相关联。
如果网络设备被禁用,FortiGate将创建一个IPsec虚拟接口,该接口由连接到同一拨号VPN的所有IPsec客户端共享。
FortiGate使用快速模式选择器的目标子网为路由表填充有关远程网络的信息。
如果添加路由设置为禁用,FortiGate不会使用快速模式选择器来了解远程网络。FortiGate将在动态路由协议的帮助下学习这些路由,该协议必须配置为在IPsec隧道上运行。
当网络设备被禁用时,FortiGate创建一个由所有IPsec客户端共享的单个IPsec虚拟接口。FortiGate会自动为每个IPsec客户端分配一个隧道ID(tun-id)。FortiGate将此信息与通过路由协议学到的路由相结合,以正确路由IPsec流量,选择正确的出站IPsec虚拟接口和IKE SA。
diagnose vpn tunnel list命令的输出显示了远程IP和相关隧道ID的列表。
如果两个远程站点具有相同的子网,它们可能会在中央FortiGate中创建重叠的静态路由。第2阶段中的设置路由重叠定义了当新的远程站点正在连接并且有一个远程站点已经与重叠子网连接时,FortiGate将采取什么操作。可能的行动包括:
● use-new(默认):断开现有的拨号VPN并接受新的VPN。
● use-old:保持现有的拨号VPN,并拒绝新的VPN。
● allow:保持现有的拨号VPN并接受新的VPN。从中央FortiGate开始的会话流量将在两个VPN之间进行负载均衡(ECMP)。
两个站点之间的两个或多个IPsec隧道可以合并以创建一个聚合隧道。这类似于LACP端口聚合。创建一个聚合IPsec接口,用于路由和防火墙策略。
聚合IPsec隧道支持五种负载均衡方法:
● round-robin:每个包的流量是均衡的。
● L3:根据第3层头信息均衡流量。
● L4:根据第4层头信息均衡流量。
● redundant:所有流量都通过最先出现的隧道发送。其他隧道用于备份。
● weighted-round-robin:根据为每个隧道配置的链接权重,以循环方式均衡流量。
前向纠错(FEC)是第1阶段设置,启用后,会添加带有冗余数据的额外数据包。收件人可以使用这些冗余信息重建任何丢失的数据包或任何带有错误的数据包。虽然此功能增加了带宽使用量,但它提高了可靠性,可以克服有损或噪声链路等不利的广域网条件。FEC对于为语音和视频服务等业务关键型应用程序提供更好的用户体验至关重要。
在本节中,你将学习如何监控IPsec VPN的状态。
你可以使用diagnose vpn tunnel list命令查看和监控IPsec隧道。
在一些FortiGate型号上,你可以将IPsec流量的加密和解密卸载到硬件。支持的算法取决于卸载加密和解密的单元上的处理器型号和类型。
默认情况下,为受支持的算法启用硬件卸载。如有必要,上图显示了可用于禁用每个隧道硬件卸载的命令。
所有IPsec SA都有一个指示卸载状态的npu_flag字段。在IPsec流量的情况下,FortiGate会话表还包括该字段。
首先,当第2阶段上升时,IPsec SA被创建并加载到内核中。只要没有穿过隧道的交通,SA就不会复制到NPU,npu_flag就会显示00。当IPsec卸载被禁用时,该字段的值也保持00。
其次,如果到达的第一个IPsec数据包是可以卸载的出站数据包,则出站SA将被复制到NPU,npu_flag更改为01。但是,如果第一个IPsec数据包是入站并且可以卸载,则入站SA将被复制到NPU,npu_flag更改为02。
两个SA复制到NPU后,npu_flag更改为03。
npu_flag字段中的值20表示由于不受支持的密码或HMAC算法,硬件卸载不可用。
上图显示了你在本课中涵盖的目标。通过掌握本课程涵盖的目标,你学会了如何使用IPsec。