Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

BGP 的 TCP 访问限制

了解 BGP 与 TCP 的安全选项

在路由协议中,BGP 在使用 TCP 作为其传输协议方面独树一帜。通过在路由设备之间手动配置建立 BGP 对等方,以便在端口 179 上创建 TCP 会话。启用 BGP 的设备会定期发送激活消息以保持连接。

随着时间的推移,BGP 已成为互联网上占主导地位的域间路由协议。但是,它对稳定性和安全性的保证有限。为 BGP 配置安全选项时,必须在适当的安全措施与可接受的成本之间取得平衡。没有一种方法优于其他方法。每个网络管理员都必须配置满足所用网络需求的安全措施。

有关 BGP 使用 TCP 作为传输协议的安全问题的详细信息,请参阅 RFC 4272,BGP 安全漏洞分析

示例:配置过滤器以阻止对端口的 TCP 访问(来自指定 BGP 对等方除外)

此示例说明如何配置标准无状态防火墙过滤器,以阻止除指定 BGP 对等方之外的所有请求方对端口 179 的所有 TCP 连接尝试。

要求

在配置此示例之前,不需要除设备初始化之外的特殊配置。

概述

在此示例中,您将创建一个无状态防火墙过滤器,用于阻止除指定 BGP 对等方之外的所有请求者对端口 179 的所有 TCP 连接尝试。

无状态防火墙过滤器 会将来自设备 A 和设备 B 上直接连接的接口的所有数据包与目标端口号 179 进行匹配。filter_bgp179

拓扑

图 1 显示了此示例中使用的拓扑。设备 C 尝试与设备 E 建立 TCP 连接。设备 E 阻止连接尝试。此示例显示了设备 E 上的配置。

图 1: 具有 BGP 对等会话的典型网络具有 BGP 对等会话的典型网络

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI 中。[edit]

设备 C

设备 E

配置设备 E

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

要使用无状态防火墙过滤器配置设备 E,以阻止除指定 BGP 对等方之外的所有请求者对端口 179 的所有 TCP 连接尝试,请执行以下操作:

  1. 配置接口。

  2. 配置 BGP。

  3. 配置自治系统编号。

  4. 定义接受来自指定 BGP 对等方的端口 179 的 TCP 连接尝试的过滤器术语。

  5. 定义其他过滤器术语以拒绝来自其他源的数据包。

  6. 将防火墙过滤器应用于环路接口。

成果

在配置模式下,输入 show firewallshow interfacesshow protocolsshow routing-options 命令,以确认您的配置。如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。

如果完成设备配置,请从配置模式输入 commit

验证

确认配置工作正常。

验证是否已配置过滤器

目的

确保筛选器列在命令的 输出中。show firewall filter

操作

验证 TCP 连接

目的

验证 TCP 连接。

操作

在操作模式下, 在设备 C 和设备 E 上运行命令。show system connections extensive

设备 C 上的输出显示了建立 TCP 连接的尝试。设备 E 上的输出显示仅与设备 A 和设备 B 建立连接。

监控接口上的流量

目的

使用命令将 建立 TCP 连接的接口上的流量与未建立 TCP 连接的接口上的流量进行比较。monitor traffic

操作

在操作模式下, 在设备 B 的设备 E 接口和设备 C 的设备 E 接口上运行命令。以下示例输出验证在第一个示例中是否收到了确认 () 消息。monitor trafficack 在第二个示例中, 未收到消息。ack

示例:配置过滤器以根据前缀列表限制对端口的 TCP 访问

此示例说明如何配置标准无状态防火墙过滤器,通过指定包含允许的 BGP 对等方的前缀源列表,限制发往路由引擎的某些 TCP 和互联网控制消息协议 (ICMP) 流量。

要求

配置此示例之前,不需要除设备初始化之外的特殊配置。

概述

在此示例中,您将创建一个无状态防火墙过滤器,该过滤器阻止所有请求方对端口 179 的所有 TCP 连接尝试,但具有指定前缀的 BGP 对等方除外。

拓扑

将创建一个源前缀列表 ,用于指定包含允许的 BGP 对等方的源前缀列表。plist_bgp179

无状态防火墙过滤器 匹配源前缀列表中 与目标端口号 179 的所有数据包。filter_bgp179plist_bgp179

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI 中。[edit]

配置过滤器

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

要配置过滤器:

  1. 展开前缀列表 以包括由 定义的 BGP 对等组指向的所有前缀。bgp179protocols bgp group <*> neighbor <*>

  2. 定义过滤器术语,该术语拒绝除指定 BGP 对等方之外的所有请求方对端口 179 的 TCP 连接尝试。

  3. 定义另一个过滤器术语以接受所有数据包。

  4. 将防火墙过滤器应用于环路接口。

成果

