在此页面上
网络 DoS 攻击
网络攻击包括三个主要阶段。在第一阶段,攻击者在目标网络上执行侦察。此侦测可能包含许多不同类型的网络探测。有关详细信息,请参阅以下主题:
网络 DoS 攻击概述
针对一个或多个网络资源的拒绝服务 (DoS) 攻击会使用大量 SYN、ICMP 或 UDP 数据包或大量 SYN 片段淹没目标。
根据攻击者的目的以及先前情报收集工作的程度和成功程度,攻击者可能会挑选出特定的主机,例如设备或服务器,或者他们可能会瞄准目标网络中的随机主机。这两种方法都有可能扰乱对单个主机或整个网络的服务,具体取决于受害者的角色对网络其余部分的重要性。
了解 SYN 泛滥攻击
当主机被启动不完整连接请求的 SYN 段淹没,以至于无法再处理合法的连接请求时,就会发生 SYN 泛洪。
两台主机通过称为 三向握手的三重数据包交换建立 TCP 连接:A 向 B 发送 SYN 分段;B 使用 SYN/ACK 段进行响应;A 使用 ACK 分段进行响应。SYN 泛滥攻击会用包含伪造(欺骗)IP 源地址且地址不存在或无法访问的 SYN 段淹没站点。B 使用这些地址的 SYN/ACK 分段进行响应,然后等待响应 ACK 分段。由于 SYN/ACK 段被发送到不存在或无法访问的 IP 地址,因此它们永远不会引发响应,并最终超时。参见 图 1。
通过使用不完整的 TCP 连接淹没主机,攻击者最终会填满受害者的内存缓冲区。此缓冲区已满后,主机将无法再处理新的 TCP 连接请求。洪水甚至可能损坏受害者的操作系统。无论哪种方式,攻击都会禁用受害者及其正常操作。
本主题包括以下部分:
SYN 防洪
Junos OS 可以对每秒允许通过防火墙的 SYN 段数量施加限制。您可以根据目标地址和入口接口端口、仅目标地址或仅源地址来确定攻击阈值。当每秒 SYN 分段数超过设置的阈值时,Junos OS 将开始代理传入的 SYN 分段,回复 SYN/ACK 分段并将不完整的连接请求存储在连接队列中,或者丢弃数据包。
仅当超过目标地址和入口接口端口攻击阈值时,才会发生 SYN 代理。如果超过目标地址或源地址阈值,则只会丢弃其他数据包。
在图 2 中,已超过目标地址和入口接口端口的 SYN 攻击阈值,Junos OS 已开始代理传入的 SYN 分段。未完成的连接请求将保留在队列中,直到连接完成或请求超时。
SYN 泛洪选项
您可以为代理未完成的 TCP 连接请求设置以下参数:
攻击阈值 — 此选项允许您将 SYN 分段(即设置了 SYN 标志的 TCP 分段)的数量设置为激活 SYN 代理机制所需的每秒相同目标地址。尽管您可以将阈值设置为任意数字,但您需要知道站点的正常流量模式才能为其设置适当的阈值。例如,如果它是一个通常每秒获取 20,000 个 SYN 段的电子商务站点,则可能需要将阈值设置为每秒 30,000 个。如果较小的站点通常每秒获得 20 个 SYN 段,则可以考虑将阈值设置为 40。
警报阈值 — 此选项允许您设置每秒代理的半完成 TCP 连接请求数,之后 Junos OS 会在事件日志中输入警报。您为警报阈值设置的值会在每秒对同一目标地址的代理、半完成连接请求数超过该值时触发警报。例如,如果将 SYN 攻击阈值设置为 2000 个 SYN 分段/秒,将警报设置为 1000,则每秒总共需要 3000 个 SYN 分段到同一目标地址才能触发日志中的警报条目。
对于到达相同目标地址的每个 SYN 分段超过告警阈值,攻击检测模块会生成一条消息。在秒结束时,日志记录模块将所有类似的消息压缩到一个日志条目中,该条目指示在超过报警阈值后到达了多少个到达相同目标地址和端口号的 SYN 段。如果攻击持续到第一秒以上,事件日志将每秒输入一次警报,直到攻击停止。
源阈值 — 此选项允许您指定在 Junos OS 开始丢弃来自该源的连接请求之前,每秒从单个源 IP 地址接收的 SYN 分段数(无论目标 IP 地址如何)。
按源地址跟踪 SYN 泛洪使用的检测参数与按目标地址追踪 SYN 泛洪的检测参数不同。设置 SYN 攻击阈值和源阈值时,可将基本 SYN 泛滥保护机制和基于源的 SYN 泛滥跟踪机制都生效。
目标阈值 — 此选项允许您指定在 Junos OS 开始丢弃对该目标的连接请求之前,单个目标 IP 地址每秒接收的 SYN 分段数。如果受保护主机运行多个服务,则可能需要仅基于目标 IP 地址设置阈值,而不考虑目标端口号。
设置 SYN 攻击阈值和目标阈值时,可将基本 SYN 泛滥保护机制和基于目标的 SYN 泛滥跟踪机制都生效。
考虑这样一种情况:Junos OS 的策略允许对同一 IP 地址发送 FTP 请求和 HTTP 请求。如果 SYN 泛滥攻击阈值为 1000 个数据包/秒 (pps),而攻击者发送了 999 个 FTP 数据包和 999 个 HTTP pps,则 Junos OS 会将具有相同目标地址的 FTP 和 HTTP 数据包视为单个集合的成员,并拒绝发送至该目标的第 1001 个数据包(FTP 或 HTTP)。
超时 - 此选项允许您设置从队列中删除半完成连接之前的最长时间长度。默认值为 20 秒,您可以将超时设置为 1-50 秒。您可以尝试将超时值减小到较短的长度,直到在正常流量条件下开始看到任何断开连接。对于三次握手 ACK 响应,20 秒是非常保守的超时。
Junos OS 支持 IPv4 和 IPv6 流量的 SYN 泛滥保护。
通过启用 SYN 泛滥保护,保护您的网络免受 SYN 泛滥攻击
此示例说明如何通过启用 SYN 泛滥保护来保护您的网络免受 SYN 泛滥攻击。
要求
配置此功能之前,不需要除设备初始化之外的特殊配置。
概述
在此示例中,您启用 zone-syn-flood 保护屏幕选项并将超时值设置为 20。您还可以指定可能引发洪水的区域。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
set security screen ids-option zone-syn-flood tcp syn-flood source-threshold 10000 set security screen ids-option zone-syn-flood tcp syn-flood destination-threshold 10000 set security zones security-zone untrust screen zone-syn-flood
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。要启用 SYN 泛滥保护,请执行以下操作:
指定屏幕对象名称。
[edit] user@host# set security screen ids-option zone-syn-flood tcp syn-flood source-threshold 10000 user@host# set security screen ids-option zone-syn-flood tcp syn-flood destination-threshold 10000
设置区域屏幕的安全区域。
[edit] user@host# set security zones security-zone untrust screen zone-syn-flood
结果
在配置模式下,输入 show security screen
和 show security zones
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以进行更正。
[edit] user@host# show security screen ids-option zone-syn-flood { tcp { syn-flood { source-threshold 10000; destination-threshold 10000; timeout 20; } } }
[edit] user@host# show security zones security-zone untrust { screen zone-syn-flood; interfaces { ge-0/0/1.0; } }
如果完成设备配置,请从配置模式输入 commit
。
验证
验证 SYN 泛洪保护
目的
验证 SYN 泛洪保护。
行动
show security screen ids-option zone-syn-flood
在操作模式下输入和show security zones
命令。
user@host> show security screen ids-option zone-syn-flood node0: -------------------------------------------------------------------------- Screen object status: Name Value TCP SYN flood attack threshold 200 TCP SYN flood alarm threshold 512 TCP SYN flood source threshold 10000 TCP SYN flood destination threshold 10000 TCP SYN flood timeout 20 user@host> show security zones Security zone: untrust Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: zone-syn-flood Interfaces bound: 1 Interfaces: ge-0/0/1.0
意义
示例输出显示,SYN 泛滥保护已启用,具有源和目标阈值。
示例:为 DMZ 中的 Web 服务器启用 SYN 泛滥保护
此示例说明如何为 DMZ 中的 Web 服务器启用 SYN 泛滥保护。
要求
配置此功能之前,不需要除设备初始化之外的特殊配置。
概述
此示例说明如何通过为外部区域启用 SYN 泛滥保护屏幕选项,保护 DMZ 中的四个 Web 服务器免受源自外部区域的 SYN 泛滥攻击。参见 图 3。
我们建议您通过在每个 Web 服务器上提供设备级 SYN 泛滥保护来增强 Junos OS 提供的 SYN 泛滥保护。在此示例中,Web 服务器运行的是 UNIX,这也提供了一些 SYN 泛洪防御,例如调整连接请求队列的长度和更改不完整连接请求的超时期限。
要使用适合您的网络的值配置 SYN 泛滥保护参数,必须首先建立典型流量的基准。例如,在一周内,您在以太网 3(绑定到 zone_external 的接口)上运行嗅探器,以监视 DMZ 中四个 Web 服务器每秒到达的新 TCP 连接请求数。对一周监视中累积的数据的分析将生成以下统计信息:
每台服务器的平均新连接请求数:每秒 250 个
每台服务器新连接请求的平均峰值数:每秒 500 个
嗅探器是一种网络分析设备,用于捕获所连接的网段上的数据包。大多数嗅探器允许您定义过滤器以仅收集您感兴趣的流量类型。稍后,您可以查看和评估累积的信息。在此示例中,您希望嗅探器收集所有设置了 SYN 标志的 TCP 数据包,这些数据包到达以太网3,并发往 DMZ 中的四个 Web 服务器之一。您可能希望继续定期运行嗅探器,以查看是否存在基于一天中的时间、星期几、每月的时间或一年中的季节的流量模式。例如,在某些组织中,流量在关键事件期间可能会急剧增加。重大变化可能需要调整各种阈值。
根据此信息,您可以为zone_external设置以下 SYN 泛滥保护参数,如 表 1 所示。
参数 |
价值 |
每个值的原因 |
---|---|---|
攻击阈值 |
625 页 |
这比每台服务器每秒新连接请求的平均峰值数高出 25%,这在这种网络环境中是不寻常的。当四个 Web 服务器中的任何一个的每秒 SYN 数据包数超过此数量时,设备将开始代理对该服务器的新连接请求。(换言之,从第 626 个 SYN 数据包开始,一秒钟内到达同一目标地址,设备开始代理对该地址的连接请求。 |
报警阈值 |
250 页 |
当设备在一秒钟内代理 251 个新连接请求时,它会在事件日志中发出警报条目。通过将告警阈值设置为略高于攻击阈值,可以避免仅略微超过攻击阈值的流量峰值的告警条目。 |
源阈值 |
25 页 |
设置源阈值时,无论目标地址如何,设备都会跟踪 SYN 数据包的源 IP 地址。(请注意,这种基于源的跟踪与基于目标地址的 SYN 数据包跟踪是分开的,后者构成了基本的 SYN 泛滥保护机制。 在监视活动的一周中,您观察到在一秒间隔内,来自任何一个源的新连接请求不超过 1/25。因此,超过此阈值的连接请求是不寻常的,并为设备执行其代理机制提供了足够的理由。(请注意,25 pps 是攻击阈值的 1/25,即 625 pps。 如果设备跟踪来自同一源 IP 地址的 25 个 SYN 数据包,则从第 26 个数据包开始,它将在该秒的剩余时间和下一秒拒绝来自该源的所有进一步 SYN 数据包。 |
目标阈值 |
4000 页/秒 |
设置目标阈值时,无论目标端口号如何,设备都会仅对目标 IP 地址运行单独跟踪。由于这四个 Web 服务器仅接收 HTTP 流量(目标端口 80)(任何其他目标端口号的流量都不会到达它们),因此设置另一个目标阈值不会带来额外的优势。 |
超时 |
20 秒 |
默认值 20 秒是保留不完整连接请求的合理时间长度。 |
拓扑
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
set interfaces ge-0/0/0 unit 0 family inet address 10.2.2.1/24 set interfaces fe-1/0/0 unit 0 family inet address 10.1.1.1/24 set security zones security-zone zone_dmz interfaces ge-0/0/0.0 set security zones security-zone zone_external interfaces fe-1/0/0.0 set security zones security-zone zone_dmz address-book address ws1 10.2.2.10/32 set security zones security-zone zone_dmz address-book address ws2 10.2.2.20/32 set security zones security-zone zone_dmz address-book address ws3 10.2.2.30/32 set security zones security-zone zone_dmz address-book address ws4 10.2.2.40/32 set security zones security-zone zone_dmz address-book address-set web_servers address ws1 set security zones security-zone zone_dmz address-book address-set web_servers address ws2 set security zones security-zone zone_dmz address-book address-set web_servers address ws3 set security zones security-zone zone_dmz address-book address-set web_servers address ws4 set security policies from-zone zone_external to-zone zone_dmz policy id_1 match source-address any destination-address web_servers application junos-http set security policies from-zone zone_external to-zone zone_dmz policy id_1 then permit set security screen ids-option zone_external-syn-flood tcp syn-flood alarm-threshold 250 attack-threshold 625 source-threshold 25 timeout 20 set security zones security-zone zone_external screen zone_external-syn-flood
分步过程
要配置 SYN 泛滥保护参数,请执行以下操作:
设置接口。
[edit] user@host# set interfaces ge-0/0/0 unit 0 family inet address 10.2.2.1/24 user@host# set interfaces fe-1/0/0 unit 0 family inet address 10.1.1.1/24 user@host# set security zones security-zone zone_dmz interfaces ge-0/0/0.0 user@host# set security zones security-zone zone_external interfaces fe-1/0/0.0
定义地址。
[edit] user@host# set security zones security-zone zone_dmz address-book address ws1 10.2.2.10/32 user@host# set security zones security-zone zone_dmz address-book address ws2 10.2.2.20/32 user@host# set security zones security-zone zone_dmz address-book address ws3 10.2.2.30/32 user@host# set security zones security-zone zone_dmz address-book address ws4 10.2.2.40/32 user@host# set security zones security-zone zone_dmz address-book address-set web_servers address ws1 user@host# set security zones security-zone zone_dmz address-book address-set web_servers address ws2 user@host# set security zones security-zone zone_dmz address-book address-set web_servers address ws3 user@host# set security zones security-zone zone_dmz address-book address-set web_servers address ws4
配置策略。
[edit] user@host# set security policies from-zone zone_external to-zone zone_dmz policy id_1 match source-address any user@host# set security policies from-zone zone_external to-zone zone_dmz policy id_1 match destination-address web_servers user@host# set security policies from-zone zone_external to-zone zone_dmz policy id_1 match application junos-http user@host# set security policies from-zone zone_external to-zone zone_dmz policy id_1 then permit
配置屏幕选项。
[edit] user@host# set security screen ids-option zone_external-syn-flood tcp syn-flood alarm-threshold 250 user@host# set security screen ids-option zone_external-syn-flood tcp syn-flood attack-threshold 625 user@host# set security screen ids-option zone_external-syn-flood tcp syn-flood source-threshold 25 user@host# set security screen ids-option zone_external-syn-flood tcp syn-flood timeout 20 user@host# set security zones security-zone zone_external screen zone_external-syn-flood
结果
在配置模式下,输入 show interfaces
、 show security zones
、 show security policies
和 show security screen
命令来确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以进行更正。
为简洁起见,此 show
命令输出仅包含与此示例相关的配置。系统上的任何其他配置都已替换为省略号 (...)。
[edit] user@host# show interfaces ge-0/0/0 { unit 0 { family inet { address 10.2.2.1/24; } } } fe-1/0/0 { unit 0 { family inet { address 10.1.1.1/24; } } } ... [edit] user@host# show security zones ... security-zone zone_dmz { address-book { address ws1 10.2.2.10/32; address ws2 10.2.2.20/32; address ws3 10.2.2.30/32; address ws4 10.2.2.40/32; address-set web_servers { address ws1; address ws2; address ws3; address ws4; } } interfaces { ge-0/0/0.0; } } security-zone zone_external { screen zone_external-syn-flood; interfaces { fe-1/0/0.0; } } [edit] user@host# show security policies from-zone zone_external to-zone zone_dmz { policy id_1 { match { source-address any; destination-address web_servers; application junos-http; } then { permit; } } } [edit] user@host# show security screen ... ids-option zone_external-syn-flood { tcp { syn-flood { alarm-threshold 250; attack-threshold 625; source-threshold 25; timeout 20; } } }
如果完成设备配置,请从配置模式输入 commit
。
了解 SYN 泛洪筛选的允许列表
Junos OS 提供了管理选项,用于配置可信 IP 地址的允许列表,SYN 泛洪屏幕不会回复这些 SYN/ACK。相反,允许来自源地址或列表中目标地址的 SYN 数据包绕过 SYN cookie 和 SYN 代理机制。如果网络中的服务在任何情况下(包括 SYN 泛洪事件)都不能容忍代理 SYN/ACK 回复,则需要此功能。
支持 IP 版本 4 (IPv4) 和 IP 版本 6 (IPv6) 允许列表。允许列表中的地址应全部为 IPv4 或所有 IPv6。在每个允许列表中,最多可以有 32 个 IP 地址前缀。您可以将多个地址或地址前缀指定为用空格分隔并括在方括号中的地址序列。
允许列表可能会导致中央点上的 CPU 使用率较高,具体取决于流量级别。例如,未启用屏幕时,每秒连接数 (cps) 为 492K;启用屏幕并禁用允许列表时,cps 为 373K;当屏幕和允许列表都启用时,cps 为 194K。启用允许列表后,cps 下降 40%。
示例:为 SYN 泛洪屏幕配置允许列表
此示例说明如何配置在 SYN 泛屏保护过程中发生的 SYN cookie 和 SYN 代理机制中免除的 IP 地址允许列表。
要求
在开始之前,请配置安全屏幕并在安全区域中启用该屏幕。请参阅 示例:为 DMZ 中的 Web 服务器启用 SYN 泛滥保护。
概述
在此示例中,您将配置名为 wlipv4
和 wlipv6
的允许列表。的所有地址均为 的 wlipv4
IP 版本 4 (IPv4),所有地址均为 的 wlipv6
IP 版本 6 (IPv6)。这两个允许列表都包括目标 IP 地址和源 IP 地址。
可以将多个地址或地址前缀配置为用空格分隔并括在方括号中的地址序列,如 的目标 wlipv4
地址配置中所示。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
set security screen ids-option js1 tcp syn-flood white-list wlipv4 source-address 1.1.1.0/24 set security screen ids-option js1 tcp syn-flood white-list wlipv4 destination-address 2.2.2.2/32 set security screen ids-option js1 tcp syn-flood white-list wlipv4 destination-address 3.3.3.3/32 set security screen ids-option js1 tcp syn-flood white-list wlipv4 destination-address 4.4.4.4/32 set security screen ids-option js1 tcp syn-flood white-list wlipv6 source-address 2001::1/64 set security screen ids-option js1 tcp syn-flood white-list wlipv6 destination-address 2002::1/64
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅拖放配置文件中的在配置模式下使用 CLI 编辑器。
要配置允许列表,请执行以下操作:
指定允许列表的名称和要从 SYN/ACK 中免除的 IP 地址。
[edit security screen ids-option js1 tcp syn-flood] user@host# set white-list wlipv4 source-address 1.1.1.0/24 user@host# set white-list wlipv4 destination-address [2.2.2.2 3.3.3.3 4.4.4.4] user@host# set white-list wlipv6 source-address 2001::1/64 user@host# set white-list wlipv6 destination-address 2002::1/64
结果
在配置模式下,输入 show security screen
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以进行更正。
[edit] user@host# show security screen ids-option js1 { tcp { syn-flood { white-list wlipv4 { source-address 1.1.1.0/24; destination-address [2.2.2.2/32 3.3.3.3/32 4.4.4.4/32]; } white-list wlipv6 { source-address 2001::1/64; destination-address 2002::1/64; } } } }
如果完成设备配置,请从配置模式输入 commit
。
了解 UDP 泛滥屏幕的允许列表
Junos OS 提供了在 UDP 泛洪时配置可信 IP 地址允许列表的管理选项。启用 UDP 泛洪后,所有高于阈值的 UDP 数据包都将被丢弃。其中一些数据包是有效的,不应从流量中删除。在 UDP 泛滥屏幕上配置允许列表时,仅允许列表中的源地址绕过 UDP 泛滥检测。当来自允许列表组中地址的所有流量都应绕过 UDP 泛滥检查时,需要此功能。
支持 IPv4 和 IPv6 允许列表。允许列表中的地址应全部为 IPv4 或所有 IPv6。在每个允许列表中,最多可以有 32 个 IP 地址前缀。您可以将多个地址或地址前缀指定为用空格分隔并括在方括号中的地址序列。您可以配置单个地址或子网地址。
SRX5400、SRX5600 和 SRX5800 设备不支持 UDP 泛洪屏幕允许列表。
示例:为 UDP 泛洪屏幕配置允许列表
此示例说明如何配置在 UDP 泛滥屏幕保护过程中发生的 UDP 泛滥检测中免除 IP 地址的允许列表。
要求
在开始之前,请配置安全屏幕并在安全区域中启用该屏幕。
概述
在此示例中,您将配置名为 wlipv4
和 wlipv6
的允许列表。所有地址均为 的 IPv4 wlipv4
,所有地址均为 的 IPv6 。 wlipv6
这两个允许列表都包括目标 IP 地址和源 IP 地址。
可以将多个地址或地址前缀配置为用空格分隔并括在方括号中的地址序列,如 和 wlipv6
的目标wlipv4
地址配置所示。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
set security screen white-list wlipv4 address 198.51.100.10/24 set security screen white-list wlipv4 address 198.51.100.11/24 set security screen white-list wlipv4 address 198.51.100.12/24 set security screen white-list wlipv4 address 198.51.100.13/24 set security screen white-list wlipv6 address 2001:db8::1/32 set security screen white-list wlipv6 address 2001:db8::2/32 set security screen white-list wlipv6 address [2001:db8::3/32] set security screen white-list wlipv6 address [2001:db8::4/32] set security screen ids-options jscreen udp flood white-list wlipv4 set security screen ids-options jscreen udp flood white-list wlipv6
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。
要配置允许列表,请执行以下操作:
指定允许列表的名称和 IPv4 地址以绕过 UDP 泛滥检测。
[edit security screen] user@host# set white-list wlipv4 address 198.51.100.10/32 user@host# set white-list wlipv4 address 198.51.100.11/32 user@host# set white-list wlipv4 address 198.51.100.12/32 user@host# set white-list wlipv4 address 198.51.100.13/32
指定允许列表的名称和 IPv6 地址以绕过 UDP 泛滥检测。
[edit security screen] user@host# set white-list wlipv6 address 2001:db8::1/32 user@host# set white-list wlipv6 address 2001:db8::2/32 user@host# set white-list wlipv6 address 2001:db8::3/32 user@host# set white-list wlipv6 address 2001:db8::4/32
设置 UDP 泛滥允许列表选项。
[edit security screen] user@host# set ids-option jscreen udp flood white-list wlipv4 user@host# set ids-option jscreen udp flood white-list wlipv6
结果
在配置模式下,输入 show security screen
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以进行更正。
[edit] user@host# show security screen ids-option jscreen { udp { flood { white-list [ wlipv4 wlipv6 ]; } } } white-list wlipv4 { address [ 198.51.100.11/32 198.51.100.12/32 198.51.100.13/32 198.51.100.14/32 ]; } white-list wlipv6 { address [ 2001:db8::1/32 2001:db8::2/32 2001:db8::3/32 2001:db8::4/32 ]; }
如果完成设备配置,请从配置模式输入 commit
。
验证
验证白名单配置
目的
验证允许列表配置是否正确。
行动
在操作模式下,输入 show security screen white-list wlipv4
和 show security screen ids-option jscreen
命令。
user@host> show security screen white-list wlipv4 Screen white list: 198.51.100.10/32 198.51.100.11/32 198.51.100.12/32 198.51.100.13/32 user@host> show security screen ids-option jscreen Name Value …… UDP flood threshold ## UDP flood white-list wlipv4 UDP flood white-list wlipv6
了解所有屏幕选项的允许列表
Junos OS 提供了管理选项,用于为安全区域中的所有 IP 屏幕选项配置允许列表。在安全区域中启用屏幕时,将丢弃所有超过阈值的 IP 数据包。其中一些数据包对特定源有效,不应从流量中删除。在区域级别配置允许列表时,允许来自特定源的所有 IP 地址绕过攻击检测检查。
当来自特定源的所有 IP 地址都应绕过攻击检测检查时,需要此功能。
支持 IPv4 和 IPv6 允许列表。允许列表中的地址应全部为 IPv4 或所有 IPv6。在每个允许列表中,最多可以有 32 个 IP 地址前缀。您可以将多个地址或地址前缀指定为用空格分隔并括在方括号中的地址序列。您可以配置单个地址或子网地址。
好处
-
全局 IP 允许列表会绕过 IP 数据包筛选检查,以允许来自特定源的所有 IP 数据包。
了解 SYN Cookie 保护
SYN Cookie 是一种无状态 SYN 代理机制,可与其他防御 SYN 泛滥攻击的防御措施结合使用。
与传统 SYN 代理一样,当超过 SYN 泛滥攻击阈值时,将激活 SYN cookie。但是,由于 SYN cookie 是无状态的,因此它不会在收到 SYN 分段后设置会话或策略和路由查找,并且不会维护任何连接请求队列。这大大降低了 CPU 和内存使用率,并且是使用 SYN cookie 相对于传统 SYN 代理机制的主要优势。
在 Junos OS 上启用 SYN cookie 并成为目标服务器的 TCP 协商代理时,它会使用包含加密 Cookie 作为其初始序列号 (ISN) 的 SYN/ACK 回复每个传入的 SYN 分段。Cookie 是原始源地址和端口号、目标地址和端口号以及原始 SYN 数据包中的 ISN 的 MD5 哈希。发送 Cookie 后,Junos OS 会丢弃原始 SYN 数据包,并从内存中删除计算出的 Cookie。如果对包含 cookie 的数据包没有响应,则该攻击将被记录为活动的 SYN 攻击并被有效阻止。
如果发起主机在 TCP ACK 字段中使用包含 cookie +1 的 TCP 数据包进行响应,Junos OS 将提取该 cookie,从值中减去 1,然后重新计算 cookie 以验证其是否为合法的 ACK。如果合法,Junos OS 将通过设置会话并向服务器发送包含原始 SYN 源信息的 SYN 来启动 TCP 代理进程。当 Junos OS 从服务器接收到 SYN/ACK 时,它会向服务器和启动主机发送确认。此时,连接已建立,主机和服务器能够直接通信。
通过使用 SYN Cookie 或 SYN 代理,SRX 系列防火墙可以保护其后面的 TCP 服务器免受 IPv6 流中的 SYN 泛滥攻击。
图 4 显示了当 SYN cookie 在 Junos OS 上处于活动状态时,如何在发起主机和服务器之间建立连接。
SYN Cookie 选项
您可以为不完整的 TCP 代理连接请求设置以下参数:
攻击阈值 — 此选项允许您将 SYN 分段(即设置了 SYN 标志的 TCP 分段)的数量设置为激活 SYN 代理机制所需的每秒相同目标地址和端口号。尽管您可以将阈值设置为任意数字,但您需要知道站点的正常流量模式才能为其设置适当的阈值。例如,对于通常每秒获取 2000 个 SYN 段的电子商务站点,您可能希望将阈值设置为每秒 30,000 个 SYN 段。有效阈值范围为 1 到 1,000,000。对于通常每秒获取 20 个 SYN 段的小型站点,可以考虑将阈值设置为每秒 40 个 SYN 段。
警报阈值 — 此选项允许您设置每秒代理的半完成 TCP 连接请求数,之后 Junos OS 会在事件日志中输入警报。您设置的警报阈值会在每秒对同一目标地址和端口号的代理、半完成连接请求数超过该值时触发警报。例如,如果将 SYN 攻击阈值设置为 2000 个/秒,将告警设置为 1000,则每秒总共需要 3001 个 SYN 分段到相同的目标地址和端口号,才能触发日志中的告警条目。有效阈值范围为 1 到 1,000,000,默认报警阈值为 512。
源阈值 — 此选项允许您指定在 Junos OS 开始丢弃来自该源的连接请求之前,每秒从单个源 IP 地址接收的 SYN 分段数(无论目标 IP 地址和端口号如何)。
设置 SYN 攻击阈值和源阈值时,可将基本 SYN 泛滥保护机制和基于源的 SYN 泛滥跟踪机制都生效。有效阈值范围为 4 到 1,000,000,默认报警阈值为 4000。
目标阈值 — 此选项允许您指定在 Junos OS 开始丢弃对该目标的连接请求之前,单个目标 IP 地址每秒接收的 SYN 分段数。如果受保护主机运行多个服务,则可能需要仅基于目标 IP 地址设置阈值,而不考虑目标端口号。有效阈值范围为 4 到 1,000,000,默认报警阈值为 4000。
设置 SYN 攻击阈值和目标阈值时,可将基本 SYN 泛滥保护机制和基于目标的 SYN 泛滥跟踪机制都生效。
超时 - 此选项允许您设置从队列中删除半完成连接之前的最长时间长度。默认值为 20 秒,您可以将超时设置为 0 到 50 秒。您可以尝试将超时值减小到较短的长度,直到在正常流量条件下开始看到断开连接。
如果未配置源或目标阈值,系统将使用默认阈值。默认源和目标阈值为 4000 pps。
通过启用 SYN Cookie 保护来检测并保护您的网络免受 SYN 泛滥攻击
此示例说明如何通过启用 SYN cookie 保护来检测和保护网络免受 SYN 泛滥攻击。
要求
配置此功能之前,不需要除设备初始化之外的特殊配置。
概述
在此示例中,您将外部 syn-flood 超时值设置为 20,并将外部屏幕的安全区域设置为外部 syn-flood。此外,您还可以将保护模式设置为 syn-cookie。
SYN Cookie 功能只能检测并防范欺骗性的 SYN 泛滥攻击,从而最大限度地减少对受 Junos OS 保护的主机的负面影响。如果攻击者使用合法的 IP 源地址,而不是欺骗性的 IP 源,则 SYN cookie 机制不会阻止攻击。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
set security screen ids-option external-syn-flood tcp syn-flood timeout 20 set security zones security-zone external screen external-syn-flood set security flow syn-flood-protection-mode syn-cookie
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。要启用 SYN cookie 保护,请执行以下操作:
指定外部 syn-flood 超时值。
[edit] user@host# set security screen ids-option external-syn-flood tcp syn-flood timeout 20
设置外部屏幕的安全区域。
[edit] user@host# set security zones security-zone external screen external-syn-flood
设置保护模式。
[edit] user@host# set security flow syn-flood-protection-mode syn-cookie
结果
在配置模式下,输入 show security screen
、 show security zones
和 show security flow
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以进行更正。
[edit] user@host# show security screen ids-option external-syn-flood { tcp { syn-flood { timeout 20; } } }
[edit] user@host# show security zones security-zone zone { screen external-syn-flood; } [edit] user@host# show security flow syn-flood-protection-mode syn-cookie;
如果完成设备配置,请从配置模式输入 commit
。
验证
验证 SYN Cookie 保护
目的
验证 SYN cookie 保护。
行动
show security screen ids-option external-syn-flood
在操作模式下输入和show security zones
命令。
user@host> show security screen ids-option external-syn-flood node0: -------------------------------------------------------------------------- Screen object status: Name Value TCP SYN flood attack threshold 200 TCP SYN flood alarm threshold 512 TCP SYN flood source threshold 4000 TCP SYN flood destination threshold 4000 TCP SYN flood timeout 20 user@host> show security zones Security zone: external Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: external-syn-flood Interfaces bound: 0 Interfaces:
意义
示例输出显示,使用源和目标阈值启用了 SYN cookie 保护。
了解 ICMP 泛滥攻击
当 ICMP 回显请求使攻击目标过载,请求过多,目标耗尽其所有资源响应,直到无法再处理有效的网络流量时,通常会发生 ICMP 泛洪。
在流模式下生成的 ICMP 消息限制为每 10 秒 12 条消息。此速率限制基于每个 CPU 计算。达到阈值后,不会向设备发送进一步的确认消息。
启用 ICMP 泛滥保护功能时,可以设置一个阈值,一旦超过该阈值,将调用 ICMP 泛滥攻击保护功能。(默认阈值为每秒 1000 个数据包。如果超过阈值,Junos OS 将忽略该秒剩余时间以及下一秒的进一步 ICMP 回显请求。参见 图 5。
ICMP 泛洪可以包含任何类型的 ICMP 消息。因此,Junos OS 会监控所有 ICMP 消息类型,而不仅仅是回显请求。
Junos OS 支持 IPv4 和 IPv6 流量的 ICMP 泛滥保护。
通过启用 ICMP 泛滥保护,保护您的网络免受 ICMP 洪水攻击
此示例说明如何通过启用 ICMP 泛滥保护来保护您的网络免受 ICMP 泛滥攻击。
要求
在启用 ICMP 泛滥保护之前,不需要除设备初始化之外的特殊配置。
概述
在此示例中,您将启用 ICMP 泛滥保护。值单位是每秒 ICMP 数据包数或 pps。默认值为 1000 pps。指定可能引发洪水的区域。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
set security screen ids-option 1000-icmp-flood icmp flood threshold 1000 set security zones security-zone zone screen 1000-icmp-flood
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。要启用 ICMP 泛滥保护,请执行以下操作:
指定 ICMP 泛滥阈值。
[edit] user@host# set security screen ids-option 1000-icmp-flood icmp flood threshold 1000
设置区域屏幕的安全区域。
[edit] user@host# set security zones security-zone zone screen 1000-icmp-flood
结果
在配置模式下,输入 show security screen
和 show security zones
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以进行更正。
[edit] user@host# show security screen ids-option 1000-icmp-flood { icmp { flood threshold 1000; } }
[edit] user@host# show security zones security-zone zone { screen 1000-icmp-flood; }
如果完成设备配置,请从配置模式输入 commit
。
验证
验证 ICMP 泛洪保护
目的
验证 ICMP 泛滥保护
行动
show security screen ids-option 1000-icmp-flood
在操作模式下输入和show security zones
命令。
user@host> show security screen ids-option 1000-icmp-flood node0: -------------------------------------------------------------------------- Screen object status: Name Value ICMP flood threshold 1000 user@host> show security zones Security zone: zone Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: 1000-icmp-flood Interfaces bound: 0 Interfaces:
意义
示例输出显示已启用 ICMP 泛滥保护并设置了阈值。
了解 UDP 泛滥攻击
与 ICMP 泛洪类似,当攻击者发送包含 UDP 数据报的 IP 数据包,目的是减慢受害者的速度,使受害者无法再处理有效连接时,就会发生 UDP 泛洪。
启用 UDP 泛滥防护功能后,您可以设置一个阈值,一旦超过该阈值,将调用 UDP 泛滥攻击防护功能。(默认阈值为每秒 1000 个数据包或 pps。如果从一个或多个源到单个目标的 UDP 数据报数量超过此阈值,Junos OS 将在该秒的剩余时间以及下一秒的剩余时间内忽略到该目标的进一步 UDP 数据报。参见 图 6。
SRX5400、SRX5600 和 SRX5800 设备不会在下一秒丢弃数据包。
Junos OS 支持 IPV4 和 IPv6 数据包的 UDP 泛滥保护。
通过启用 UDP 泛滥保护保护您的网络免受 UDP 洪水攻击
此示例说明如何通过启用 UDP 泛滥保护来保护网络免受 UDP 泛滥攻击。
要求
在启用 UDP 泛滥保护之前,不需要除设备初始化之外的特殊配置。
概述
在此示例中,您将启用 UDP 泛滥保护。值单位是每秒 UDP 数据包数或 pps。默认值为 1000 pps。指定可能引发洪水的区域。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
set security screen ids-option 1000-udp-flood udp flood threshold 1000 set security zones security-zone external screen 1000-udp-flood
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅拖放配置文件中的在配置模式下使用 CLI 编辑器。要启用 UDP 泛滥保护,请执行以下操作:
指定 UDP 泛滥阈值。
[edit] user@host# set security screen ids-option 1000-udp-flood udp flood threshold 1000
设置外部屏幕的安全区域。
[edit] user@host# set security zones security-zone external screen 1000-udp-flood
结果
在配置模式下,输入 show security screen
和 show security zones
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以进行更正。
[edit] user@host# show security screen ids-option 1000-udp-flood { udp { flood threshold 1000; } }
[edit] user@host# show security zones security-zone external { screen 1000-udp-flood; }
如果完成设备配置,请从配置模式输入 commit
。
验证
验证 UDP 泛洪保护
目的
验证 UDP 泛洪保护。
行动
show security screen ids-option 1000-udp-flood
在操作模式下输入和show security zones
命令。
user@host> show security screen ids-option 1000-udp-flood node0: -------------------------------------------------------------------------- Screen object status: Name Value UDP flood threshold 1000 user@host> show security zones Security zone: external Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: 1000-udp-flood Interfaces bound: 0 Interfaces:
意义
示例输出显示已启用 UDP 泛滥保护并设置了阈值。
了解陆地攻击
将 SYN 攻击与 IP 欺骗相结合,当攻击者发送欺骗性的 SYN 数据包时,就会发生陆地攻击,该数据包同时包含受害者的 IP 地址作为目标和源 IP 地址。
接收系统通过向自身发送 SYN-ACK 数据包来响应,从而创建一个空连接,该连接一直持续到达到空闲超时值。用这种空连接淹没系统可能会使系统不堪重负,从而导致拒绝服务 (DoS)。参见 图 7。
启用屏幕选项以阻止陆地攻击时,Junos OS 会结合 SYN 泛洪防御和 IP 欺骗保护的元素来检测并阻止任何此类性质的尝试。
Junos OS 支持 IPv4 和 IPv6 数据包的陆地攻击保护。
通过启用陆地攻击保护保护您的网络免受陆地攻击
此示例演示如何通过启用陆地攻击保护来保护网络免受攻击。
要求
在启用陆地攻击防护之前,不需要除设备初始化之外的特殊配置。
概述
此示例演示如何启用针对陆地攻击的保护。在此示例中,您将安全屏幕对象名称设置为 land,并将安全区域设置为区域。
配置
程序
CLI 快速配置
要快速配置此示例,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改与您的网络配置匹配所需的任何详细信息,将命令复制并粘贴到层次结构级别的 CLI [edit]
中,然后从配置模式进入 commit
。
set security screen ids-option land tcp land set security zones security-zone zone screen land
分步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何执行此操作的说明,请参阅 CLI 用户指南中的在配置模式下使用 CLI 编辑器。要启用针对陆地攻击的保护,请执行以下操作:
指定屏幕对象名称。
[edit] user@host# set security screen ids-option land tcp land
设置安全区域。
[edit] user@host# set security zones security-zone zone screen land
结果
在配置模式下,输入 show security screen
和 show security zones
命令确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明以进行更正。
[edit] user@host# show security screen ids-option land { tcp { land; } }
[edit] user@host# show security zones security-zone zone { screen land; }
如果完成设备配置,请从配置模式输入 commit
。
验证
验证对陆地攻击的保护
目的
验证对陆地攻击的防护。
行动
show security screen ids-option land
在操作模式下输入和show security zones
命令。
user@host> show security screen ids-option land node0: -------------------------------------------------------------------------- Screen object status: Name Value TCP land attack enabled user@host> show security zones Security zone: zone Send reset for non-SYN session TCP packets: Off Policy configurable: Yes Screen: land Interfaces bound: 0 Interfaces:
意义
示例输出显示已启用针对陆地攻击的保护。