服务器遭SYN Flood打瘫?华为防火墙DDoS攻击防范先学基线再清洗
对外的 Web 服务器怕的就是两件事:一是真被盯上,二是被打了还不知道从哪下手。SYN Flood 用海量半开连接把服务器的连接表占满,HTTP Flood 用真实HTTP请求把应用层冲垮——服务器 CPU 和内存一被打满,正经用户的请求全被挤掉线。防火墙上开着攻击防范能不能救命,关键在两处:一是模式,检测模式只记日志不动手,清洗模式才真丢包限流;二是阈值,阈值拍脑袋定,没攻击时误拦正常流量、真攻击时又拦不住。华为防火墙为此给了阈值学习功能:先跑一段基线学习摸清自家流量的正常水位,再按学习结果定防范阈值。官方文档有一套完整的命令行举例——从流量统计、基线学习到开启 SYN Flood 与 HTTP Flood 防范再到优雅降级,本篇按这套示例把全套命令走一遍,配置脚本一并附上。
本文的组网需求、配置思路与命令步骤,整理自华为官方发布的典型配置案例,参数可直接参考使用。
组网需求
设备部署在内网出口处,企业内网部署了 Web 服务器。经检测,Web 服务器经常受到 SYN Flood 和 HTTP Flood 攻击,为了保障 Web 服务器的正常运行,需要在设备上开启攻击防范功能,用来防范以上类型的 DDoS 攻击。
本例中 interface1、interface2 分别代表 GE0/0/1、GE0/0/2。
翻译成白话:GE0/0/1 朝外接 Internet,GE0/0/2 朝内接内网,Web 服务器(本例地址 10.2.1.1)挂在内网侧。要做的事三件——让设备认识去往这台服务器的正常流量长什么样(基线),给 SYN Flood 和 HTTP Flood 分别设告警阈值并开启源检测,外加一道保证防御本身不把设备拖垮的保险。
配置思路
本例的配置按四步走:
- 在设备连接外网的接口 GE0/0/1 上启用流量统计功能(绑定接口 GE0/0/1),对外网访问企业内网的流量进行统计——统计是基线学习的数据来源。
- 为了合理设置 DDoS 攻击防范的阈值,在设备上开启阈值学习功能。
- 在设备上开启 SYN Flood 和 HTTP Flood 攻击防范功能,按学习结果设置阈值。
- 开启 DDoS 攻击防范优雅降级功能,CPU 过载时设备优先保业务转发。
核心逻辑一句话:先统计、再学习、后开防——阈值不是抄来的,是从自家流量基线里学出来的。
操作步骤
一、配置攻击防范参数
<HUAWEI> system-view
[HUAWEI] sysname DeviceA
[DeviceA] interface ge 0/0/1
[DeviceA-GE0/0/1] anti-ddos flow-statistic enable
[DeviceA-GE0/0/1] quit
[DeviceA] ddos-mode detect-clean
[DeviceA] anti-ddos ip user-defined enable
[DeviceA] anti-ddos ip address 10.2.1.1 32 //Web服务器IP地址
四条命令各有分工:外网口 GE0/0/1 开流量统计,给基线学习喂数据;ddos-mode 切到检测+清洗模式;anti-ddos ip user-defined enable 打开自定义保护对象开关,再把 Web 服务器地址 10.2.1.1/32 登记为保护对象——攻击防范的火力只对准这台服务器。
缺省情况下 ddos-mode 为检测模式(detect-only),即检测到攻击流量时仅记录告警和日志,不进行丢包或限流处理。请根据需要选择是否设置为清洗模式(detect-clean),阻断攻击。
二、配置阈值学习功能
[DeviceA] anti-ddos baseline-learn start
[DeviceA] anti-ddos baseline-learn learn-duration 10080
[DeviceA] anti-ddos baseline-learn tolerance-value 300
本例学习时长 10080 分钟(七天),学习容忍度 300(百分比口径)。这一步官方给了两条部署思路的提醒:以上部署思路是业务优先的思路,但是在阈值学习过程中可能发生 DDoS 攻击,存在网络拥塞、服务器无法提供服务等风险,请提前知晓;如果您希望安全优先,则可以选择设备上线时即手动开启攻击防御功能并自行配置阈值,此种部署思路的风险在于如果配置的阈值不符合您的流量情况,可能出现没有发生攻击时系统就启动攻击防范功能,影响设备性能或者造成正常流量被丢弃,请您谨慎选择。
三、查看阈值学习结果
[DeviceA] display anti-ddos baseline-learn result
学习结果出来后才能定阈值。官方口径:通过命令行手动配置攻击防范的阈值,需要在阈值学习结束后执行 display anti-ddos baseline-learn result 查看学习结果,然后将学习结果的阈值乘以(1+学习容忍度%),一般情况下是学习结果的 2~4 倍。
四、开启攻击防范功能,按学习结果设置阈值
[DeviceA] anti-ddos syn-flood source-detect
[DeviceA] anti-ddos first-packet-check syn
[DeviceA] anti-ddos syn-flood defend alert-rate 3000
[DeviceA] anti-ddos http-flood source-detect mode redirect
[DeviceA] anti-ddos http-flood defend alert-rate 9000
SYN Flood 侧:源检测开启、首包检测开启,告警阈值 3000;HTTP Flood 侧:源检测用重定向方式验证,告警阈值 9000——两个阈值都是按学习结果口径给的示例值,换环境要照自家的学习结果重算。
阈值学习自动应用功能只对已经开启的攻击防范功能生效。因此设备首次上线时,即使开启了自动应用功能,也需要在阈值学习结束后手动开启攻击防范功能再应用学习到的阈值。
五、开启DDoS攻击防范优雅降级功能
确保 DDoS 攻击防范优雅降级功能处于开启状态,当 CPU 过载时设备不再进行 DDoS 攻击防范:
[DeviceA] firewall feature-bypass enable
[DeviceA] firewall feature-bypass ddos enable level 1 priority 2
[DeviceA] firewall feature-bypass bypass detection-time 10
[DeviceA] firewall feature-bypass threshold 90 restore 75
这四条是给极端场景上的保险:CPU 占用率超过 90% 就暂停 DDoS 防御、优先保转发,回落到 75% 再恢复,检测间隔 10 分钟——防御功能不能反过来把整机拖死。全部命令配完后记得保存配置,以便设备下次启动时自动加载。
检查配置结果
配置完成后,设备对检测到的攻击会记录威胁日志,可以登录 Web 界面查看威胁日志信息。基线学习期间与开启防范之后,都用 display anti-ddos baseline-learn result 复核学习状态,攻击真的来时,看威胁日志里有没有对应攻击类型的记录、清洗动作有没有生效。
配置脚本
以下仅给出与本案例有关的脚本:
#
sysname DeviceA
#
ddos-mode detect-clean
#
interface GE0/0/1
anti-ddos flow-statistic enable
#
anti-ddos syn-flood source-detect
anti-ddos syn-flood defend alert-rate 3000
anti-ddos first-packet-check syn
anti-ddos http-flood source-detect mode redirect
anti-ddos http-flood defend alert-rate 9000
anti-ddos baseline-learn tolerance-value 300
anti-ddos baseline-learn learn-duration 10080
anti-ddos baseline-learn start
#
anti-ddos ip user-defined enable
anti-ddos ip address 10.2.1.1 32
#
firewall feature-bypass enable
firewall feature-bypass ddos enable level 1 priority 2
firewall feature-bypass bypass detection-time 10
firewall feature-bypass threshold 90 restore 75
#
return
注意事项
- 本举例出自华为 USG 系列防火墙的官方典型配置案例,落到具体设备前,请核对你的设备型号与软件版本对 DDoS 攻击防范功能的支持情况。
- 模式切换要想清楚:检测模式(detect-only)只告警不处置,适合先观察;清洗模式(detect-clean)会真的丢包限流,切换前评估业务影响。
- 阈值别直接搬:3000 与 9000 是官方示例值,正确姿势是先跑基线学习,再按"学习结果乘以(1+学习容忍度%)、一般取学习结果的 2~4 倍"的官方口径换算成自家的阈值。
- 基线学习有窗口期风险:学习期间遇到攻击,业务优先思路下设备不会马上清洗,安全优先思路则要自己担阈值不准误伤的风险——两条路官方都写明了利弊,选之前对自家业务掂量。
- 保护对象要登记对:anti-ddos ip address 指向被保护的 Web 服务器地址(本例 10.2.1.1/32),换环境改成自己的服务器地址,登记错了等于白防。
- 优雅降级别当摆设:feature-bypass 的取值是官方示例配置,作用是 CPU 过载时先保业务,上线后别随手关掉。
基线学习那七天不妨交给诚鑫致达科技盯完,把业务高峰与深夜低谷两个时段的流量基线各记一笔,阈值照官方口径取学习结果的 2~4 倍——定得准,攻击来时才拦得住、平时也不误伤。各厂商设备的命令与默认参数存在差异,操作前请核对你的设备型号与软件版本。
源:华为USG防火墙官方文档