7.18. 将 VPN 连接分配给专用路由表,以防止连接绕过隧道


DHCP 服务器和无状态地址自动配置(SLAAC)都可以将路由添加到客户端的路由表中。例如,恶意的 DHCP 服务器可以使用此功能强制带有 VPN 连接的主机通过物理接口而不是 VPN 隧道重定向流量。此漏洞也称为 TunnelVision,并参见 CVE-2024-3661 漏洞文章中所述。

要缓解此漏洞,您可以将 VPN 连接分配给专用路由表。这可防止 DHCP 配置或 SLAAC 来处理用于 VPN 隧道的网络数据包的路由决策。

如果至少有一个条件应用到您的环境,请按照以下步骤操作:

  • 至少一个网络接口使用 DHCP 或 SLAAC。
  • 您的网络不使用阻止恶意 DHCP 服务器的机制,如 DHCP 侦听。
重要

通过 VPN 路由整个流量可防止主机访问本地网络资源。

先决条件

  • 您可以使用 NetworkManager 1.40.16-18 或更高版本。

流程

  1. 决定您要使用的路由表。以下步骤使用表 75。默认情况下,RHEL 不使用表 1-254,您可以使用其中任何一个。
  2. 配置 VPN 连接配置文件,将 VPN 路由放在专用路由表中:

    # nmcli connection modify <vpn_connection_profile> ipv4.route-table 75 ipv6.route-table 75
  3. 为您在上一命令中使用的表设置低优先级值:

    # nmcli connection modify <vpn_connection_profile> ipv4.routing-rules "priority 32345 from all table 75" ipv6.routing-rules "priority 32345 from all table 75"

    优先级值可以是 1 到 32766 之间的任何值。值越低,优先级越高。

  4. 重新连接 VPN 连接:

    # nmcli connection down <vpn_connection_profile>
    # nmcli connection up <vpn_connection_profile>

验证

  1. 在表 75 中显示 IPv4 路由:

    # ip route show table 75
    ...
    192.0.2.0/24 via 192.0.2.254 dev vpn_device proto static metric 50
    default dev vpn_device proto static scope link metric 50

    输出确认到远程网络和默认网关路由到路由表 75,因此所有流量都通过隧道路由。如果您在 VPN 连接配置集中设置 ipv4.never-default true,则不会创建默认路由,因此无法在此输出中可见。

  2. 在表 75 中显示 IPv6 路由:

    # ip -6 route show table 75
    ...
    2001:db8:1::/64 dev vpn_device proto kernel metric 50 pref medium
    default dev vpn_device proto static metric 50 pref medium

    输出确认到远程网络和默认网关路由到路由表 75,因此所有流量都通过隧道路由。如果您在 VPN 连接配置集中设置 ipv4.never-default true,则不会创建默认路由,因此无法在此输出中可见。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.