Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Tcp

许多应用程序和服务都使用 TCP 进行通信。配置 TCP 选项以提高链路质量和安全性。

具有 SYN 和 FIN 标志的 TCP 报头的安全性

默认情况下,您的设备接受在 TCP 标志中同时设置了 SYN 和 FIN 位的数据包。配置设备以丢弃设置 SYN 和 FIN 位的数据包,以减少安全漏洞。

SYN 和 FIN 控制标志通常不会在同一 TCP 分段标头中设置。SYN 标志会同步序列号以启动 TCP 连接。FIN 标志表示要完成 TCP 连接的数据传输结束。它们的目的相互排斥。设置了 SYN 和 FIN 标志的 TCP 报头是异常 TCP 行为,根据操作系统的不同,接收方会发出各种响应。请参阅 图 1

图 1:集 SYN 和 FIN 标志的 TCP 报头 TCP Header with SYN and FIN Flags Set

攻击者可以发送一个同时设置了两个标记的分段,以查看会返回哪种类型的系统回复,从而确定接收端是哪种操作系统。然后,攻击者可以利用任何已知的系统漏洞进行进一步攻击。启用 tcp-drop-synfin-set 语句时,Junos OS 会检查 TCP 标头中是否设置了 SYN 和 FIN 标志。如果发现此类标头,它将丢弃数据包。

禁用 TCP RFC 1323 扩展

要禁用 RFC 1323 TCP 扩展,请在 no-tcp-rfc1323 层次结构级别包含语句 [edit system internet-options]

要禁用保护封装序列 (PAWS) 编号扩展(在 RFC 1323,高性能的 TCP 扩展中介绍),请在层次结构级别上[edit system internet-options]包括no-tcp-rfc1323-paws以下语句:

为会话协商配置 TCP MSS

在建立会话连接期间,两个对等方在协商中达成一致,以确定他们在通信过程中交换的数据包的 IP 分段大小。TCP SYN 数据包中的 TCP MSS(最大分段大小)值用于指定 TCP 数据包的数据字段或分段可包含的最大字节数。如果 MSS 值设置得太高,可能会导致 IP 数据报太大,无法发送,必须进行分片。分段可能会产生额外的开销成本和丢包情况。

为了降低分片的可能性并防止丢包,您可以使用 tcp-mss 语句指定较低的 TCP MSS 值。该 tcp-mss 语句适用于遍历所有路由器入口接口(其 MSS 值高于指定接口)的所有 IPv4 TCP SYN 数据包。您不能免除特定端口的影响。

下一节介绍如何在 T 系列、M 系列和 MX 系列路由器上配置 TCP MSS。

在 T 系列和 M 系列路由器以及 MX 系列路由器上使用服务卡配置 TCP MSS

要使用服务卡在 T 系列和 M 系列路由器以及 MX 系列路由器上指定 TCP MSS 值,请在层次结构级别添加 tcp-mss mss-value 语句 [edit services service-set service-set-name]

参数的范围 tcp-mss mss-value 从 536 字节到 65535 字节。

将服务集添加到要调整 TCP-MSS 值的任何接口:

要查看接收的 SYN 数据包和修改了 MSS 值的 SYN 数据包的统计信息,请发出 show services service-sets statistics tcp-mss 操作模式命令。

有关在 T 系列和 M 系列路由器上配置 TCP MSS 的详细信息,请参阅 路由设备的 Junos OS 服务接口库

使用 MPC 线卡在 MX 系列路由器上配置 TCP MSS 内联

要指定使用 MPC 线卡的 MX 系列路由器上的 TCP MSS 值,请在层级添加语句 tcp-mss [edit interfaces interface-name unit logical-unit-number family family]

参数的范围 mss-value 是 64 到 65,535 字节。TCP MSS 值必须低于接口的 MTU。

以下接口支持此语句:gr-(GRE)、ge-(千兆以太网)、xe-(10 千兆以太网)和 et-(40 千兆和 100 千兆以太网)。支持的家庭是 inetinet6

注意:

使用 MPC 线卡在 MX 系列路由器上内联配置 TCP MSS 仅适用于退出/出口接口的流量,不适用于进入/进入接口的流量。

