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