FortiGate DoS 策略工作原理
FortiGate DoS 策略工作原理
DoS 防护
- 拒绝服务(DoS)策略会检查到达 FortiGate 接口的网络流量是否存在异常模式,这通常表明存在攻击。当攻击者启动与目标的异常大量会话时(穿过或到达 FortiGate),将发生拒绝服务。大量会话会减慢或禁用目标系统,从而阻止合法用户使用它。
- 在安全策略之前先检查 DoS 策略,以防止攻击触发更多的资源密集型安全保护并减慢 FortiGate 的速度。
DoS 异常
FortiGate 针对特定的异常流量设置了预定义的异常种类,用户无法添加自定义的 DoS 异常,以下是每个异常阈值的解释。
- L3 异常:
- ip_src_session(并发):如果来自一个源 IP 地址的并发 IP 连接数超过配置的阈值,则将执行配置的操作。建议值:5000。
- ip_dst_session(并发):如果到一个目标 IP 地址的并发 IP 连接数超过配置的阈值,则将执行配置的操作。建议值:5000。
- L4 异常
- tcp_syn_flood(速率):如果到一个目标 IP 地址的新 TCP 连接(包括重传)的 SYN 数据包速率超过配置的阈值,则执行配置的操作。建议值:2000/s。
- tcp_port_scan(速率):如果来自一个源 IP 地址的新 TCP 连接的 SYN 包速率(包括重传)超过了配置的阈值,则将执行配置的操作。建议值:1000/s。
- tcp_src_session(并发):如果来自一个源 IP 地址的并发 TCP 连接数超过配置的阈值,则将执行配置的操作。建议值:5000。
- tcp_dst_session(并发):如果到一个目标 IP 地址的并发 TCP 连接数超过配置的阈值,则将执行配置的操作。建议值:5000。
- udp_flood(速率):如果到一个目标 IP 地址的 UDP 会话速率超过配置的阈值,则将执行配置的操作。建议值:2000/s。
- udp_scan(速率):如果来自一个源 IP 地址的 UDP 会话速率超过配置的阈值,则将执行配置的操作。建议值:2000/s。
- udp_src_session(并发):如果来自一个源 IP 地址的并发 UDP 连接数超过配置的阈值,则将执行配置的操作。建议值:5000。
- udp_dst_session(并发):如果到一个目标 IP 地址的并发 UDP 连接数超过配置的阈值,则将执行配置的操作。建议值:5000。
- icmp_flood(速率):如果发送到一个目标 IP 地址的 ICMP 数据包的速率超过配置的阈值,则将执行配置的操作。建议值:250/s。
- icmp_sweep(速率):如果来自一个源 IP 地址的 ICMP 数据包的速率超过配置的阈值,则将执行配置的操作。建议值:100/s。
- icmp_src_session(并发):如果来自一个源 IP 地址的并发 ICMP 连接数超过配置的阈值,则将执行配置的操作。建议值:300。
- icmp_dst_session(并发):如果到一个目标 IP 地址的并发 ICMP 连接数超过配置的阈值,则将执行配置的操作。 建议值:1000。
- sctp_flood(速率):如果发送到一个目标 IP 地址的 SCTP 数据包的速率超过配置的阈值,则将执行配置的操作。建议值:2000/s。
- sctp_scan(速率):如果来自一个源 IP 地址的 SCTP 会话速率超过配置的阈值,则将执行配置的操作。建议值:1000/s。
- sctp_src_session(并发):如果来自一个源 IP 地址的并发 SCTP 连接数超过配置的阈值,则将执行配置的操作。建议值:5000。
- sctp_dst_session(并发):如果到一个目标 IP 地址的并发 SCTP 连接数超过配置的阈值,则执行配置的操作。 建议值:5000。
基于并发会话数的阈值
对于基于并发会话数的阈值,DoS 策略会将超过设置阈值的连接阻断。这里举个例子:
- 在 FortiGate 的 DoS 策略中,将 icmp_src_session 的阈值设置为 10,攻击者发送了 10 条匹配异常条件的连接通过 FortiGate。
- 这 10 条连接将被放通,但第 11 条及以后匹配的连接将被阻断。此时,匹配异常条件的允许通过会话计数器变为 10。
- 之后,这 10 条连接没有后续报文传输,FortiGate 针对 ICMP 流量的的老化时间为 60s,那么 60s 的计时器到期后,匹配异常条件的允许通过会话计数器被重置为 0。
- 所以,如果在阻止之前允许进行 10 个会话,则在 60 秒后,将允许再进行 10 个会话。
基于速率的阈值
对于基于速率的阈值,其中阈值以每秒通过或到达的数据包为单位进行度量,“阻止”操作可通过两种方式防止异常流量瘫痪目标系统:
continuous:检测到异常后立即阻止数据包,并在速率高于阈值时继续阻止数据包。此为默认配置。
periodical:检测到异常后,允许每秒配置的数据包数量。
这里举个例子:
在 FortiGate 的 DoS 策略中,将 icmp_flood 的阈值设置为 10/s,攻击者以 20pps 的速率启动 1000 个数据包的连续 ping 通过 FortiGate。
在 continuous 模式下,如果前 10 个数据包触发了 DoS 策略,则前 10 个数据包通过,阻断剩余的 990 个数据包。
在 periodical 模式下,每秒钟允许通过 10 个数据包,所以会有 500 个数据包被阻断。(注:由于发包速率可能会发生波动,因此通过和阻止的数据包的实际数量可能不准确,但数量应接近定义的阈值。)
periodical 模式需要在 CLI 下启动:
config ips global set anomaly-mode {continuous | periodical} end
Quarantine
Quarantine 用于阻止来自被认为是恶意行为者的源 IP 地址或对网络有害的流量源的任何其他流量。在隔离期间,将阻止来自源 IP 地址的流量,并将源 IP 地址添加到被禁止的用户列表中。禁止的用户列表保留在内核中,并由防病毒,数据泄漏防护(DLP),DoS 和入侵防护系统(IPS)使用。使用任何这些功能的任何策略都将阻止来自攻击者 IP 地址的流量。该功能仅在 CLI 下可以配置,请参考“FortiGate DoS 策略配置”。
查看 Quarantine 用户列表:
# diagnose user quarantine list src-ip-addr created expires cause 192.168.118.77 Fri Jan 15 18:47:54 2021 Fri Jan 15 18:57:54 2021 DOS