独享模式接入最佳实践
应用场景
假设某企业需要将域名www.example.com通过独享模式接入WAF进行防护,业务情况如下:
- 源站服务器:华为云ECS,私有IP为192.168.1.100,Web服务监听80端口
- VPC:vpc-example(已创建)
- 防护端口:80(标准端口)
- 对外协议:HTTP
- 源站协议:HTTP
操作流程
| 操作 | 说明 |
|---|---|
| 在目标区域和VPC下购买WAF独享引擎 | |
| 创建独享型ELB并添加监听器 | |
| 在WAF控制台添加防护网站并配置源站信息 | |
| 将WAF独享引擎添加到ELB后端服务器组 | |
| 将源站EIP解绑后绑定到WAF的ELB上 | |
| 在源站安全组中放行独享引擎回源IP | |
| 验证WAF转发和防护功能正常 |
操作步骤
参考以下步骤,将网站接入WAF防护。
步骤一:购买独享WAF实例
- 登录Web应用防火墙控制台。
- 在页面右上角,单击“购买WAF实例”,配置以下关键参数:
- 计费模式:按需计费
- 区域:选择与源站ECS相同的区域(如华北-北京四)
- VPC:选择vpc-example
- 规格:根据业务QPS选择,如WI-500(建议HTTP 5,000QPS / HTTPS 4,000QPS)
- 单击“立即购买”,完成支付。
高可用建议:为避免单点故障,建议在同一VPC下购买两个WAF独享引擎实例,配合ELB实现业务双活。
步骤二:配置负载均衡器
- 进入弹性负载均衡列表页面。
- 单击"购买弹性负载均衡",配置以下参数:
- 实例类型:独享型
- 规格:应用型(HTTP/HTTPS)
- VPC:选择vpc-example(与WAF独享引擎相同)
- 购买完成后,单击目标ELB名称进入详情页。
- 在"监听器"页签,单击"添加监听器",配置:
- 前端协议:HTTP
- 前端端口:80
- 分配策略类型:加权轮询算法
- 会话保持:关闭(重要:开启会话保持可能导致故障时请求出错)
- 健康检查:开启
步骤三:添加防护域名
- 登录Web应用防火墙控制台。
- 在左侧导航栏,单击“接入管理”。
- 在“接入管理”页面,选择“独享模式”页签后,单击“添加防护网站”。
若仅开通一种接入模式,则直接单击“添加防护网站”。
- 在“添加防护网站”面板,配置以下参数:
- 防护对象:www.example.com
- 防护端口:标准端口(80)
- 对外协议:HTTP
如果"对外协议"选择HTTPS,需要选择或导入SSL证书。WAF仅支持PEM格式证书。
- 源站协议:HTTP
- VPC:vpc-example
- 源站地址:192.168.1.100
- 源站端口:80
- 权重:100
- IP标记:$remote_sockaddr(WAF前无其他代理时选择)
- 防护策略:系统自动生成策略(默认开启Web基础防护常规检测,仅记录模式)
- 单击“确定”完成添加。
步骤四:将WAF独享引擎添加到ELB
- 登录Web应用防火墙控制台。
- 在左侧导航栏,选择。
- 在目标实例所在行的"操作"列,选择"更多 > 添加到ELB"。
- 在"添加到ELB"面板,选择:
- ELB(负载均衡器):步骤二中创建的ELB
- ELB监听器:步骤二中创建的监听器
- 后端服务器组:默认或自定义
- 单击"下一步",配置业务端口为 80(与防护端口一致),权重为 100。
- 单击"确定"。
- 确认"健康检查结果"为"正常"。如异常,请参见健康检查异常排查。
步骤五:绑定弹性公网IP
- 进入弹性负载均衡列表页面。
- 定位到源站服务器绑定的ELB(如果有),解绑其弹性公网IP。
- 在源站ELB所在行"操作"列,选择"更多 > 解绑IPv4公网IP"。
- 在弹出的对话框中,单击"是"。
- 定位到WAF独享引擎的ELB,绑定解绑的弹性公网IP。
- 在WAF独享引擎的ELB所在行"操作"列,选择"更多 > 绑定IPv4公网IP"。
- 在弹出对话框中,选择刚解绑的EIP,单击"确定"。
步骤六:放行独享引擎回源IP
- 登录Web应用防火墙控制台。
- 在左侧导航栏,选择。
- 单击目标独享引擎"IP地址"列的IP,复制子网IP地址(如 192.168.2.10)。
- 登录ECS控制台。
- 单击目标ECS实例,在详情页,选择"安全组"页签,单击安全组名称进入安全组配置。
- 在"入方向规则"页签,单击"添加规则":
- 策略:允许
- 协议端口:自定义TCP,端口为空或 1-65535
- 源地址:192.168.2.10(独享引擎子网IP)
- 单击"确定"。
验证方法:执行 telnet 源站IP 80,如果端口无法直接连通但网站业务可正常访问,说明安全组规则配置成功。
验证独享WAF是否正常工作
创建一台与独享WAF实例在同一VPC下的ECS,执行以下测试:
转发测试:
curl -kv -H "Host: www.example.com" http://192.168.2.10
返回码为200则说明转发成功。
攻击拦截测试:
# 确保策略已开启基础防护拦截模式curl -kv -H "Host: www.example.com" http://192.168.2.10 --data "id=1 and 1='1'"
返回码为418则说明拦截成功,独享WAF工作正常。
验证独享WAF和ELB是否都正常工作
HTTP转发测试:
# 使用ELB私网IP测试curl -kv -H "Host: www.example.com" http://192.168.3.20 # 使用ELB公网IP测试(如已绑定EIP)curl -kv -H "Host: www.example.com" http://100.10.x.x
HTTPS转发测试(如对外协议为HTTPS):
curl -kv --resolve www.example.com:443:100.10.x.x https://www.example.com
攻击拦截测试:
curl -kv -H "Host: www.example.com" http://100.10.x.x --data "id=1 and 1='1'"
返回码为418则说明拦截成功,独享WAF和ELB均工作正常。
验证接入状态
- 在WAF控制台"接入管理"页面,查看域名的"接入状态"。
- 如显示"未接入",在1分钟内多次访问防护网站后单击刷新按钮。
- 当WAF统计防护网站在过去一天内达到50次访问请求时,将自动认定已成功接入。
生产环境配置建议
- 接入时间:优先在凌晨低峰期切换DNS,降低用户影响。
- 灰度策略:建议先接入非生产环境的域名,运行一段时间确认业务正常后再接入生产环境域名。
- 检查业务:接入完成后,查看日志中状态码200的占比是否有明显波动、QPS是否有明显突增突降,检查业务侧功能是否正常。
- 源站加固:在源站服务器上配置只放行WAF回源IP全部端口的访问控制策略,防止黑客获取源站IP后绕过WAF直接攻击源站。
- HTTPS配置:在源站服务器与WAF侧同步部署SSL证书,将证书上传至云证书与管理服务CCM,在WAF侧选择HTTPS协议并配置PCI DSS/3DS合规与TLS,开启证书到期告警通知。
- 规则优化:接入初期使用观察模式(仅记录),排除误拦截后再开启拦截模式。
- 监控告警:开启告警通知,设置监控告警规则,关注防护域名的请求量、5XX返回码、基础防护次数、CC防护次数等信息。
- 备份策略:保存当前DNS、证书、回源配置信息,便于故障快速回滚。