pfSense book之IPsec

IPsec

  • IPsec和IPv6
  • 配置选项
  • IPsec和防火墙规则
  • IPsec 点对点连接示例
  • IPsec IKEv2配置示例

IPsec提供了一种基于标准的VPN实施方案,可与各种移动连接的客户端兼容,并提供其他防火墙和路由器以实现站点间连接。 它支持众多的第三方设备,并且正在生产环境中使用,包括从消费级Linksys路由器到IBM z / OS大型机以及其他可以想象的所有设备。 本章介绍可用的配置选项。

注意:pfSense软件支持IKEv1和IKEv2的IPsec,每个隧道的多个阶段2定义,以及NAT穿越,针对阶段2定义的NAT,大量加密和哈希选项以及用于移动客户端的更多选项,包括xauth和EAP。

IPsec 术语

在深入研究配置之前,在本章中有几个术语需要解释。在配置选项中使用其他术语时会有更详细的解释。

IKE

IKE代表互联网密钥交换,有两种不同的类型:IKEv1和IKEv2。 几乎所有支持IPsec的设备都使用IKEv1。 越来越多的设备也支持IKEv2协议,这是IKE的更新版本,它解决了早期版本中存在的一些问题。 例如,IKEv2具有MOBIKE,这是移动客户端的标准,允许他们动态地切换地址。 它还具有内置的NAT穿越功能,以及与DPD类似的标准可靠性机制。 一般来说,IKEv2提供了更稳定和可靠的体验,前提只要两端支持它。

ISAKMP 安全协会

ISAKMP代表互联网安全协会和密钥管理协议。 它为双方提供了一种机制,通过它可以建立一个安全的通信通道,包括交换密钥和提供认证。

ISAKMP安全联盟(ISAKMP SA)是一种单向策略,它定义了流量如何加密和处理。 每个活动IPsec隧道将有两个安全关联,每个方向一个。 ISAKMP安全关联设置在每个端点的公共IP地址之间。 这些活动安全关联的知识保存在安全关联数据库(SAD)中。

安全策略

安全策略管理IPsec隧道的完整规范。 与安全协会一样,这些是单向的,因此对于每个隧道,每个方向都会有一个隧道。 这些条目保存在安全策略数据库(SPD)中。 一旦添加隧道,SPD就会为每个隧道连接填充两个条目。 相比之下,SAD条目仅在成功协商连接时才存在。

在pfSense中,安全策略控制内核将拦截通过IPsec传递的流量。

阶段 1

IPsec隧道有两个阶段的协商。 在阶段1期间,隧道的两个端点在使用ISAKMP协商SA条目和交换密钥之间建立安全通道。 这还包括身份验证、检查标识符以及检查预共享密钥(PSK)或证书。 当阶段1完成时,两端可以安全地交换信息,但尚未决定通过隧道或其加密的流量。

阶段 2

在阶段2中,两个端点根据安全策略协商如何加密和发送私人主机的数据。 这部分构建了用于在端点和其端点处理流量的客户端之间传输数据的隧道。 如果双方的策略都达成一致并且第二阶段已经成功建立,那么隧道将启动并准备好用于匹配阶段2定义的流量。

IPsec和 IPv6

IPsec能够通过IPv4或IPv6阶段1对等体地址连接到隧道,但对于IKEv1,隧道只能在隧道阶段2定义内包含相同类型的流量,用于将流量传递到隧道外部。 这意味着,尽管IPv4或IPv6可能在隧道内携带,但要在隧道内部使用IPv6流量,它必须连接在IPv6对等IP地址之间,而不是IPv4。 换句话说,内部和外部地址族必须匹配,它们不能混合使用。

与IKEv1的大多数其他缺点一样,这已在IKEv2中解决。 无论使用哪种协议来建立外部隧道,使用IKEv2的隧道都可以承载这两种类型的流量。 使用IKEv2,移动客户端也可以使用IPv4和IPv6,前提是客户端支持它。