为本地生成的 TCP/IP 数据包选择固定源地址

本地生成的 IP 数据包是在路由引擎上运行的应用程序产生的数据包。Junos OS 会为这些数据包选择一个源地址,以便应用程序对等方作出响应。它还允许您按应用程序指定源地址。为了达到此目的,Telnet CLI 命令包含参数 source-address

本节介绍以下 default-address-selection 语句:

如果您特别选择源地址,如 Telnet, default-address-selection 则不会影响源地址选择。源地址将成为使用 source-address 参数指定的地址(前提是该地址是在路由器接口上指定的有效地址)。如果未指定源地址或指定地址无效, default-address-selection 将影响默认源地址选择。

如果源地址未明确指定为 Telnet 的情况,则默认情况下(未 default-address-selection 指定)为本地生成的 IP 数据包选择的源地址为传出接口的 IP 地址。这表示,根据所选的传出接口,对于给定应用程序的不同调用,源地址可能会有所不同。

如果接口未编号(接口上未指定任何 IP 地址),Junos OS 会使用可预测的算法来确定默认源地址。如果 default-address-selection 指定了 Junos OS,则使用该算法选择源地址,无论传出接口是否编号。这表明,有了 default-address-selection,您可以影响 Junos OS 在本地生成的 IP 数据包中提供相同的源地址,而不管传出接口如何。

Junos OS 的源地址选择行为可以汇总如下表所示:

表 1:源地址选择

传出接口

指定时间default-address-selection

未指定何时default-address-selection

未编号

使用 default-address-selection

使用 default-address-selection

编号

使用 default-address-selection

使用传出接口的 IP 地址

有关默认地址源选择算法的详细信息 ,请参阅配置默认、主地址和首选地址和接口

注意:

