操作系统识别探测
在发起漏洞利用之前,攻击者可能会探测目标主机,试图了解其操作系统。不同的操作系统以不同的方式对 TCP 异常做出反应。有了这些知识,攻击者就可以决定哪种进一步的攻击可能会对设备、网络或两者造成更大的损害,有关详细信息,请参阅以下主题:
了解操作系统识别探测
在启动漏洞利用之前,攻击者可能会尝试探测目标主机以了解其操作系统 (OS)。有了这些知识,他们可以更好地决定发起哪种攻击以及利用哪些漏洞。Junos OS 可以阻止通常用于收集有关 OS 类型信息的侦测探测。
了解域名系统解析
在 Junos OS 12.1X47 版之前,DNS 解析仅使用 UDP 作为传输。UDP 携带的消息限制为 512 字节;较长的消息将被截断,并在标头中设置流量类 (TC) 位。UDP DNS 响应消息的最大长度为 512 字节,但 TCP DNS 响应消息的最大长度为 65,535 字节。如果在标头中设置了 TC 位,DNS 解析器知道响应是否完整。因此,TCP DNS 响应可以比 UDP DNS 响应携带更多信息。
有三种类型的 DNS 解析行为:
UDP DNS 解析
TCP DNS 解析
UDP/TCP DNS 解析
策略使用 UDP/TCP DNS 解析来解析 IP 地址。在 UDP/TCP DNS 解析中,首先使用 UDP DNS 解析,当它被截断时,将使用 TCP DNS 解析。
路由引擎策略最多支持 1024 个可发送到 PFE 的 IPv4 地址前缀和 256 个 IPv6 地址前缀。如果 IPv4 或 IPv6 地址前缀的最大数量超过限制,则超过限制的地址将不会发送到 PFE,并生成系统日志消息。TCP DNS 响应中 IPv4 地址的最大地址数为 4094,IPv6 地址的最大地址数为 2340,但只有 1024 个 IPv4 地址和 256 个 IPv6 地址加载到 PFE。
了解设置了 SYN 和 FIN 标志的 TCP 报头
SYN 和 FIN 控制标志通常不会设置在同一 TCP 分段标头中。SYN 标志同步序列号以启动 TCP 连接。FIN 标志指示数据传输结束以完成 TCP 连接。它们的目的是相互排斥的。设置了 SYN 和 FIN 标志的 TCP 标头是异常 TCP 行为,会导致接收方做出各种响应,具体取决于操作系统。参见 图 1。