配置选项

IPsec提供多种配置选项,影响IPsec连接的性能和安全性。 实际上,对于中等以下带宽的使用,只要DES不被使用,选择哪个选项就没什么关系。除非被保护的流量非常有价值,才需要更复杂的加密。 性能是考虑的最重要因素,在出现这种情况时,制定配置时需要更多的关注。

阶段1 设置

此处的设置控制隧道的阶段1协商部分。

启用/禁用隧道

“禁用”复选框控制是否激活并使用此隧道(及其关联的阶段2条目)。

密钥交换版本

密钥交换版本选择控制隧道是使用IKE版本1(V1)还是使用IKE版本2(V2)。 IKEv2是IKE的更新版本,在很多方面都是可取的。在大多数情况下,除非双方都正确支持IKEv2,否则将使用IKEv1。

Internet协议

Internet协议选择设置隧道外部的协议。 也就是说,将在外部对等地址之间使用的协议。 对于大多数情况,这将是IPv4,但是如果两端都能够使用IPv6,那么可以使用它。 无论选择哪种协议,都将验证远程网关和相关标识符。

注意:使用IKEv1的隧道只能在阶段2中承载与阶段1相同的协议流量。例如,IPv4对等地址仅将阶段2限制为IPv4网络。 使用IKEv2的隧道可以在阶段2中同时承载IPv4和IPv6流量,而不管哪一种协议用于阶段1。

接口选择

在一般情况下,IPsec隧道的接口都会选WAN,因为隧道连接的是远程站点。

CARP 环境

CARP类型的虚拟IP地址也可以在接口下拉菜单中使用,以用于高可用性环境(高可用性)。 在这些环境中,必须为IPsec隧道终点的广域网选择适当的CARP地址。 通过使用CARP IP地址,它可确保IPsec隧道将由当前处于MASTER状态的高可用性集群成员处理,因此即使主防火墙关闭,隧道也将连接到任何集群成员来接管MASTER角色。

IP别名VIP

如果在使用IP别名类型VIP的接口上有多个IP地址可用,则它们也将在此列表中可用。要使用***的IP地址之一,请在此处选择它。

多WAN环境

使用多WAN(多WAN连接)时,请为隧道将连接的WAN类型接口选择适当的接口选项。如果连接将通过WAN进入,请选择WAN。如果隧道将使用不同的WAN,请选择需要哪个OPT WAN接口。将自动添加静态路由以确保到远程网关的流量通过相应的WAN路由。

网关组也可以从这个列表中选择。与IPsec一起使用的网关组每个层只能有一个网关。使用网关组时,如果第一个网关发生故障,通道将移至组中下一个可用的WAN。当第一个广域网恢复时,隧道将再次在那里重建。如果远端的端点是不支持多个对端地址的端点,例如另一个pfSense防火墙,则必须将其与使用相同网关组进行故障转移的DynDNS主机组相结合。 DynDNS主机将更新远端所见的IP地址,以便远程端点知道接受来自新激活的WAN的流量。

无线内部保护

配置IPsec无线网络添加加密时,请选择与无线网卡相对应的OPT接口。 当使用外部无线接入点时,请选择连接到无线接入点的接口。

远程网关

远程网关是阶段1的IPsec对等端。这是IPsec将在此阶段协商的隧道另一端的端点。可以将其设置为IP地址或完全限定的域名。 设置为使用名称时,该条目由DNS定期解析,并在检测到更改时更新。

描述

阶段1的描述是用于识别阶段1的一些文本。它不用于IPsec设置,仅供参考。

认证方法

IPsec阶段1可以使用预共享密钥(PSK)或RSA证书进行身份验证,身份验证方法选择使用哪种方法来验证远程对等方。 所选方法的相应字段将显示在阶段1配置页面上。

Mutual PSK

当使用Mutual PSK时,对等体使用定义的字符串进行验证。时间越长越好,但由于它很简单,所以有可能被猜测。因此,使用PSK模式时,更长更复杂的密码会更安全。

