WAF 配置指南
创建及配置 WAF
WAF(Web 应用防火墙) 是跟负载均衡器(LoadBalancer)一起部署的,所以新建 WAF 需要新建负载均衡器并对其配置。
第一步:创建一个负载均衡器
首先,您需要创建一个负载均衡器。 在创建的对话框中点击显示高级选项,可以选择是否开启 WAF ,开启 WAF 之后会选择要求绑定一个全局配置组。
说明 |
---|
开启 WAF 需要额外的计算资源, 请选择最大连接数 20000 及以上的规格。 |
第二步:新建监听器
当负载均衡器创建完成之后,我们需要新建一个 HTTP/HTTPS 协议的监听器。
第三步:创建 WAF 域名防护策略
WAF 的防护是以域名为单位,可以针对指定的域名配置具体的策略,当 WAF 收到 HTTP/HTTPS 请求时,先判断域名是否在保护列表中,命中域名则进行后续的内容检查。
-
进入 Web 应用防火墙 > WAF 域名防护策略组页面,点击创建,新建防护策略。
-
填写防护策略信息,点击提交。
-
云服务器域名为必填项,可使用 * 匹配所有二级域名,域名必须与后端服务器域名匹配。
-
在行为一栏可以选择命中 WAF 规则时的响应动作,默认为
执行规则内容
,根据规则定义的动作来响应。也可以配置为仅报告
,则代表旁路观察模式,对命中规则的请求只记录日志不做阻断。
-
-
点击 WAF 域名防护策略组 ID,进入详情页,可查看到系统的默认检测规则。
创建好域名防护策略之后,WAF 就会加载系统的默认检测规则,这些规则由平台维护并更新。除了基于签名的规则防护之外,也可以选择基于语法的 SQL 和 XSS 防护,开启这两个功能之前,可以配置为
仅记录日志
观察一段时间。
第四步:配置 WAF 检测规则
创建好域名防护策略之后,WAF 就会加载系统的默认检测规则,这些规则由平台维护并更新。
-
点击 WAF 域名防护策略组 ID,进入详情页。
-
除了基于签名的规则防护之外,您可以选择开启基于语法的 SQL 和 XSS 防护。开启这两个功能之前,可以配置为
仅记录日志
观察一段时间。 -
您也可以根据自己 Web 应用的特点,自定义 WAF 检测规则。点击自定义规则下的创建。
-
配置规则基本信息,点击下一步。
规则的行为可配置为观察模式或者阻断模式,观察只记录不阻断对业务系统无影响,也可以配置限速限流。
说明 新增规则时请配置为观察模式,待规则稳定之后再修改为阻断模式。
-
配置规则匹配方式,并点击添加规则,填写要检测的 HTTP 协议字段内容。
目前,一条规则支持配置检查 5 个协议变量。
-
点击提交,提交成功后可以看到填写的内容。
第五步(可选):黑白名单配置
除了可以配置自定义的规则,还可以配置自定义的黑白名单以及 CC 防护功能,点击黑白名单下的创建。
-
请求源 IP 黑白名单:配置的 IP 是将被检查的请求源 IP,包含可选的子网掩码。
-
URL 黑白名单:配置的 URL 将进行路径前缀匹配,例如 /abc 可以匹配 /abc/123。
-
CC 防护名单:配置的 URL 将进行完全匹配,这里请填写完整的 URL 路径。
-
接口防刷名单:将检查 URL 的来源是否为配置的 REFERER, 不是则进行阻断。是则检查访问频率,超过阈值进行阻断。地址是前缀匹配,例如 /abc 可以匹配 /abc/123。
第六步:绑定 WAF 域名防护策略
-
进入负载均衡器的监听器页面,点击监听器下方的 WAF 域名防护策略组后面的加载,弹出 WAF 域名防护策略的选择页面。
说明 一个监听器可以配置最多 100 个域名防护策略。
-
选择需要绑定的防护策略,点击提交。
绑定之后,在监听器下方会列出来所加载的 WAF 域名防护策略,并出现针对 WAF 功能的操作按钮。
-
点击负载均衡器的应用修改来更新配置。
第六步:全局 WAF 配置组
WAF 配置组是针对负载均衡器的全局配置,可针对 WAF 功能做微调,比如配置 WAF 日志发送的地址等。
-
在 WAF 配置组页面,点击 WAF 配置组 ID,进入详情页。
-
点击修改属性,便可修改参数值。
参数说明如下:
-
logcenter_ip: WAF 的日志服务器地址,不填则不发送。
-
logcenter_port: WAF 的日志服务器端口。
-
syslog_facility: WAF 的 syslog facility。
-
syslog_level: WAF 的 syslog level
-
event_to_local: 是否在本地记录 WAF 日志,0 不记录。
-
max_local_event_num: 本地记录的 WAF 的日志最大条目。
-
max_cc_nodes: 支持检测的 CC 节点的数量。
-
cc_expire_secs: CC 检测的节点超时时间。
-
cc_block_ratio: CC 检测的阻断惩罚速率。
-
cc_suspect_ratio: CC 检测的可疑惩罚速率。
-
max_block_ratio: 系统最大阻断率。
-
max_connect_check_time: 系统保活探测次数。
-
max_system_ratio: WAF 最大资源利用率。
-
module_cc_enable: 是否开启 CC 功能,0 不开启。
-
module_check_enable: 是否开启规则检查功能,0 不开启。
-
module_iplist_enable: 是否开启 IP 黑白名单功能,0 不开启。
-
module_urllist_enable: 是否开启 URL 黑白名单功能,0 不开启。
-
-
修改后,点击应用修改更新配置。
第七步:查看 WAF 监控日志
-
开启 WAF 之后可以查看检测的监控统计,在监听器页面,点击 WAF 域名防护策略组 > 监控,即可查看。
针对每个监听器,按命中的规则和黑白名单来分别统计。
-
点击 WAF监控 > 监控,可以查看整个负载均衡的监控情况;点击 WAF监控 > 日志, 可以查看本地保存的攻击日志。
本地日志默认保存 2000 条,要保存更多日志可以通过修改配置组中的 logcenter_ip 和 logcenter_port 参数来配置日志服务器,日志将以 syslog 的格式发送到日志服务器。同时,可以将日志倒入 ELK 来分析处理,需要使用 logstash-input-syslog 来接收 syslog 日志,并配置 grok 过滤参数如下:
grok { match => { “message” => “%{WORD:method} %{HOSTNAME:domain} %{URIPATHPARAM:url} %{NOTSPACE:client_ip} %{WORD:action} %{INT:impact} %{WORD:module} %{NOTSPACE:attack_type} %{NOTSPACE:rule_id} %{NOTSPACE:ua} %{GREEDYDATA:post}” } }
可配置的 dashboard 效果如下:
关闭 WAF
-
在负载均衡器的监听器页面,点击WAF域名防护策略组 > 解绑域名防护策略组,解绑全部防护策略组。
-
返回监听器列表,右键点击负载均衡器,选择禁用 Web 应用防火墙。
-
禁用后,点击负载均衡器的应用修改更新配置。
开启 WAF
-
右键点击负载均衡器,选择开启 Web 应用防火墙。
-
在弹出的页面中,选择需要绑定的 WAF 配置组,点击提交。
说明 如果当前负载均衡器的版本太低,会提示进行升级,需要先关闭然后再开启负载均衡器。
-
开启 WAF 功能后,为监听器绑定域名防护策略即可。
-
点击负载均衡器的应用修改来更新配置。
性能数据参考
WAF 需要做规则匹配,所以需要更多的 CPU 处理时间和内存,QPS 也会有少许下降。
说明 |
---|
以下数据仅供参考,可根据自己的业务系统做测试来获得第一手资料。 |
-
CPU: 根据规则数量和请求的不同,CPU 使用率有 2%~30% 的升高。
-
内存: 根据规则数量和请求的不同,需要 128M 以上的内存。
-
QPS: 根据规则数量和请求的不同,QPS 有 4%~10% 的下降。