# 使用WAF、ELB和NAT网关防护本地部署的业务
#### 应用场景
WAF云模式-ELB接入默认只支持华为云上业务，当您的源站服务器在本地时，需要通过NAT网关进行流量转发，将您的流量由华为云内网回源到源站的公网IP，再通过云模式-ELB接入方式将网站接入WAF，实现流量检测。
#### 方案架构
图1方案架构   
![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001952560932.png "点击放大")
#### 资源与成本规划
表1资源和成本规划 
| 资源        | 资源说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 每月费用                                                                                           |
|:---|:---|:---|
| 弹性负载均衡    | - 计费模式：包年/包月  - 实例类型：独享型  - 规格：应用型（HTTP/HTTPS）；中型II  - 公网带宽：按带宽计费  - 带宽：10Mbit/s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 具体的计费方式及标准请参考[计费说明](https://support.huaweicloud.com/price-elb/elb_billing_0001.html)。          |
| NAT网关    | - 计费模式：包年/包月  - 规格：中型                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 具体的计费方式及标准请参考[计费说明](https://support.huaweicloud.com/price-natgateway/nat_billing_0001.html)。 |
| Web应用防火墙 | 云模式-标准版： - 计费模式：包年/包月  - 域名数量：10个防护域名  - QPS配额：2,000QPS业务请求  - 支持带宽峰值： - 源站服务器部署在华为云内：100Mbps  - 源站服务器部署在华为云外：30Mbps     | 具体的计费方式及标准请参考[计费说明](https://support.huaweicloud.com/price-waf/waf_03_0001.html)。              |
   
 #### 步骤一：创建独享型负载均衡器
1. 进入[购买弹性负载均衡页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/create/custom)。
2. 单击"购买弹性负载均衡"。 
   1. 根据界面提示选择负载均衡器的基础配置。
      - "实例类型"：选择"独享型"。
      
      - "规格"：选择"应用型（HTTP/HTTPS）"。
      
      - 其他参数：根据业务实际情况进行选择。
       
   
   2. 选定负载均衡器的规格后，请根据界面提示选择负载均衡器的网络配置。
      - "IP类型后端（跨VPC后端）"：开启![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001981519225.png)。
      
      - "前端子网"：独享型负载均衡所在的子网，从该子网中分配ELB实例对外服务的IP地址。
      
      - "后端子网"：负载均衡实例将使用后端子网中的IP地址与后端服务器建立连接。此处，需要配置一个独立的后端子网，与前端子网配置的不同。 如果前后端子网配置一样，通过NAT进行流量转发时，可能会造成转发混乱。
        
      
      - 其他参数：根据业务实际情况进行选择。
       
   
   
   关于创建独享型负载均衡器的详细操作请参见[创建独享型负载均衡器](https://support.huaweicloud.com/usermanual-elb/elb_lb_000006.html#section2)。
   
   
3. 单击"立即购买"。
4. 确认配置信息，根据界面提示完成创建操作。 
   完成以上配置后，您可以在负载均衡器列表，查看已购买的弹性负载均衡器。其中，"状态"为"运行中"，"实例类型"为"独享型"，"规格"为"应用型"。
   
   
 
#### 步骤二：为创建的ELB配置监听器
1. 在目标负载均衡器所在行的"名称"列，单击目标负载均衡器名称。
2. 选择"监听器"页签，单击"添加监听器"，配置监听器名称、前端协议/端口信息。
3. 单击"下一步：配置后端分配策略"，配置后端分配策略。
4. 单击"下一步：添加后端服务器"，并选择"IP类型后端（跨VPC后端）"页签。
5. 单击"添加IP类型后端"，在弹出的弹框中，配置"IP类型后端IP"和"业务端口"。 
   - "IP类型后端IP"：源站的IP地址。
   
   - "业务端口"：服务器的端口号。
   
   
   
   
6. 单击"确定"，配置完成。
7. 单击"下一步：确认配置"后单击"提交"。 
   完成以上配置后，您可以在目标负载均衡器的"监听器"列，查看已配置的"前端协议"和"端口"信息。
   
   
 
#### 步骤三：配置NAT网关
1. 购买公网NAT网关 
   1. 进入[购买公网NAT网关页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/nat/public/createNat)。
      - "子网"：配置为[2.b]中配置的后端子网。
      
      - 其他参数：根据业务实际情况进行配置。
       
   
   2. 单击"立即购买"，在"规格确认"页面，您可以再次核对公网NAT网关信息。
   
   3. 确认无误后，单击"提交"，开始创建公网NAT网关。 完成以上配置后，您可以在网关列表，查看已购买公网NAT网关。公网NAT网关的创建过程一般需要1-6分钟。
      
   
   
   
   
2. 添加SNAT规则。 
   1. 在公网NAT网关页面，单击需要添加SNAT规则的公网NAT网关名称。
   
   2. 在"SNAT规则"页签中，单击"添加SNAT规则"。 "子网"：配置为[2.b]中配置的后端子网。
      
   
   3. 配置完成后，单击"确定"，完成"SNAT规则"创建。 完成以上配置后，您可以在"SNAT规则"页签，查看已添加的规则。
      
   
   
   
   
 
 #### 步骤四：通过云模式-ELB接入方式将域名添加到WAF进行防护
1. 购买云模式标准版。 
   1. [登录Web应用防火墙控制台](https://console.huaweicloud.com/waf/#/waf/dashboard/security)。
   
   2. 在页面右上角，单击"购买WAF实例"，进入购买页面，"WAF模式"选择"云模式"。
      - "区域"：根据防护业务的所在区域就近选择购买的WAF区域。
      
      - "版本规格"：选择"标准版"。
      
      - "扩展包"及"购买时长"：根据具体情况进行选择。
       
   
   3. 确认参数配置无误后，在页面右下角单击"立即购买"。
   
   4. 确认订单详情无误后，阅读并勾选《Web应用防火墙免责声明》，单击"去支付"，完成购买操作。
   
   5. 进入"付款"页面，选择付款方式进行付款。 订单支付成功后，单击"进入Web应用防火墙控制台"，进入WAF"总览"页面。将鼠标悬停在"版本管理"区域，查看已购实例版本及其详细规格。
      
   
   
   
   
2. 通过云模式-ELB接入方式将域名添加到WAF。 
   1. 在左侧导航栏，单击"接入管理"。
   
   2. 在"接入管理"页面，选择"云模式-ELB"页签后，完成接入配置。 若仅开通一种接入模式，则直接在"接入管理"页面完成接入配置即可。
      - **单个接入**
        1. 单击"未成功接入域名数"后的数字，定位到目标ELB实例后，单击"操作"列的"立即接入"。 您也可以选中一个配置了监听器的ELB实例后，单击"一键批量接入"。
           如果"立即接入"按钮置灰，则对应ELB实例未配置监听器。请为ELB实例添加监听器后，再进行接入配置。
           
        
        2. 在"接入ELB域名"面板，完成接入配置后，单击"确定"。接入配置参数说明如[表2]所示。
         
      
      - **一键批量接入**
        1. 选中至少一个配置了监听器的ELB实例后，单击"一键批量接入"。 支持为已接入的ELB实例，添加多个防护域名。
           
        
        2. 在"一键批量接入"面板，完成接入配置后，单击"确定"。接入配置参数说明如[表2]所示。
         
      
      
       表2接入配置参数说明 
      | 参数     | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 取值样例                                                                                |
      |:---|:---|:---|
      | 防护策略模式 | 选择要启用的防护策略模式。 一键批量接入支持为多个ELB实例添加相同防护策略，或选择不同的防护策略。 - **相同防护策略**：选择后，为所有一键批量接入WAF的ELB实例，选择同一个防护策略。  - **不同防护策略**：为每个ELB实例，单个选择不同的防护策略。   两种策略模式均支持选择系统自动生成策略、手动创建的防护策略。 - **系统自动生成策略** （默认）包括： - **Web基础防护** ：默认开启**常规检测** ，可防护SQL注入、XSS跨站脚本、远程溢出攻击、文件包含、Bash漏洞攻击、远程命令执行、目录遍历、敏感文件访问、命令/代码注入等攻击行为。 常规检测包含： - "规则集"："默认规则集【中等】"  - "防护动作"："仅记录"，即发现攻击行为后WAF只记录攻击事件不阻断攻击。    - **网站反爬虫**：默认开启扫"扫描器"检测、"防护动作"为"仅记录"（发现攻击行为后WAF只记录攻击事件不阻断攻击），可防护漏洞扫描、病毒扫描等Web扫描任务，如OpenVAS、Nmap的爬虫行为。     - **手动创建的防护策略** ：根据防护需求创建的防护策略。**仅** **标准版、专业版** **、** **企业版** **支持选择手动创建的防护策略。** 更多信息，请参见[配置防护策略](https://support.huaweicloud.com/usermanual-waf/waf_01_0074.html)。   | **相同防护策略 ＞** 系统自动生成策略                                                               |
      | 接入配置    | 配置接入信息。 - **防护域名** ：要防护的域名或IP（公网IP/私网IP），且该域名已解析到已创建的负载均衡器的弹性公网IP上。 - **域名** ：支持单域名和泛域名。 **单域名**：输入防护的单域名。例如：www.example.com。 **泛域名** ： - 如果各子域名对应的服务器IP地址相同：输入防护的泛域名。例如：子域名a.example.com，b.example.com和c.example.com对应的服务器IP地址相同，可以直接添加泛域名\*.example.com。  - 如果各子域名对应的服务器IP地址不相同：请将子域名按"单域名"方式逐条添加。  - WAF支持添加"\*"的泛域名。  - 一个ELB只支持一个泛域名。     - **IP**：支持防护公网IP、私网IP。如果配置为私网IP，必须确保相应的网络路径是可访问的，以便于WAF能够正确地对流量进行监控和过滤。    - **ELB监听器** ：选择的ELB配置的监听器，支持选择其他账号的ELB监听器。 - "所有监听器"：表示选择ELB下的所有监听器。  - "指定监听器"：表示选择ELB下的指定监听器。    - **防护策略**："防护策略模式"选择"不同防护策略"后，需要单独为每个ELB实例选择对应的防护策略。                                                                                                                             | **防护域名**：\* **ELB监听器**：全部监听器 |
         
      接入完成后，单击"已接入域名数"后的数字，可查看已接入WAF的ELB实例。
      
   
   
   
   
 
#### 操作结果验证
假如已添加域名"www.example.com"，且已开启了Web基础防护的"常规检测"，防护模式为"拦截"。您可以参照以下步骤验证WAF防护效果：
1. 清理浏览器缓存，在浏览器中输入防护域名，测试网站域名是否能正常访问。 
   - 不能正常访问，参照[步骤一：创建独享型负载均衡器]\~[步骤四：通过云模式-ELB接入方式将域名添加到WAF进行防护]章节重新完成域名接入。
   
   - 能正常访问，执行[2]。
   
   
   
   
2. 清理浏览器缓存，在浏览器中输入"http://www.example.com?id=1%27%20or%201=1"模拟SQL注入攻击。
   
   WAF将拦截该访问请求，拦截页面如[图2]所示。
   图2WAF拦截攻击请求   
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001179033432.png "点击放大")
   
   
3. 返回Web应用防火墙控制界面，在左侧导航树中，单击"防护事件"，进入"防护事件"页面，查看防护域名拦截日志。
 