Mutual RSA

在Mutual RSA模式下,选择用于验证对等方的CA和证书。 在阶段1交换期间,每个对等方将其证书发送给其他对等方,然后根据其共享CA对其进行验证。 在设置阶段1之前,必须为隧道创建CA和证书。

Mutual PSK+Xauth

与移动IPsec和IKEv1一起使用时,此选项将启用xauth用户名和密码验证以及共享(或“组”)预共享密钥。

Mutual RSA+Xauth

与移动IPsec和IKEv1一起使用时,此选项将使用客户端和服务器上的证书启用xauth用户名和密码验证以及RSA证书身份验证。

Hybrid RSA+Xauth

与移动IPsec和IKEv1一起使用时,此选项仅在服务器端启用xauth用户名和密码验证以及证书。它不像Mutual RSA + Xauth那样安全,但对客户来说使用更容易。

EAP-TLS

与移动IPsec和IKEv2一起使用时,RSA EAP-TLS将验证客户端和服务器上的证书是否来自相同的共享CA,与Mutual RSA类似。客户端和服务器证书需要特殊处理:

  • 服务器证书必须具有其公用名称中列出的DNS中存在的防火墙名称,并且必须将其用作主备用名称(SAN)。 防火墙的IP地址也必须在SAN中列出。
  • 阶段1中的标识符也必须设置为与证书通用名称中列出的防火墙主机名匹配。
  • 客户端证书必须将用户名称列为通用名称,然后再次将其用作SAN。

在尝试配置EAP-TLS之前,必须先生成CA和服务器证书。 CA和用户证书必须导入到客户端。

EAP-RADIUS

与移动IPsec和IKEv2一起使用时,此选择将通过RADIUS执行CA验证以及用户名和密码验证。 必须在移动客户端选项卡上选择RADIUS服务器。 虽然用户证书不是必需的,但EAP-RADIUS仍然要求使用与EAP-TLS中提到的属性相同的属性来保存CA和服务器证书。 CA必须导入到客户端,但无需用户证书。

EAP-MSCHAPv2

与移动IPsec和IKEv2一起使用时,EAP-MSCHAPv2的工作原理与EAP-RADIUS相同,除了在***> IPsec下的预共享密钥选项卡上将Secret类型设置为EAP时定义了用户名和密码。 它还需要具有与前面列出的相同要求的CA和服务器证书。 CA必须导入到客户端,但无需用户证书。

协商模式

对于IKEv1,支持两种协商模式选项:main(主), aggressive(积极)。使用IKEv2时此选择不存在。

Main Mode(主模式)

main是最安全的模式,但它也需要对等体之间的更多数据包来完成成功的协商。它的验证也更加严格。

Aggressive Mode(野蛮模式)

Aggressive通常是最兼容的并且是最快的模式。 对于标识符类型比较宽容,并且在某些情况下与第三方设备进行协商时会成功率更高。 它的速度更快,因为它将所有识别信息发送到单个数据包中,这也使得它不那么安全,因为验证数据不像主模式那样严格。

本地ID类型 / 远端ID类型

选择用于发送到远程对等点的ID标识符,用于验证远程对等点的ID标识。 可以为本地ID和远端ID选择以下标识符类型。 如果需要,将出现一个文本框输入一个用于标识符的值。

我的IP地址 / 对等IP地址

它将自动使用接口上的IP地址或选定的VIP作为标识符。对于对等方,这是从中接收数据包的IP地址,应该是远程网关。

IP 地址

IP地址选项允许使用不同的IP地址作为标识符。如果防火墙位于执行NAT的路由器后面,则可能会有这种潜在用途。真正的外部IP地址可以用在这个领域。

可分辨名称

可分辨名称是完全合格域名的另一个术语,例如host.example.com。在该框中输入该格式的值。

用户可分辨名称

用户可分辨名称是电子邮件地址,例如VPN@example.com,而不是FQDN。

