# 未使用代理的网站通过CNAME方式接入WAF
#### 应用场景
随着数字化应用的逐步深入，很多企业业务都通过Web应用来承载，如企业官网网站、网上商城、远程办公系统等，一般都直接暴露在互联网上，极易成为黑客攻击的目标，根据历史数据分析，约75%的信息安全攻击都是针对Web应用的，同时Web应用及组件的漏洞也较多，历史上就爆发过著名的Log4J漏洞，对大部分Web应用都产生了深远的影响。
本章节介绍在接入WAF前网站没有使用任何代理产品（如未使用DDoS高防、CDN等），如何通过云模式-CNAME接入方式将网站接入WAF进行防护，保障网站的安全性和可用性。
#### 方案架构
当网站没有接入到WAF前，DNS直接解析到源站的IP。网站接入WAF后，需要把DNS解析到WAF的CNAME，这样流量才会先经过WAF，WAF再将流量转到源站，实现网站流量检测和攻击拦截。
图1未使用代理   
![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000002677540348.png "点击放大")
#### 方案优势
使网站流量经过WAF，WAF通过对HTTP(S)请求进行检测，识别并阻断SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第三方应用漏洞攻击、CC攻击、恶意爬虫扫描、跨站请求伪造等攻击，拦截恶意流量，将正常流量转发回源站，保护了Web服务安全稳定。
#### 资源与成本规划
表1资源和成本规划 
| 资源        | 资源说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 每月费用                                                                                |
|:---|:---|:---|
| Web应用防火墙 | 云模式-标准版： - 计费模式：包年/包月  - 域名数量：10个防护域名  - QPS配额：2,000QPS业务请求  - 支持带宽峰值： - 源站服务器部署在华为云内：100Mbps  - 源站服务器部署在华为云外：30Mbps     | 具体的计费方式及标准请参考[计费说明](https://support.huaweicloud.com/price-waf/waf_03_0001.html)。 |
   
#### 步骤一：购买云模式标准版
1. [登录Web应用防火墙控制台](https://console.huaweicloud.com/waf/?locale=zh-cn)。
2. 在页面右上角，单击"购买WAF实例"，进入购买页面，"WAF模式"选择"云模式"。 
   - "区域"：根据防护业务的所在区域就近选择购买的WAF区域。
   
   - "版本规格"：选择"标准版"。
   
   - "扩展包"及"购买时长"：根据具体情况进行选择。
   
   
   
   
3. 确认参数配置无误后，在页面右下角单击"立即购买"。
4. 确认订单详情无误后，阅读并勾选《Web应用防火墙免责声明》，单击"去支付"，完成购买操作。
5. 进入"付款"页面，选择付款方式进行付款。 
   订单支付成功后，单击"进入Web应用防火墙控制台"，进入WAF"总览"页面。将鼠标悬停在"版本管理"区域，查看已购实例版本及其详细规格。
   
   
 
#### 步骤二：将网站信息添加到WAF
1. 在左侧导航栏，单击"接入管理"。 
   在开始添加防护网站前，可单击页面右上角的"流程引导"，了解接入流程。
   
   
2. 在"接入管理"页面，选择"云模式-CNAME"页签后，单击"添加防护网站"。 
   若仅开通一种接入模式，则直接单击"添加防护网站"。
   
   
3. 根据界面提示，配置网站信息，如[表2]所示。
   
   图2基础信息配置   
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000002046949960.png "点击放大")
    表2重点参数说明 
   | 参数      | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               | 取值样例                                                                                                                                                                                                                                                         |
   |:---|:---|:---|
   | 防护域名 | 需要添加到WAF中防护的域名。 - 域名已完成备案  - 支持单域名（例如，一级域名example.com，二级域名www.example.com等）和泛域名（例如，\*.example.com）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | www.example.com                                                                                                                                                                                                                                              |
   | 防护端口   | 需要防护的域名对应的业务端口。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 标准端口                                                                                                                                                                                                                                                         |
   | 服务器配置 | 网站服务器地址的配置。包括对外协议、源站协议、源站地址、源站端口和权重。 - 对外协议：客户端请求访问服务器的协议类型。包括"HTTP"、"HTTPS"两种协议类型。  - 源站协议：Web应用防火墙转发客户端请求的协议类型。包括"HTTP"、"HTTPS"两种协议类型。  - 源站地址：客户端访问的网站服务器的公网IP地址（一般对应该域名在DNS服务商处配置的A记录）或者域名（一般对应该域名在DNS服务商处配置的CNAME）。  - 源站端口：WAF转发客户端请求到服务器的业务端口。  - 权重：负载均衡算法将按权重将请求分配给源站。                                                                                                                       | 对外协议：HTTP 源站协议：HTTP 源站地址：IPv4 XXX .XXX.1.1 源站端口：80 |
   | IP标记   | 网站接入WAF后，"已使用七层代理"默认为"是"。该场景下，WAF无法直接获取客户端真实IP，导致基于IP的防护规则失效。选择IP标记后，可指定客户端IP的判定方式，帮助WAF获取客户端真实IP。 - **$remote_sockaddr**：当WAF前无其他代理时，如果报文存在TOA（TCP Option Address），且不希望WAF以TCP Option Address作为客户端IP时，选择该选项。配置后，WAF会以报文的3层源IP作为客户端真实IP。  - **$remote_addr**：当WAF前存在四层代理时，如果希望WAF以TCP连接IP作为客户端真实IP，选择该选项。  - **x-forwarded-for**：当WAF前存在七层代理时，选择该选项后，WAF会以X-Forwarded-For（XFF）中的首个IP地址作为客户端真实IP。  - **自定义** ：当WAF前存在七层代理时，选择该项并配置字段名后，WAF优先从配置的字段中获取客户端真实IP。配置多个字段时，WAF从左到右依次读取客户端真实IP。 如果WAF从自定义字段中未获取到客户端真实IP，将依次从CDN-Src-Ip、X-Real-Ip、X-Forwarded-For、$remote_addr字段获取客户端真实IP。    | x-forwarded-for                                                                                                                                                                                                                                             |
      
   
   
4. 单击"下一步"，完成防护网站基本信息填写。根据"添加防护网站"面板提示，完成如下操作： 
   图3添加域名完成   
   ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001920672218.png "点击放大")
   1. [放行回源IP](https://support.huaweicloud.com/usermanual-waf/waf_01_0002.html#section4)
   
   2. [本地验证](https://support.huaweicloud.com/usermanual-waf/waf_01_0002.html#section6)
   
   
   完成上述步骤后，您可以在域名列表，查看已添加的域名"接入状态"。此时，域名"接入状态"为"未接入"，原因为"修改DNS解析"。
   
   
 
#### 步骤三：修改DNS解析
如果您之前在DNS云解析服务上添加的域名主机记录的"类型"是"CNAME-将域名指向另外一个域名"，请参照以下操作步骤接入WAF。
以下操作以华为云云解析DNS为例介绍修改域名CNAME解析记录的方法。如果您的域名的DNS解析托管在华为云云解析DNS上，您可以直接参照以下步骤进行操作；若您使用华为云以外的DNS服务，请参考以下步骤在域名的DNS服务商的系统上进行类似配置。
1. 获取CNAME值。
   
   - 方式一：完成[步骤二：放行回源IP](https://support.huaweicloud.com/usermanual-waf/waf_01_0002.html#section7)后展开"步骤二：本地验证"，或者在"接入管理"页面中"接入状态"列单击"本地验证"，在弹出的页面中复制CNAME值。
   
   - 方式二：在"资产管理 \> 防护对象"页面，单击目标域名名称后，进入域名基本信息页面，在"CNAME"信息行，单击![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001882550272.png)，复制"CNAME"值。
   
   
   
   
2. 域名解析。 
   1. 进入云解析页面的入口，如[图4]所示。
      图4云解析页面入口   
      ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000001550899193.png "点击放大") 
   
   2. 在目标域名所在行的"操作"列，单击"修改"，进入"修改记录集"页面。
   
   3. 在弹出的"修改记录集"对话框中修改记录值。
      图5修改记录集   
      ![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000002361160050.png "点击放大")
      表3修改记录集 
      | 参数       | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 取值样例                                         |
      |:---|:---|:---|
      | 记录类型    | 记录集的类型，此处为**CNAME**类型。 - 对于同一个主机记录，CNAME解析记录不能重复，您需要将已存在的解析记录的CNAME修改为WAF CNAME地址。  - 同一解析记录下，不同DNS解析记录类型间可能存在冲突。 例如，对于同一个主机记录，CNAME记录与A记录、MX记录、TXT记录等其他记录互相冲突。 在无法直接修改记录类型的情况下，您可以先删除存在冲突的其他记录，再添加一条新的CNAME记录。删除其他解析记录并新增CNAME解析记录的过程应尽可能在短时间内完成。如果删除A记录后没有添加CNAME解析记录，可能导致域名无法正常解析。   - 域名解析类型的限制规则请参见[添加记录集时，为什么会提示"与已有解析记录冲突"](https://support.huaweicloud.com/dns_faq/dns_faq_016.html)。                                                                                      | CNAME                                        |
      | 主机记录     | 解析域名的前缀，默认为空。 例如，创建的域名为"example.com"，其"主机记录"设置包括： - **www**：用于网站解析，表示解析的域名为"www.example.com"。  - **空** ：用于网站解析，表示解析的域名为"example.com"。 主机记录置为空，还可用于为空头域名"@"添加解析。   - **abc**：用于子域名解析，表示解析的域名为"example.com"的子域名"abc.example.com"。  - **mail**：用于邮箱解析，表示解析的域名为"mail.example.com"。  - **\***：用于泛解析，表示解析的域名为"\*.example.com"，匹配"example.com"的所有子域名。   | www                                           |
      | 线路类型    | 解析的线路类型用于DNS服务器在解析域名时，根据访问者的来源，返回对应的服务器IP地址。默认值为"全网默认"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 全网默认                                         |
      | TTL(秒)  | 解析记录在本地DNS服务器的缓存时间，以秒为单位。默认值为"300"。取值范围为：1\~2147483647。 如果您的服务地址经常更换，建议TTL值设置相对小些，反之，建议设置相对大些。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 300                                          |
      | 记录值       | 填写您要指向的别名，只能填写一个域名，此处为[1]已复制的WAF CNAME地址。 请勿将当前CNAME解析对应的IP直接配置为防护域名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | xxxxxxxdc1b71f718f233caf77.waf.huaweicloud.com |
      | 高级配置(可选) | 设置记录集的别名、权重、描述。此处保持默认即可。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | --                                            |
         
      
   
   4. 单击"确定"，完成DNS配置，等待DNS解析记录生效。 完成以上配置后，您可以在域名**解析记录**页签，查看修改的域名解析记录。
      
   
   
   
   
3. （可选）验证DNS配置。您可以Ping网站域名验证DNS解析是否生效。 
   由于DNS解析记录生效需要一定时间，如果验证失败，您可以等待5分钟后重新检查。
   
   
 
#### 操作结果验证
- 接入状态验证。 完成以上配置后，WAF会根据是否为网站域名配置了**CNAME记录** ，每隔30分钟**自动检测** 两周内新增或更新的域名接入状态。如果域名创建时间在两周前，且最近两周内没有任何修改，您可以在域名"接入状态"栏，单击![](https://support.huaweicloud.com/bestpractice-waf/zh-cn_image_0000002363834913.png)，**手动刷新**接入状态。
  接入状态说明：
  - **未接入** ：网站域名没有配置CNAME记录。您可参照[域名/IP接入状态显示"未接入"，如何处理？](https://support.huaweicloud.com/trouble-waf/waf_01_0278.html)重新完成域名接入。
  
  - **已接入**：域名已成功接入WAF，即域名已配置CNAME记录。
    
- 网站访问验证 在浏览器中输入防护域名，测试网站域名是否能正常访问；手动模拟简单的Web攻击命令（例如\<被防护域名\>/?id=1 and 1=1，id=1 and 1=1为用作测试的SQL注入攻击代码），验证WAF防护是否生效。
  
 
