华为云Web应用防火墙WAF对接使用完全指南:从接入配置到防护策略实战
引言:为什么需要Web应用防火墙
在当前的网络安全环境下,Web应用面临着SQL注入、跨站脚本攻击、CC攻击、恶意爬虫等层出不穷的安全威胁。华为云Web应用防火墙作为一种专业的Web安全防护服务,通过对HTTP和HTTPS请求进行深度检测,能够有效识别并阻断各类恶意流量,保障业务核心数据安全,避免服务器因恶意攻击导致性能异常甚至服务中断。本文将系统性地介绍华为云WAF的对接使用全流程,帮助读者从零开始完成WAF的接入与配置。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
一、WAF接入模式选型
华为云WAF提供三种不同的接入模式,分别适用于不同的业务场景和架构需求。
1.1 云模式-CNAME接入
云模式的CNAME接入方式是WAF最基础的接入形式,通过DNS解析将网站流量引导至WAF。该方式可以防护通过域名访问的Web应用或网站,无论业务服务器部署在华为云、非华为云还是线下环境均可使用。域名接入WAF后,WAF作为一个反向代理存在于客户端和服务器之间,服务器的真实IP被隐藏起来,Web访问者只能看到WAF的IP地址。
这种方式的优势在于弹性扩容能力强,通过升级规格即可扩容防护能力,同时支持IPv6防护。适用于中小型网站以及对业务没有特殊安全需求的场景。
1.2 云模式-ELB接入
云模式的ELB接入方式需要购买云模式标准版、专业版或企业版后才能使用,且需要提交工单申请开通。该方式适用于业务服务器部署在华为云上、且已使用独享型ELB进行流量转发的场景。
ELB接入云模式WAF实例后,WAF通过SDK模块化的方式集成在ELB网关中。网站流量会被ELB镜像给WAF进行检测,检测结果同步给ELB,由ELB根据检测结果决定是否将客户端请求转发到源站。这种方式的优势在于WAF不参与流量转发,避免了因额外引入一层转发而带来的兼容性和稳定性问题。同时,当WAF发生故障时,流量将直接通过ELB发送给后端,不影响客户正常业务。
1.3 独享模式
独享模式适用于对业务稳定性有较高要求的大型企业网站。独享引擎实例资源由用户独享,可以满足大规模流量攻击场景的防护需求,且独享引擎实例部署在VPC内,网络链路时延低。独享模式可以防护通过域名或IP访问的Web应用或网站。
需要注意的是,独享模式在部分区域已经停售,使用前请确认所在区域是否支持。
1.4 三种模式的对比选择
选择哪种接入模式,需要根据业务部署位置、规模大小和安全需求综合判断:
- 如果业务部署在华为云外或线下,只能选择云模式-CNAME接入
- 如果业务部署在华为云上且已使用ELB,推荐云模式-ELB接入,可获得更高的可用性保障
- 如果业务规模大、对性能要求极高、需要防护IP级别的对象,选择独享模式
二、购买WAF实例
在开始接入之前,首先需要购买WAF实例。
2.1 操作步骤
登录华为云管理控制台,在控制台页面中选择“安全与合规”>“Web应用防火墙WAF”。在页面右上角单击“购买WAF实例”,进入购买页面。
购买时需要选择WAF模式(云模式或独享模式)、区域、版本规格(云模式支持标准版、专业版、企业版等)、扩展包及购买时长。云模式支持包年/包月和按需计费两种模式,且两者可以互相切换。
2.2 前提条件
购买WAF前需要确保已获取管理控制台的登录账号,且该账号已配置WAF Administrator或WAF FullAccess权限策略。如果申请独享模式,还需要提前申请虚拟私有云VPC。
三、域名接入WAF(以云模式-CNAME接入为例)
购买WAF实例后,需要将网站域名接入WAF,使所有访问请求都被转发到WAF进行检测防护。
3.1 收集配置信息
在添加防护域名前,需要提前获取以下信息:
- 防护域名:需要防护的域名,支持单域名(如example.com、www.example.com)和泛域名(如*.example.com)
- 防护域名端口:业务对应的端口,标准端口为80(HTTP)和443(HTTPS),也支持非标准端口
- 对外协议:客户端请求访问网站的协议类型,支持HTTP和HTTPS
- 源站协议:WAF转发客户端请求到源站的协议类型
- 源站地址:网站服务器的IP地址或域名
- 域名是否使用代理:是否已使用CDN、DDoS高防等代理产品
3.2 添加防护域名
登录Web应用防火墙控制台,在左侧导航树中选择“网站设置”,进入网站设置页面。在网站列表左上角单击“添加防护网站”,选择“云模式-CNAME接入”并单击“确定”。
在配置页面中填写以下信息:
- 网站名称:自定义,便于识别
- 防护域名:输入需要防护的域名
- 防护域名端口:选择标准端口或自定义非标准端口
- 网站备注:可选,添加备注信息便于管理
配置源站信息时,需要填写对外协议、源站协议、源站地址等参数。
3.3 约束与注意事项
添加防护域名时有以下约束需要注意:
- 主账号可以查看子账号添加的域名,但子账号不能查看主账号添加的域名
- 同一防护域名不能重复添加到WAF云模式
- 同一个域名对应不同非标准端口视为不同的防护对象,会占用多个域名防护配额
- WAF支持防护多级别单域名和泛域名,但不支持添加带有下划线的泛域名
- 如果各子域名对应的服务器IP地址不同,需要按单域名方式逐条添加
- WAF当前仅支持PEM格式证书
- WAF支持WebSocket协议,默认为开启状态
- 网站接入WAF后,文件上传请求限制为10G
3.4 本地验证
添加域名后,为了确保WAF转发正常,建议先通过本地验证确保一切配置正常,然后再修改DNS解析。可以通过修改本地hosts文件,将域名解析指向WAF的IP地址,访问网站测试是否能够正常访问且WAF防护生效。
3.5 修改DNS解析
验证通过后,需要在DNS服务商处将域名的解析记录修改为WAF的CNAME值。如果网站之前使用了CDN、DDoS高防等代理产品,需要将代理的回源地址修改为WAF的CNAME。
完成DNS修改后,WAF会每隔30分钟自动检测防护网站的接入状态。当WAF统计防护网站在5分钟内达到20次访问请求时,将认定该防护网站已成功接入WAF。此时可以在域名列表中查看“接入状态”变为“已接入”。
3.6 回源IP加白
如果源站服务器安装了其他安全软件或防火墙,建议配置只允许来自WAF的访问请求访问源站。具体操作是在“网站设置”页面,在目标网站所在行的“接入状态”栏中单击“回源IP加白”,复制所有回源IP并添加到源站防火墙的白名单中。
四、防护策略配置
网站接入WAF后,WAF会自动绑定一个防护策略,并默认开启“Web基础防护”规则中的“常规检测”(拦截模式为“仅记录”,“防护等级”为“中等”)和“网站反爬虫”规则的“扫描器”检测(防护动作为“仅记录”)。如果业务有特殊的安全需求,可以进一步配置定制化的防护策略。
4.1 Web基础防护
Web基础防护用于防御常见的Web攻击,如SQL注入、XSS跨站脚本、命令注入等。在“防护策略”页面选择目标策略,进入“Web基础防护”配置框进行设置。可以调整防护等级(低、中、高)和拦截模式(仅记录、拦截)。
建议在业务上线初期使用“仅记录”模式观察一段时间,确认没有误报后再切换为“拦截”模式。
4.2 CC攻击防护
CC攻击防护通过对单个Web应用访问者的IP或者Cookie键值进行访问频率限制,超过限制时通过人机识别或阻断访问来缓解CC攻击。CC攻击防护规则支持限制单个IP、Cookie或Referer访问者对防护网站上特定路径的访问频率。
配置CC防护规则时,需要设定以下关键参数:
- 限速对象:按IP、Cookie或Referer进行限速
- 限速周期:统计访问频率的时间窗口
- 访问限制:在限速周期内允许的最大访问次数
- 防护动作:超过限制后执行的动作,可选“人机验证”或“阻断”
- 阻断时长:触发防护后的封锁时间
配置“人机验证”后,在配置的指定时间内当用户访问网站超过配置的次数限制后,需要完成验证码验证才能继续访问。
4.3 精准访问防护
精准访问防护允许针对常见HTTP字段进行条件组合,筛选指定访问请求。可配置的条件字段包括IP、路径、Referer、User Agent、Params等。精准访问防护可用于盗链防护、网站管理后台保护、特定URL请求拦截等场景。
网站接入WAF后,精准访问防护默认不生效,需要手动配置规则并开启。配置时需要注意以下约束:
- 引用表管理功能仅云模式专业版、企业版支持
- Response相关条件字段(Response Code、Response Length等)在不同接入方式中支持情况不同:云模式-CNAME接入仅企业版支持,独享模式支持,云模式-ELB接入不支持
- Method条件字段不支持配置为“TRACE”和“CONNECT”
- 添加或修改防护规则后,规则生效需要等待几分钟
4.4 IP黑白名单
通过配置黑白名单规则,可以阻断、仅记录或放行指定IP地址或IP地址段的访问请求。白名单规则的优先级高于黑名单规则。配置时支持单个添加或通过引用地址组批量导入黑白名单IP地址或IP地址段。
配置步骤为:在“防护策略”页面选择目标策略,进入“黑白名单设置”配置框,开启策略后单击“添加规则”进行配置。
4.5 地理位置访问控制
WAF能够识别客户端访问请求的来源区域,通过配置地理位置访问控制规则,可以一键封禁来自特定区域的访问或者允许特定区域的来源IP访问。这对于解决部分地区高发的恶意请求问题非常有效。
配置时可在防护策略中选择“地理位置访问控制”,添加规则并选择需要封禁或放行的国家或地区。
4.6 TLS配置
WAF默认配置的最低TLS版本为TLS v1.0,加密套件为加密套件1。为了确保网站安全,建议将最低TLS版本和TLS加密套件配置为安全性更高的版本。
五、证书管理
当域名的对外协议设置为HTTPS时,需要在WAF上配置SSL证书。WAF当前仅支持PEM格式证书。如果证书为非PEM格式,需要先转换为PEM格式再上传。
5.1 上传证书
在WAF控制台的“证书管理”页面,可以上传新的证书(仅支持PEM格式),也可以选择已有证书(已添加到WAF管理的证书或华为云SCM推送到WAF的证书)。
5.2 绑定证书
在添加防护网站或编辑网站配置时,如果对外协议选择HTTPS,需要选择对应的证书进行绑定。WAF支持上传的证书套数与WAF支持防护的域名个数相同。
六、日志与监控
6.1 查看防护日志
在WAF控制台的“防护事件”页面,可以查看最近30天WAF拦截或仅记录的攻击事件。防护日志包括事件发生的时间、源IP、源IP所在地理位置、恶意负载、命中规则等信息。在防护事件列表的“操作”列,单击“误报处理”可以通过全局白名单规则快速加白源IP。
6.2 全量日志对接LTS
WAF管理控制台最多支持存储30天的攻击日志。如果需要存储更长时间的日志或需要分析访问日志,可以将WAF日志对接到云日志服务LTS。开启WAF全量日志功能后,攻击日志和访问日志会被记录到LTS中。
通过LTS可以对WAF日志数据进行快速分析,实现实时决策分析、设备运维管理以及业务趋势分析。LTS还提供转储功能,可以将日志转储至对象存储服务OBS或数据接入服务DIS中长期保存。
6.3 监控告警配置
通过云监控服务CES可以为WAF配置告警规则。用户可以自定义监控目标与通知策略,设置告警规则名称、监控对象、监控指标、告警阈值、监控周期和是否发送通知等参数。
配置步骤为:
- 登录管理控制台,选择“管理与部署”>“云监控服务CES”
- 在左侧导航栏选择“告警”>“告警规则”
- 单击“创建告警规则”
- 配置名称、告警类型(指标)、云产品(Web应用防火墙-独享实例或Web应用防火墙-防护域名)
- 设置触发规则和通知方式
- 单击“立即创建”完成配置
七、API调用与自动化管理
华为云WAF提供完整的RESTful API,支持通过编程方式管理WAF资源。API调用需要提供项目ID(可在控制台“我的凭证”>“项目列表”中获取)。
7.1 查询WAF回源IP
通过API可以查询WAF的回源IP信息,用于配置源站防火墙的白名单。
GET /v1/{project_id}/waf/config/source-ip7.2 更新防护状态
通过API可以更新域名的防护状态:
PUT /v1/{project_id}/waf/instance/{instance_id}/protect-status防护状态取值:-1表示bypass(请求直达后端,不经过WAF),0表示暂停防护(只转发不做检测),1表示开启防护。
7.3 管理黑白名单规则
通过API可以创建、更新、删除黑白名单规则。
7.4 Python SDK调用示例
以下是通过Python SDK调用WAF API的示例代码,演示如何查询防护策略列表:
import requests
import json
# 配置认证信息
ak = 'your_access_key'
sk = 'your_secret_key'
project_id = 'your_project_id'
# 构造请求头(需先获取token)
headers = {
'Content-Type': 'application/json',
'X-Auth-Token': get_token(ak, sk)
}
# 查询防护策略列表
url = f'https://waf.cn-north-4.myhuaweicloud.com/v1/{project_id}/waf/policy'
response = requests.get(url, headers=headers)
if response.status_code == 200:
policies = response.json()
for policy in policies.get('items', []):
print(f'策略名称: {policy.get('name')}, 策略ID: {policy.get('id')}')
else:
print(f'请求失败: {response.status_code}')更多编程语言的SDK代码示例可以在API Explorer的代码示例页签中查看,支持自动生成对应的SDK代码。
八、常见问题与故障排查
8.1 域名接入状态显示“未接入”
如果防护网站的“接入状态”显示“未接入”,可能的原因及排查方法如下:
- DNS解析尚未生效:DNS修改后需要等待解析生效(通常几分钟到几小时)
- 没有足够的访问流量:WAF需要检测到访问请求才能确认接入成功,建议主动访问网站产生流量
- 源站防火墙未放行WAF回源IP:需要将WAF的回源IP添加到源站防火墙白名单中
- 域名配置信息有误:检查域名、端口、源站地址等配置是否正确
8.2 配置的防护规则不生效
防护规则配置后不生效的可能原因:
- 规则生效需要等待几分钟
- 防护模式设置为“仅记录”而非“拦截”
- 规则条件配置不准确,未能匹配到目标请求
- 存在优先级更高的白名单规则放行了请求
8.3 误报处理
当WAF误拦截了正常请求时,可以通过以下方式处理:
- 在“防护事件”页面找到被误拦截的请求记录,单击“误报处理”,通过全局白名单规则配置误报策略
- 将源IP添加到IP白名单中
- 调整防护规则的阈值或条件,降低敏感度
8.4 验证码无法刷新
配置“人机验证”CC防护规则后,如果验证码不能刷新或验证一直不通过,通常是由于浏览器缓存或Cookie问题导致,可以尝试清除浏览器缓存或使用无痕模式重新访问。
九、最佳实践建议
9.1 接入前准备
- 提前梳理需要防护的域名列表和对应的源站信息
- 确认证书格式为PEM,如不是提前转换
- 评估业务流量规模,选择合适的WAF规格
9.2 防护策略配置建议
- Web基础防护建议先以“仅记录”模式运行,观察一段时间确认无误报后再切换为“拦截”
- CC防护规则的阈值应根据业务正常访问量合理设置,避免误伤正常用户
- 精准访问防护可用于重点保护管理后台等敏感路径
- 定期查看防护日志,及时处理误报并优化规则
9.3 安全加固
- 源站防火墙仅放行WAF的回源IP,防止源站被直接攻击
- 启用全量日志对接LTS,便于安全事件追溯和分析
- 配置监控告警,及时感知异常情况
- 定期更新TLS配置为更高版本
结语
华为云Web应用防火墙提供了从接入到防护的全链路Web安全解决方案。通过本文的介绍,读者应该已经掌握了WAF的三种接入模式选型、域名接入流程、各类防护规则的配置方法、证书管理、日志监控以及API调用等核心技能。在实际使用中,建议根据业务特点灵活配置防护策略,并持续关注防护日志,不断优化安全策略,构建起坚实的Web应用安全防线。
常见问题解答
问:云模式-CNAME接入和云模式-ELB接入有什么区别?
答:CNAME接入通过DNS解析将流量引导至WAF,WAF作为反向代理转发流量,适用于所有部署位置的业务;ELB接入通过SDK集成在ELB网关中,WAF旁路检测不参与流量转发,仅适用于华为云上已使用ELB的业务,可用性更高。
问:WAF支持防护非标准端口吗?
答:支持。但需要确认购买的WAF版本是否支持该非标准端口。同一个域名对应不同非标准端口视为不同的防护对象,会占用多个域名防护配额。
问:WAF的证书有什么格式要求?
答:WAF当前仅支持PEM格式证书。如果证书为其他格式,需要先转换为PEM格式再上传。
问:配置的防护规则多久生效?
答:添加或修改防护规则后,规则生效需要等待几分钟。规则生效后可以在“防护事件”页面查看防护效果。
问:WAF的日志可以保存多久?
答:WAF管理控制台最多支持存储30天的攻击日志。如果需要更长时间的存储,可以将WAF日志对接到云日志服务LTS,通过LTS转储至OBS或DIS中长期保存。
问:如何判断网站是否成功接入WAF?
答:在“网站设置”页面查看域名的“接入状态”。WAF每隔30分钟自动检测,当统计防护网站在5分钟内达到20次访问请求时,即认定接入成功。如果长时间显示“未接入”,需要检查DNS解析配置和源站防火墙设置。