ASN.1 可分辨名称

如果使用Mutual RSA认证,这可以是正在使用的证书或类似字符串的主题。

KeyID标记

用作标识符的任意字符串。

动态DNS

要解析并用作标识符的主机名。 如果防火墙位于NAT之后,并且除了动态DNS主机名外没有对其外部IP地址的直接了解,则这非常有用。 这与对等标识符不相关或不可用,因为主机名可直接在远程网关字段中使用,并使用对等IP地址作为标识符。

Any

在远程标识符未知或不能匹配的情况下,对等标识符可以设置为Any(任意)。这在某些类型的移动配置中更为常见,但与正确匹配标识符相比,这是一个不怎么安全的选择。

预共享密钥(如果使用Mutual PSK)

该字段用于输入阶段1认证的PSK。  如果此PSK由对等方提供,请在此处输入。 如果必须生成一个新的PSK,我们建议使用一个长度至少为15位的密码生成工具。

阶段1加密算法

在阶段1和阶段2上有多种加密算法选项。

选择哪个取决于隧道将连接的设备以及此防火墙中可用的硬件。 一般来说,AES是最可取的密码,最长的密钥长度(256位)是最好的。 当连接到第三方设备时,3DES是一种常见选择,因为它可能是另一端支持的唯一选项。

阶段1哈希算法

哈希算法与IPsec一起使用来验证分组数据的真实性。 MD1,SHA1,SHA256,SHA384,SHA512和AES-XCBC是第1阶段和第2阶段的可用哈希算法。尽管SHA1(安全哈希算法,修订版1)及其变体被认为是强于MD5。 SHA1确实需要比MD5更多占用CPU资源,而SHA的更大值又需要更多的CPU占用。 这些哈希算法也可以在某些情况下用名称中的HMAC(哈希消息认证码)来引用,但是必须根据所使用的硬件或软件而变化。

DH密钥组

所有DH(Diffie-Hellman,以它的作者命名)密钥组选项都被认为是安全的,尽管更高的数字在增加CPU使用率的情况下稍微更安全。

有效期

有效期指定连接必须重新生成密钥的频率,以秒为单位指定。默认28800秒是一种常见配置,适用于大多数情况。

我的证书 (如果使用Mutual RSA)

此选项仅在使用基于RSA的身份验证模式时才会显示。 该列表使用防火墙配置中存在的证书填充。 可以在的系统>证书管理,证书选项卡上导入和管理证书。 从列表中选择用于此IPsec阶段1的证书。 此证书的CA必须与我的证书颁发机构选择一致。

我的证书颁发机构 (如果使用Mutual RSA)

此选项仅在使用基于RSA的身份验证模式时才会显示。 该列表使用防火墙配置中存在的CA填充。 CA可以在系统>证书管理下导入和管理。 从列表中选择用于此IPsec阶段1的CA。

禁用重设密钥

选择此选项将指示pfSense不在隧道上启动重设密钥事件。 某些客户端(特别是NAT后面的Windows客户端)在接收到重新密钥请求时会出现问题,因此在这些情况下允许客户端通过禁用服务器上的选项来启动重设密钥会更安全。 通常双方都会根据需要重新生成密钥,但如果发生重新密钥事件时隧道经常失败,请尝试仅在一侧选择此选项。

禁用重新协商

此选项仅适用于IKEv2隧道,IKEv1将始终重新进行身份验证。 如果选中此选项,则当隧道重新生成密钥时不会重新验证对等体。 如果未选中,SA将被全部删除并进行协商,而不仅仅是更新密钥。

仅响应者

如果选择“仅响应者”,则当流量尝试通过时,pfSense不会尝试启动隧道。 隧道只有在远端启动连接时才能建立。 另外,如果DPD检测到隧道发生故障,隧道将被关闭而不是重新启动,从而将其重新连接到远端。

NAT穿越

