# 使用ECS/ELB访问控制策略保护源站安全
#### 应用场景
网站已接入Web应用防火墙（Web Application Firewall，简称WAF）进行安全防护后，您可以通过设置源站服务器的访问控制策略，只放行WAF回源IP段，防止黑客获取您的源站IP后绕过WAF直接攻击源站。
本章节介绍了源站服务器部署在华为云弹性云服务器（以下简称ECS）时或华为云弹性负载均衡（以下简称ELB）后面时，如何判断源站存在泄漏风险，以及如何配置访问控制策略保护源站安全。
- 网站已接入WAF进行安全防护后，无论您是否配置源站保护，都不影响正常业务的转发。没有配置源站保护可能导致攻击者在源站IP暴露的情况下，绕过WAF直接攻击您的源站。
- 如果在ECS前使用了NAT网关做转发，也需要[设置ECS入方向规则]在ECS的安全组配置只允许放行WAF的回源IP地址段，保护源站安全。
 
#### 操作须知
- 在配置源站保护前，请确保该ECS或ELB实例上的所有网站域名都已经接入WAF，保证网站能正常访问。
- 配置安全组存在一定风险，避免出现以下问题：
  - 您的网站设置了Bypass回源，但未取消安全组和网络ACL等配置，这种情况下，可能会导致源站无法从公网访问。
  
  - 当WAF有新增的回源网段时，如果源站已配置安全组防护，可能会导致频繁出现5xx错误。
   
 
 #### 如何判断源站存在泄露风险
您可以在非华为云环境直接使用Telnet工具连接源站公网IP地址的业务端口（或者直接在浏览器中输入访问Web应用的IP），查看是否建立连接成功。
- 如果可以连通 表示源站存在泄露风险，一旦黑客获取到源站公网IP就可以绕过WAF直接访问。
  
- 如果无法连通 表示当前不存在源站泄露风险。
  
例如，测试已接入WAF防护的源站IP对外开放的443端口是否能成功建立连接，显示如[图1]所示类似信息，说明端口可连通，表示该源站存在泄露风险。
图1测试源站泄露风险   
![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0294833640.png "点击放大")
#### 获取WAF回源IP地址
回源IP是WAF用来代理客户端请求服务器时用的源IP，在服务器看来，接入WAF后所有源IP都会变成WAF的回源IP，而真实的客户端地址会被加在HTTP头部的XFF字段中。有关回源IP地址的详细介绍，请参见[如何放行回源IP段](https://support.huaweicloud.com/waf_faq/waf_01_0095.html)。
1. [登录Web应用防火墙控制台](https://console.huaweicloud.com/waf/?locale=zh-cn)。
2. 在控制台左上角，单击![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000002304713360.png)图标，选择区域或项目。
3. 在左侧导航栏，选择"资产管理 \> 防护对象"。
4. 在网站列表右侧上方，单击"Web应用防火墙回源IP网段"，查看Web应用防火墙所有回源IP段。 
   ![](https://support.huaweicloud.com/bestpractice-waf/public_sys-resources/note_3.0-zh-cn.png)
   Web应用防火墙的回源IP网段会定期更新，及时将更新后的回源IP网段添加至相应的安全组规则中，避免出现误拦截。
   
   
5. 在"Web应用防火墙的回源IP网段"对话框，单击"复制IP段"，复制所有回源IP。
   
   图2Web应用防火墙的回源IP网段   
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000002373590433.png "点击放大")
   
   
 
 #### 设置ECS入方向规则
如果您的源站服务器直接部署在华为云ECS上，请参考以下操作步骤设置安全组规则，只放行WAF回源IP段。
![](https://support.huaweicloud.com/bestpractice-waf/public_sys-resources/caution_3.0-zh-cn.png)
请确保所有WAF回源IP段都已通过源站ECS的安全组规则设置了入方向的允许策略，否则可能导致网站访问异常。
1. [登录ECS控制台](https://console.huaweicloud.com/ecm/?#/ecs/manager/vmList)。
2. 在控制台左上角，单击![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000002304713360.png)图标，选择区域或项目。
3. 在目标ECS所在行的"名称/ID"列中，单击目标ECS实例名称，进入ECS实例的详情页面。
4. 选择"安全组"页签，单击"更改安全组"。
5. 单击安全组ID，进入安全组基本信息页面。
6. 选择"入方向规则"页签，单击"添加规则"，进入"添加入方向规则"页面，参数配置说明如[表1]所示。
   
   图3添加入方向规则   
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000002373745845.png "点击放大")
    表1入方向规则参数配置说明 
   | 参数   | 配置说明                                                                                                                            |
   |:---|:---|
   | 协议端口 | 安全组规则作用的协议和端口。选择"自定义TCP"后，在TCP框下方输入源站的端口。                                                                                     |
   | 源地址   | 逐一添加[5]中复制的所有WAF回源IP段。 一条规则配置一个IP。单击"增加1条规则"，可配置多条规则，最多支持添加10条规则。 |
      
   
   
7. 单击"确定"，安全组规则添加完成。 
   成功添加安全组规则后，安全组规则将允许WAF回源IP段的所有入方向流量。
   您可以参考[如何判断源站存在泄露风险]，通过测试已接入WAF防护的源站IP对应的业务端口是否能成功建立连接验证配置是否生效。如果显示端口无法直接连通，但网站业务仍可正常访问，则表示源站保护配置成功。
   
   
 
#### 开启ELB访问控制
如果您的源站服务器直接部署在华为云ELB上，请参考以下操作步骤设置访问控制（白名单）策略，只放行WAF回源IP段。
1. 进入[弹性负载均衡列表页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/list)。
2. 在控制台左上角，单击![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000002304713360.png)图标，选择区域或项目。
3. 在目标ELB所在行的"监听器"列中，单击监听器名称，进入监听器的详情页面。
4. 在目标监听器所在行的"访问控制"列，单击"设置"。 
   图4监听器列表   
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000002373675693.png "点击放大")
   
   
5. 在弹出的对话框中，"访问控制"选择"白名单"。 
   1. 单击"创建IP地址组"，将[5]中独享引擎实例的回源IP地址添加到"IP地址组"。
   
   2. 在"IP地址组"的下拉框中选择[5.a]中创建的IP地址组。
   
   
   
   
6. 单击"确定"，白名单访问控制策略添加完成。
 
#### 操作结果验证
您可以参考[如何判断源站存在泄露风险]，通过测试已接入WAF防护的源站IP对应的业务端口是否能成功建立连接验证配置是否生效。如果显示端口无法直接连通，但网站业务仍可正常访问，则表示源站保护配置成功。