在配置模式下,输入 、 和 命令确认您的配置。show firewallshow interfacesshow policy-options 如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。

如果完成设备配置,请从配置模式输入 commit

验证

确认配置工作正常。

显示应用于环路接口的防火墙过滤器

目的

验证防火墙过滤器 是否已应用于逻辑接口 上的 IPv4 输入流量。filter_bgp179lo0.0

操作

对 逻辑接口 使用命令,并包括该 选项。show interfaces statistics operational modelo0.0detail 在 命令输出部分的部分下,该 字段显示应用于输入方向逻辑接口的无状态防火墙过滤器的名称。Protocol inetInput Filters

示例:限制 BGP 的 TCP 分段大小

此示例说明在使用最大传输单元 (MTU) 发现时,如何通过限制 TCP 段大小来避免互联网控制消息协议 (ICMP) 漏洞问题。在 TCP 路径上使用 MTU 发现是避免 BGP 数据包分段的一种方法。

要求

在配置此示例之前,不需要除设备初始化之外的特殊配置。

概述

TCP 在两个对等方之间建立会话连接期间协商最大分段大小 (MSS) 值。协商的 MSS 值主要基于通信对等方直接连接到的接口的最大传输单元 (MTU)。但是,由于 TCP 数据包所采用路径上的链路 MTU 会发生变化,当数据包大小超过链路的 MTU 时,网络中某些完全在 MSS 值内的数据包可能会分段。

要配置 TCP MSS 值,请包含 段大小为 1 到 4096 的语句。tcp-mss

如果路由器收到设置了 SYN 位和 MSS 选项的 TCP 数据包,并且数据包中指定的 MSS 选项大于语句 指定的 MSS 值,则路由器会将数据包中的 MSS 值替换为语句指定的 较低值。tcp-msstcp-mss

配置的 MSS 值用作发送方的最大分段大小。假设发送方用于与 BGP 邻接方通信的 TCP MSS 值与发送方可以从 BGP 邻接方接受的 TCP MSS 值相同。如果来自 BGP 邻居的 MSS 值小于配置的 MSS 值,则来自 BGP 邻居的 MSS 值将用作发送方的最大分段大小。

TCP over IPv4 和 TCP over IPv6 支持此功能。

拓扑图

图 2 显示了此示例中使用的拓扑。

图 2: BGP 的 TCP 最大分段大小BGP 的 TCP 最大分段大小

配置

CLI 快速配置

要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,然后将命令复制并粘贴到层次结构级别的 CLI 中。[edit]

R0

程序

分步过程

以下示例要求您在配置层次结构中导航各个级别。有关导航 CLI 的信息,请参阅《Junos OS CLI 用户指南》中的在配置模式下使用 CLI 编辑器。在配置模式下使用 CLI 编辑器https://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html

要配置路由器 R0:

  1. 配置接口。

  2. 配置内部网关协议 (IGP),在本例中为 OSPF。

  3. 配置一个或多个 BGP 组。

  4. 配置 MTU 发现以防止数据包分段。

  5. 配置 BGP 邻接方,将 TCP MSS 设置为全局组或专门针对各种邻接方设置。

    注:

    TCP MSS 邻居设置将覆盖组设置。

  6. 配置本地自治系统。

成果

在配置模式下,输入 、 和 命令确认您的配置。show interfacesshow protocolsshow routing-options 如果输出未显示预期的配置,请重复此示例中的说明,以便进行更正。

如果完成设备配置,请从配置模式输入 commit

验证

要确认配置工作正常,请运行以下命令:

  • show system connections extensive | find <neighbor-address>,以检查协商的 TCP MSS 值。

  • monitor traffic interface,以监控 BGP 流量并确保配置的 TCP MSS 值用作 TCP SYN 数据包中的 MSS 选项。

故障排除

使用 MTU 发现进行 MSS 计算

问题

考虑一个示例,其中两个路由设备(R1 和 R2)具有内部 BGP (IBGP) 连接。在两个路由器上,连接的接口都将 4034 作为 IPv4 MTU。

在设备 R1 上的以下数据包捕获中,协商的 MSS 为 3994。在 MSS 的信息中 ,它设置为 2048。show system connections extensive

解决方案

这是 Junos OS 的预期行为。MSS 值等于 MTU 值减去 IP 或 IPv6 和 TCP 报头。这意味着 MSS 值通常比 MTU 小 40 个字节(对于 IPv4),比 MTU(对于 IPv6)小 60 个字节。此值在对等方之间进行协商。在此示例中,它是 4034 - 40 = 3994。然后,Junos OS 将此值舍入为 2 KB 的倍数。值为 3994 / 2048 * 2048=2048。因此,没有必要在输出中看到 相同的 MSS 值。show system connections

3994 / 2048 = 1.95

1.95 四舍五入为 1。

1 * 2048 = 2048