NAT穿越选项(也称为NAT-T)仅适用于IKEv1。 IKEv2将NAT穿越集成在一起,无需设置。 NAT 穿越可以封装UDP数据包内的IPsec ESP流量,以便在存在NAT的情况下更轻松地运行。 如果此防火墙或隧道另一端的防火墙位于NAT设备后面,则可能需要NAT 穿越。 默认设置为“ Auto(自动)”将在需要检测到的情况下使用NAT穿越。 该选项也可以设置为强制,以确保隧道始终使用NAT穿越。 如果在两个端点之间存在携带ESP流量的已知问题,这这选项可以提供帮助。

MOBIKE

MOBIKE是IKEv2的扩展,用于处理在不同IP地址之间漫游的多宿主客户端和客户端。这主要与移动客户端一起使用,以允许他们在保持连接活动的同时切换远程地址。

拆分连接

此选项只限于IKEv2,并配置在阶段2,使其使用单独的连接条目,而不是每个子安全关联的单个流量选择。 具体而言,这已知是Cisco产品(如ASA)的一个问题。

如果IKEv2隧道正与多个阶段2条目一起使用,并且只有一个阶段2网络对将建立连接,请激活此选项。

失效对等体检测 (DPD)

失效对等体检测(DPD)是定期检查IPsec隧道另一端的主机是否仍然有效。 如果DPD检查失败,则通过删除其关联的SAD条目来拆除隧道,并尝试重新协商。

“延迟”字段控制尝试进行DPD检查的频率,“最大故障数”字段控制在隧道被视为关闭状态之前失败的检测数量。 大约一分钟后,默认10秒和5次故障就会视隧道为关闭。 这些值可能因质量较差的链接而增加,以避免拆除可用但有损耗的隧道。

阶段2设置

IPsec隧道的阶段2设置控制流量将进入隧道以及流量如何加密。 对于普通隧道,这将控制将进入防火墙的子网。 对于移动客户端,这主要控制阶段2的加密,但也可以选择向客户端提供网络列表以用于拆分隧道。 可以为每个阶段1添加多个阶段2定义,以允许在单个隧道内使用多个子网。

启用/禁用

此设置控制着此阶段2条目是否处于活动状态。

模式

此选项允许IPsec的传统隧道模式或传输模式。隧道模式也可以指定IPv4或IPv6。

隧道 IPv4/IPv6模式

当对此阶段2条目使用隧道IPv4或隧道IPv6时,防火墙将隧道匹配指定的本地网络和远程网络的IPv4或IPv6流量。 阶段2可以用于IPv4或IPv6,并且网络值根据该选择进行验证。 与本地网络和远程网络相匹配的流量将进入隧道并传送到另一侧。

注意:使用IKEv1时,只能使用IPv4或IPv6中的一种,并且它必须与用于建立隧道阶段1的地址族相同。对于IKEv2,这两种类型都可以在同一隧道中使用。

传输模式

传输模式将加密阶段1端点IP地址之间的流量。 此模式允许将来自防火墙的外部IP地址的流量加密到远端的外部IP地址。 在两个节点之间发送的任何流量都将被加密,因此可以安全地使用其他不采用加密的隧道方法,例如GIF或GRE隧道。 “本地网络”和“远程网络”未设置为传输模式,它将根据阶段1设置采用地址。

本地网络 (如果使用隧道模式)

顾名思义,该选项设置将与第2阶段相关的本地网络。这通常是***的局域网或其他内部子网,但如果只有一个客户端需要使用隧道,也可以是单个IP地址。已预先设置为每个接口(例如LAN子网)选择子网,并允许手动输入IP地址或子网的地址和网络。

NAT/BINAT 转换