对于由 IP 路由协议(包括 OSPF、RIP、RSVP 和组播协议(但不包括 IS-IS)发送的 IP 数据包,本地地址选择通常受协议规范的约束,以便协议正常运行。当路由协议中存在此约束时,数据包的源地址不会受配置中存在 default-address-selection 语句的影响。对于本地地址不受 IBGP 和多跳 EBGP 等协议规范限制的协议,如果在配置协议时未配置特定本地地址,则使用与其他本地生成的 IP 数据包相同的方法选择本地地址。

TCP 身份验证

启用 TCP 身份验证方法可增强安全性,并确保在 BGP 和 LDP 会话期间交换的 TCP 分段的真实性。Junos 设备支持三种主要 TCP 身份验证类型:TCP MD5、TCP 身份验证选项 (TCP-AO) 和基于 TCP 密钥链的身份验证。有关 TCP-AO 的更多信息,请参阅 TCP 身份验证选项 (TCP-AO)。

注意:

尽管 Junos 设备同时支持 TCP-AO 和 TCP MD5 身份验证方法,但对于给定连接,您不能同时同时使用这两种方法。

IP 子网支持

在 Junos OS 演化版 22.4R1 之前,Junos 设备仅允许您对特定地址使用 TCP 身份验证。这意味着,您只能使用已知 IP 地址对远程对等方验证 TCP 连接。

从 Junos OS 演化版 22.4R1 开始,TCP-AO 和 TCP MD5 身份验证支持 LDP 和 BGP 会话的 IP 子网。使用网络地址和前缀长度配置 TCP 身份验证时,您选择的 TCP 身份验证方法会验证到该子网下整个地址范围的 TCP 连接。这意味着您可以对 TCP 连接进行身份验证,而无需知道目标设备的确切 IP 地址。

当 IP 子网重叠时,身份验证方法使用最长前缀匹配 (LPM) 来确定特定 TCP 会话的确切身份验证密钥。

Bgp

要为 BGP 会话配置基于前缀的身份验证,请将语句 allow (all | prefix-list) 包含在以下任一层次结构中:

  • [edit protocols bgp group group-name]

  • [edit protocols bgp group group-name dynamic-neighbor dyn-name]

您可以为子网使用 IPV4 或 IPV6 地址。

在此示例中,TCP MD5 将验证与 10.0.3.0/24 子网中所有 BGP 会话的 TCP 连接:

自民党

要为 LDP 配置基于前缀的身份验证,请在层次结构下 session-group ip-prefix 配置 TCP 身份验证。您必须使用 IPv4 地址。

在此示例中,LDP 使用 TCP-AO 验证与地址在 10.0.0.0/24 子网中的设备的任何 TCP 连接:

有关如何配置 TCP-AO 密钥链,请参阅 TCP 身份验证选项 (TCP-AO)。

VRF 支持

在 Junos OS 演化版 22.4R1 之前的版本中,TCP MD5 和 TCP-AO 会忽略虚拟路由和转发 (VRF) 实例。设备会忽略非默认路由实例下的 TCP MD5 和 TCP-AO 配置。当您在默认 VRF 实例下配置 TCP MD5 或 TCP-AO 时,设备会将此身份验证方法应用于该 VRF 实例的 IP 地址范围内目标的所有 TCP 会话。如果一个 TCP 会话属于非默认 VRF 实例,但目标 IP 地址与默认 VRF 实例相同,则 TCP MD5 和 TCP-AO 将对具有相同目标 IP 地址的两个 TCP 连接应用相同的身份验证密钥。

从 Junos OS 演化版 22.4R1 开始,TCP-AO 和 TCP MD5 身份验证在 BGP 和 LDP 会话中实现 VRF 感知。您可以在非默认路由实例下配置 TCP-AO 和 TCP MD5。您在路由实例下配置的 TCP 身份验证方法只会应用于该 VRF 实例内的 TCP 会话。如果不同 VRF 实例中的 TCP 连接具有相同的目标 IP 地址,则如果 VRF 实例没有为对等方配置 TCP 身份验证,则 TCP 身份验证方法不会应用于该 TCP 连接。

像通常一样配置基于 VRF 的 TCP 身份验证,但在层级下 routing-instances 。要使用 TCP MD5 身份验证,请包括语句 authentication-key authentication-key 。要使用 TCP-AO,请添加以下语句:

有关如何配置 TCP-AO 密钥链,请参阅 TCP 身份验证选项 (TCP-AO)。

您可以将 VRF 感知配置与 IP 子网相结合。这样,您就可以对 VRF 实例内一系列地址的连接进行身份验证。

Bgp

在以下任一层级为 BGP 会话配置基于 VRF 的 TCP 身份验证:

  • [edit routing-instances vrf-instance protocols bgp]

  • [edit routing-instances vrf-instance protocols bgp group group-name]

  • [edit routing-instances vrf-instance protocols bgp group group-name neighbor neighbor-ip]

  • [edit routing-instances vrf-instance protocols bgp group group-name dynamic-neighbor dyn-name]

如果在级别配置基于 VRF 的 dynamic-neighbor 身份验证,请将语句 allow 与所选的身份验证方法配置一起包括在内。例如,要与动态邻接方使用 TCP-AO:

在以下示例中,BGP 使用 TCP 身份验证来确保名为 vrf-one的 VRF 实例中 TCP 连接的安全性。在第 1 组中,BGP 使用 TCP MD5 验证与邻接方 IP 地址为 10.0.1.1 的连接。它使用 TCP-AO 验证 IP 地址为 10.0.1.2 的邻接方连接。

在第二组中,BGP 使用 TCP-AO 验证到 10.0.0.0/24 子网中任何设备的连接。

自民党

在以下任一层级为 LDP 会话配置基于 VRF 的身份验证:

  • [edit routing-instances vrf-instance protocols ldp]

  • [edit routing-instances vrf-instance protocols ldp session session-ip]

  • [edit routing-instances vrf-instance protocols ldp session-group ip-prefix]

在此示例中,TCP-AO 在名为 vrf-two的 VRF 实例中对 TCP 连接进行身份验证。它会验证到地址 10.0.1.1 以及 10.0.0.0/24 子网中的任何地址的 TCP 连接。

版本历史记录表
释放
描述
22.4R1
从 Junos OS 演化版 22.4R1 开始,您可以配置带 IP 子网的 TCP-AO 或 TCP MD5 身份验证,以将整个地址范围包含在该子网下。
22.4R1
从 Junos OS 演化版 22.4R1 开始,TCP 身份验证是 VRF 感知的。