攻击者可以发送设置了两个标志的分段,以查看返回的系统回复类型,从而确定接收端的操作系统类型。然后,攻击者可以使用任何已知的系统漏洞进行进一步攻击。
启用此屏幕选项时,Junos OS 将检查 TCP 报头中是否设置了 SYN 和 FIN 标志。如果它发现这样的标头,它会丢弃数据包。
Junos OS 支持 TCP 报头,并带有针对 IPv4 和 IPv6 流量的 SYN 和 FIN 标志集保护。
示例:阻止设置了 SYN 和 FIN 标志的数据包
此示例说明如何创建一个屏幕来阻止设置了 SYN 和 FIN 标志的数据包。
要求
在开始之前,请了解带有 SYN 和 FIN 标志的 TCP 标头的工作原理。请参阅 了解设置了 SYN 和 FIN 标志的 TCP 报头。
概述
设置了 SYN 和 FIN 标志的 TCP 报头会导致目标设备做出不同的响应,具体取决于其运行的操作系统。为安全区域启用同步鳍屏幕。
在此示例中,您将在安全区域中创建一个名为 screen-1 的屏幕,以阻止设置了 SYN 和 FIN 标志的数据包。
拓扑
配置
程序
分步过程
要阻止同时设置了 SYN 和 FIN 标志的数据包,请执行以下操作:
配置屏幕。
[edit] user@host# set security screen ids-option screen-1 tcp syn-fin
在安全区域中启用屏幕。
[edit ] user@host# set security zones security-zone zone-1 screen screen-1
如果完成设备配置,请提交配置。
[edit] user@host# commit
验证
确认配置工作正常。
验证安全区域中的屏幕
目的
验证是否在安全区域中启用了屏幕。
行动
在操作模式下,输入 show security zones
命令。
[edit] user@host> show security zones Security zone: zone-1 Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: screen-1 Interfaces bound: 1 Interfaces: ge-1/0/0.0
了解设置了 FIN 标志和未设置 ACK 标志的 TCP 报头
图 2 显示了设置了 FIN 控制标志的 TCP 分段(用于发出会话结束信号并终止连接)。通常,设置了 FIN 标志的 TCP 段也会设置 ACK 标志(以确认先前收到的数据包)。由于设置了 FIN 标志但未设置 ACK 标志的 TCP 标头是异常 TCP 行为,因此对此没有统一的响应。OS 可能会通过发送设置了 RST 标志的 TCP 分段来响应。另一个可能完全忽略它。受害者的响应可以为攻击者提供有关其操作系统的线索。 (发送设置了 FIN 标志的 TCP 分段的其他目的是在执行地址和端口扫描时逃避检测,以及通过执行 FIN 泛洪来逃避对 SYN 洪水的防御。
供应商在设计其 TCP/IP 实现时对 RFC 793 (传输控制协议)有不同的解释。当 TCP 分段到达时设置了 FIN 标志但没有设置 ACK 标志,某些实现会发送 RST 分段,而其他实现会丢弃数据包而不发送 RST。

启用此屏幕选项时,Junos OS 将检查是否设置 FIN 标志,但未检查 TCP 报头中的 ACK 标志。如果它发现具有此类标头的数据包,则会丢弃该数据包。
Junos OS 支持 TCP 报头,并带有针对 IPv4 和 IPv6 流量的 SYN 和 FIN 标志集保护。
示例:阻止设置了 FIN 标志和未设置 ACK 标志的数据包
此示例说明如何创建一个屏幕来阻止设置了 FIN 标志但未设置 ACK 标志的数据包。
要求
在开始之前,请了解 TCP 标头的工作原理。请参阅 了解设置了 FIN 标志和未设置 ACK 标志的 TCP 标头。
概述
设置了 FIN 标志的 TCP 分段还设置了 ACK 标志,以确认先前收到的数据包。由于设置了 FIN 标志但未设置 ACK 标志的 TCP 标头是异常 TCP 行为,因此对此没有统一的响应。启用 fin-no-ack 屏幕选项时,Junos OS 会检查是否已设置 FIN 标志,但未检查 TCP 报头中的 ACK 标志。如果它发现具有此类标头的数据包,则会丢弃该数据包。
在此示例中,您将创建一个名为 screen-1 的屏幕,以阻止设置了 FIN 标志但未设置 ACK 标志的数据包。
配置
程序
分步过程
要阻止设置了 FIN 标志但未设置 ACK 标志的数据包:
配置屏幕。
[edit ] user@host# set security screen ids-option screen-1 tcp fin-no-ack
如果完成设备配置,请提交配置。
[edit] user@host# commit
验证
确认配置工作正常。
验证安全区域中的屏幕
目的
验证是否在安全区域中启用了屏幕。
行动
在操作模式下,输入 show security zones
命令。
[edit] user@host> show security zones Security zone: zone-1 Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: screen-1 Interfaces bound: 1 Interfaces: ge-1/0/0.0
了解未设置标志的 TCP 标头
普通 TCP 段标头至少有一个标志控制集。未设置控制标志的 TCP 分段是异常事件。由于不同的操作系统对此类异常的响应不同,因此目标设备的响应(或无响应)可以提供有关其正在运行的操作系统类型的线索。参见 图 3。

当您允许设备检测未设置标志的 TCP 分段标头时,设备将丢弃所有标志字段缺失或格式错误的 TCP 数据包。
Junos OS 支持 TCP 报头,且不对 IPv4 和 IPv6 流量设置保护标志。
示例:阻止未设置标志的数据包
此示例说明如何创建一个屏幕来阻止未设置标志的数据包。
要求
在开始之前,请了解未设置标志的 TCP 标头的工作原理。请参阅 了解未设置标志的 TCP 标头。
概述
普通 TCP 段标头至少有一个标志控制集。未设置控制标志的 TCP 分段是异常事件。由于不同的操作系统对此类异常的响应不同,因此目标设备的响应(或无响应)可以提供有关其正在运行的操作系统类型的线索。
当您允许设备检测未设置标志的 TCP 分段标头时,设备将丢弃所有标志字段缺失或格式错误的 TCP 数据包。
在此示例中,您将创建一个名为 screen-1 的屏幕来阻止未设置标志的数据包。
配置
程序
分步过程
要阻止未设置标志的数据包:
配置屏幕。
[edit ] user@host# set security screen ids-option screen-1 tcp tcp-no-flag
在安全区域中启用屏幕。
[edit ] user@host# set security zones security-zone zone-1 screen screen-1
如果完成设备配置,请提交配置。
[edit] user@host# commit
验证
确认配置工作正常。
验证安全区域中的屏幕
目的
验证是否在安全区域中启用了屏幕。
行动
在操作模式下,输入 show security zones
命令。
[edit] user@host> show security zones Security zone: zone-1 Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: screen-1 Interfaces bound: 1 Interfaces: ge-1/0/0.0