要在本地网络地址上执行NAT以使其显示为不同的子网或公共IP地址,请使用NAT / BINAT转换字段。 如果在本地网络中指定了单个IP地址,并在NAT / BINAT转换类型字段中指定了单个IP地址,则两者之间将建立1:1 NAT转换。 如果在两个字段中都使用相同大小的子网,则还要设置1:1 NAT。 如果本地网络是一个子网,但NAT / BINAT 转换设置为单个IP地址,则设置一个1:多NAT(PAT)转换,其工作方式类似于WAN上的出站NAT规则,所有出站通信将从本地网络转换为NAT域中的单个IP。 如果IPsec流量不需要NAT,请将其设置为无。

远程网络 (如果使用隧道模式)

此选项(仅适用于非移动隧道)指定***另一端(远程)存在的IP地址或网络。它的操作与前面提到的本地网络选项类似。

协议

IPsec可以选择AH(Authenticated Header)或ESP(Encapsulating Security Payload)。 在几乎所有情况下,都使用ESP,因为它是加密流量的唯一选项。 AH只保证流量来自可信来源,很少使用。

阶段2加密算法

在使用AES-NI的系统中,如果远程设备支持AES-NI,则最快和最安全的选择是AES-GCM。在阶段2中使用AES-GCM时,请在阶段1中使用具有相同密钥长度的AES。此外,如果使用AES-CGM,请不要在阶段2中选择任何哈希算法选项。

当使用带有glxsb加速器的系统(如ALIX)时,请选择AES 128以获得最佳性能。对于使用hifn加速器的系统,选择3DES或AES以获得最佳性能。 AES和Blowfish都允许以不同的步长在128位和256位之间选择密钥长度。值越低,速度越快,值越大,密码安全性越高。对于没有硬件密码加速器的系统,Blowfish和CAST是更好的选择。

阶段2的加密选项允许进行多项选择,以便在作为响应者时接受多项选择,或者在作为发起者工作时尝试多种组合。最好只选择单个想要的密钥,但在某些情况下,选择多个将允许隧道在响应者和发起者角色中更好地工作。

阶段2哈希算法

与加密算法一样,可以选择多个哈希。如果可能的话,最好只选择单个想要的选择。

注意:在阶段2加密算法中使用AES-GCM时,不要为哈希算法选择任何选项!

PFS 密钥组

完美前向保密(perfect forward secrecy)是信息安全中提出的观点。要求一个密钥只能访问由它所保护的数据;用来产生密钥的元素一次一换,不能再产生其他的密钥;一个密钥被破解,并不影响其他密钥的安全性。设计旨在长期使用密钥不能确保起安全性的情况下而不影响过去会话的保密性。因此提高了连接的加密安全性,但代价是发生密钥更新时的CPU使用率更高。 这些选项与阶段1中的DH密钥组选项具有相同的属性,有些产品即使在阶段2中也将它们称为“DH”值。

有效期

有效期选项指定连接必须以秒为单位重新生成密钥的频率。3600秒是一种常见配置,适用于大多数情况。

自动Ping主机(保持活动状态)

为了在非移动隧道上使用,该选项告诉防火墙定期发起ping到指定的IP地址。 此选项仅适用于防火墙在本地网络内为阶段2条目设置了IP地址,且此处的ping主机必须位于远程网络内部。

IPsec 和防火墙规则

配置IPsec隧道时,pfSense会自动添加隐藏的防火墙规则以允许UDP端口500和4500,以及远程网关IP地址中的ESP协议指向隧道配置中指定的接口IP地址。当启用移动客户端支持时,除了将源设置为any外,还会添加相同的防火墙规则。要覆盖自动添加这些规则,请选中系统>高级设置,防火墙/ NAT选项卡上的禁用所有自动添加的vpn规则。选中该框后,必须手动将UDP 500,UDP 4500和ESP手动添加到相应WAN接口的防火墙规则。

使用在防火墙>规则策略,IPsec选项卡上配置的规则过滤从IPsec连接的远程端发起的流量。这里可以限制远程IPsec用户可访问的资源。要控制可以从本地网络传输到远程IPsec VPN连接的设备或网络的流量,可以通过主机所在的本地接口上的规则进行控制(例如LAN上的主机的连接受LAN规则控制)。