更新时间:2024-11-05 GMT+08:00
分享

将网站接入WAF防护(云模式-CNAME接入)

如果您的业务服务器部署在华为云、非华为云或云下,您可以使用云模式的CNAME接入方式将网站的域名添加到WAF进行防护。业务开通WAF后,您需要将网站接入WAF才能开启防护。CNAME模式下,WAF将作为一个反向代理,使用特定的回源IP段将经过WAF检测后的正常流量转发回Web业务的源站服务器。

如果您已开通企业项目,您可以在“企业项目”下拉列表中选择您所在的企业项目,在该企业项目下添加防护网站。

方案概述

CNAME模式下,将网站接入WAF,就是实现将网站流量牵引到WAF进行检测,再将检测后的流量转发到源站的过程。网站接入WAF后,流量访问示意图如图1所示。

图1 网站流量访问示意图
流量访问说明如下:
  1. 用户在浏览器输入域名后,客户端会向DNS发送请求,查询域名解析地址。
  2. DNS返回域名解析地址。
  3. 如果无代理(例如CDN、DDos高防等),DNS返回的域名解析地址为WAF IP,客户端通过WAF IP访问WAF。如果存在代理:
    1. DNS返回的域名解析地址为代理IP,客户端通过代理IP访问代理。
    2. 代理通过WAF IP访问WAF。
  4. WAF对流量进行检测后,拦截异常流量,使用回源IP(段)将正常流量转发到源站服务器。

接入流程

根据网站是否使用代理(例如高防、CDN、云加速等),您需要完成如下接入操作。

操作步骤

说明

步骤一:添加防护域名

介绍如何将防护域名 、源站信息等添加到WAF。

步骤二:放行回源IP

介绍如何获取回源IP,放行回源IP。

步骤三:本地验证

介绍如何在本地计算机验证域名接入配置是否生效。

步骤四:修改域名DNS解析设置

步骤五:接入验证

介绍如何验证域名是否接入成功、基础防护是否生效。

前提条件

  • 购买WAF云模式,并已了解网站接入的相关信息。
  • 确保域名经过ICP(Internet Content Provider)备案,WAF会检查域名备案情况,未备案域名将无法添加。

步骤一:添加防护域名

为了将业务接入WAF防护,您需要将防护域名、源站信息等,添加到WAF。

  1. 登录管理控制台
  2. 在管理控制台左上角,单击,选择区域或项目。
  3. 在页面左上方,单击,选择安全与合规 > Web应用防火墙 WAF
  4. 在左侧导航树中,单击“网站设置”,进入“网站设置”页面。
  5. 在网站列表左上角,单击“添加防护网站”
  6. 选择“云模式-CNAME接入”并单击“开始配置”
  7. 基础信息配置,如图2所示,参数说明如表1所示。

    图2 基础信息配置
    表1 基础信息参数说明

    参数

    参数说明

    取值样例

    防护域名

    需要添加到WAF进行防护的域名,支持单域名(例如,一级域名example.com,二级域名www.example.com等)和泛域名(例如,*.example.com)。

    须知:
    • 入门版不支持添加泛域名。
    • 泛域名添加说明如下:
      • 如果各子域名对应的服务器IP地址相同:输入防护的泛域名。例如:子域名a.example.com,b.example.com和c.example.com对应的服务器IP地址相同,可以直接添加泛域名*.example.com。
      • 如果各子域名对应的服务器IP地址不相同:请将子域名按“单域名”方式逐条添加。
    • 同一个域名对应不同端口视为不同的域名,例如www.example.com:8080和www.example.com:8081视为两个不同的域名,将占用两个不同的域名防护额度。
    • 请确保域名经过ICP(Internet Content Provider)备案,WAF会检查域名备案情况,未备案域名将无法添加。

    -

    网站名称(可选)

    自定义网站名称。

    WAF

    网站备注(可选)

    网站的备注信息。

    waftest

    防护端口

    要防护的端口。

    • 配置为80、443端口时,在下拉框中选择“标准端口”
    • 配置为其他端口时,所选端口必须在可选端口范围内。您可以单击“查看可添加端口”,查看WAF支持的HTTP和HTTPS端口。更多信息请参见WAF支持的端口范围
    说明:

    如果配置了除80/443以外的其他端口,访问网站时,需要在网址后面增加非标准端口进行访问,否则访问网站时会出现404错误

    81

    服务器配置

    网站服务器相关信息,包括对外协议、源站协议、源站地址、源站端口和权重。

    • 对外协议:客户端请求访问服务器的协议类型,包括“HTTP”“HTTPS”两种。

      HTTPS协议是HTTP的安全版本,它在HTTP下增加了 SSL/TLS 协议,提供了数据加密、完整性校验和身份验证。因此,选择HTTS协议时,需要配置证书。

      “对外协议”选择“HTTPS”时,支持开启HTTP2协议

      说明:

      “防护端口”选择“标准端口”时,HTTPS协议默认防护的443端口,HTTP协议默认防护的80端口。

    • 源站协议:网站服务器支持的协议类型。也是Web应用防火墙转发客户端请求的协议类型。包括“HTTP”“HTTPS”两种协议类型。
      说明:

      如果“对外协议”“源站协议”不一致,WAF会将“对外协议”转换为“源站协议”,使用“源站协议”来转发客户端的请求。

    • 源站地址:客户端访问的网站服务器的公网IP地址(一般对应该域名在DNS服务商处配置的A记录)或者域名(一般对应该域名在DNS服务商处配置的CNAME)。支持以下两种IP格式:
      • IPv4,例如:XXX.XXX.1.1
      • IPv6,例如:fe80:0000:0000:0000:0000:0000:0000:0000
      须知:

      仅专业版和铂金版支持IPv6防护。

    • 源站端口:WAF转发客户端请求到服务器的业务端口。
    • 权重:负载均衡算法将按权重将请求分配给源站。

    对外协议:HTTP

    源站协议:HTTP

    源站地址:IPv4 XXX .XXX.1.1

    源站端口:80

    证书选择

    “对外协议”设置为“HTTPS”时,需要选择证书。

    • 如果您未创建证书,单击“导入新证书”,在“导入新证书”对话框,填写证书相关参数。更多信息,请参见上传证书

      成功导入的新证书,将同步添加到“证书管理”页面的证书列表。

    • 如果已创建证书,在下拉框“已有证书”中选择正确、有效的证书。
    • 如果您已经在同一个账号下使用了CCM中证书,也可以直接在下拉框中选择SCM证书,此处选择的SCM证书名称与CCM里证书名称一致。
    须知:
    • WAF当前仅支持PEM格式证书。如果证书为非PEM格式,请参考如何将非PEM格式的证书转换为PEM格式?证书转换为PEM格式,再上传。
    • 目前华为云SCM证书只能推送到“default”企业项目下。如果您使用其他企业项目,则不能选择使用SCM推送的SSL证书。
    • 选择的SCM证书会自动在“证书管理”页面生成一条记录,该证书支持在“证书管理”页面修改证书名称,但不会同步修改CCM里显示的证书名称。
    • 如果您的证书即将到期,为了不影响网站的使用,建议您在到期前重新使用新的证书,并在WAF中同步更新网站绑定的证书。

      WAF支持证书过期时发送告警通知,您可以在“告警通知”界面配置证书过期提醒,具体的操作请参见开启告警通知

    • 域名和证书需要一一对应,泛域名只能使用泛域名证书。如果您没有泛域名证书,只有单域名对应的证书,则只能在WAF中按照单域名的方式逐条添加域名进行防护。

    -

    最低TLS版本和加密套件

    选择证书后,需要选择最低TLS版本和加密套件。

    WAF默认配置的最低TLS版本为TLS v1.0,加密套件为加密套件1。更多信息,请参见配置PCI DSS/3DS合规与TLS

    最低TLS版本:TLS v1.0

    加密套件:加密套件1

    是否使用七层代理

    • 是:使用了DDoS高防(七层代理)、CDN、云加速等Web代理产品。
    • 否:没有使用七层代理。
    须知:
    • 选择“是”后,即在WAF前使用了七层代理,WAF将从配置的Header头中的相关字段获取用户真实访问IP,详见配置攻击惩罚的流量标识

    无代理

  8. 高级配置,如图3所示。

    图3 高级配置
    表2 高级配置参数说明

    参数

    参数说明

    取值样例

    负载均衡算法

    存在多个源站服务器地址时,需选择多源站服务器间的负载均衡算法。

    • 源IP Hash:将某个IP的请求定向到同一个服务器。
    • 加权轮询:所有请求将按权重轮流分配给源站服务器,权重越大,回源到该源站的几率越高。
    • Session Hash:将某个Session标识的请求定向到同一个源站服务器,请确保在域名添加完毕后配置攻击惩罚的流量标识,否则Session Hash配置不生效。

    更多信息请见修改负载均衡算法

    加权轮询

    IPv6防护

    如果该域名存在IPv6协议的访问请求,请选择“开启”,开启后WAF将为域名分配IPv6的接入地址。更多信息请参见开启IPv6防护

    说明:
    • 仅专业版和铂金版支持IPv6防护。
    • “源站地址”选择“IPv6”时,默认开启“IPv6防护”
    • “源站地址”选择“IPv4”时,开启“IPv6防护”后,WAF将为域名分配IPv6的接入地址,即将IPv4源站转化成IPv6网站,将外部IPv6访问流量转化成对内的IPv4流量。具体的请参见WAF如何解析/访问IPv6源站?
    • 当源站存在IPv6地址,默认开启IPv6防护。WAF为了防止客户IPv6的业务中断,禁止关闭IPv6的开关,如果确定不需要IPv6防护,需要先修改服务器配置,在源站删除IPv6的配置,具体的操作方法请参见修改服务器配置信息

    开启

    HTTP2协议

    如果您的网站需要支持HTTP2协议的访问,则选择“使用”

    HTTP2协议仅适用于客户端到WAF之间的访问,且“对外协议”必须包含HTTPS才支持使用。

    须知:
    • 仅专业版和铂金版支持HTTP2协议。
    • “服务器配置”中至少有一条源站地址的“对外协议”配置为HTTPS,开启后才会生效。
    • 当客户端最大支持TLS 1.2时,HTTP2才生效。

    使用

    防护策略

    选择要启用的防护策略。

    • “系统自动生成策略”(默认):详细说明如表3所示。如果已添加的防护策略达到配额,不支持选择该项。
    • 自定义防护策略:根据防护需求创建的防护策略。更多信息,请参见配置防护策略
      须知:

      入门版、标准版只能选择“系统自动生成策略”

    系统自动生成策略

    表3 系统自动生成策略说明

    版本

    防护策略

    策略说明

    入门版、标准版

    Web基础防护(“仅记录”模式、常规检测)

    仅记录SQL注入、XSS跨站脚本、远程溢出攻击、文件包含、Bash漏洞攻击、远程命令执行、目录遍历、敏感文件访问、命令/代码注入等攻击行为。

    专业版、铂金版

    Web基础防护(“仅记录”模式、常规检测)

    仅记录SQL注入、XSS跨站脚本、远程溢出攻击、文件包含、Bash漏洞攻击、远程命令执行、目录遍历、敏感文件访问、命令/代码注入等攻击行为。

    网站反爬虫(“仅记录”模式、扫描器)

    仅记录漏洞扫描、病毒扫描等Web扫描任务,如OpenVAS、Nmap的爬虫行为。

    “仅记录”模式:发现攻击行为后WAF只记录攻击事件不阻断攻击。

  9. 单击“下一步”,添加域名完成。

    根据界面提示,完成放行WAF回源IP本地验证修改域名DNS解析设置的配置操作。
    图4 添加域名完成

步骤二:放行回源IP

回源IP是WAF转发正常客户端请求到服务器时用的源IP,在服务器看来,接入WAF后所有源IP都会变成WAF的回源IP,而真实的客户端地址会被加在HTTP头部的XFF字段中。

如果源站使用了其他防火墙、网络ACL、安全组、杀毒软件等,很容易把WAF的回源IP当作恶意IP进行拦截。因此,建议您在源站服务器上配置只放行WAF回源IP的访问控制策略,防止黑客获取源站IP后绕过WAF直接攻击源站。

  • WAF的回源IP会因为扩容/新建集群而增加,对于一个客户的存量域名,一般回源IP会固定在2~4个集群的几个C类IP地址(192.0.0.0~223.255.255.255)上。
  • 一般情况下,在没有灾备切换或其他调度切换集群的场景下,回源IP不会变。且WAF后台做集群切换时,会探测源站安全组配置,确保不会因为安全组配置导致业务整体故障。
  1. 获取WAF的回源IP。

    完成步骤一:添加防护域名后展开“步骤一:放行回源IP”,或者在“网站设置”页面,在目标网站所在行的“接入状态”栏中,单击“回源IP加白”,单击,复制所有回源IP。
    图5 复制回源IP

  2. 打开源站服务器上的安全软件,将复制的IP段添加到白名单。

    • 源站服务器部署在华为云ECS上,请参考源站服务器部署在ECS上,放行WAF回源IP进行操作。
    • 源站服务器部署在华为云ELB上,请参考源站服务器部署在华为云ELB上,放行WAF回源IP进行操作。
    • 如果您同时使用了华为云云防火墙(CFW),请参考添加防护规则放行WAF的回源IP。
    • 如果后端资源在其他云厂商,请在对应安全组、访问控制等中添加信任WAF的回源IP。
    • 如果源站服务器只安装了个人版杀毒软件,通常这些软件没有配置加白IP的界面。如果是对外提供Web业务的服务器,建议您安装服务器版本的企业安全软件,或华为云主机安全服务产品,这些产品会识别一些请求量较大的IP的socket,并偶发断开连接,一般情况下不会拦截WAF的回源IP。

  3. 完成以上操作后,勾选“已完成回源IP加白”

步骤三:本地验证

您可以修改本地计算机的hosts文件,设置本地计算机的域名寻址映射(仅对本地计算机生效的DNS解析记录),在本地计算机上将网站域名的解析指向WAF的IP地址。这样就可以通过本地计算机访问被防护的域名,验证WAF中添加的域名接入设置是否正确有效,避免域名接入配置异常导致网站访问异常。

进行此操作前请确认:

  • 确保添加的域名(例如:www.example5.com)的源站服务器协议、地址、端口配置正确,如果“对外协议”选择了“HTTPS”,也必须确保上传的证书和私钥正确。
  • 已完成步骤二:放行回源IP
  1. 获取CNAME值。

    • 方式一:完成步骤二:放行回源IP后展开“步骤二:本地验证”,或者在“网站设置”页面中“接入状态”列单击“本地验证”,在弹出的页面中复制CNAME值。
    • 方式二:在网站设置页面,在目标域名所在行中,单击目标域名名称,进入域名基本信息页面,在“CNAME”信息行,单击,复制“CNAME”值。

  2. ping“CNAME”值并记录“CNAME”对应的IP地址。

    以域名www.example5.com为例,该域名已添加到WAF的网站配置中,且WAF为其分配了以下CNAME值:xxxxxxxdc1b71f718f233caf77.waf.huaweicloud.com。

    在Windows中打开cmd命令行工具或者Linux中的bash工具,运行ping xxxxxxxdc1b71f718f233caf77.waf.huaweicloud.com获取WAF的接入IP。如图6所示,在响应结果中可以看到用来防护您的域名的WAF接入IP。
    图6 ping cname

    如果ping cname没有获取到WAF的接入IP,可能是由于您的网络不稳定,请确保您的网络运行正常,再执行以上操作。

  3. 在本地修改hosts文件,将域名及“CNAME”对应的WAF接入IP添加到“hosts”文件。

    1. 用文本编辑器打开hosts文件,hosts文件路径如下:
      • Windows:“C:\Windows\System32\drivers\etc\”
      • Linux:“/etc/hosts”
    2. 在hosts文件添加如图7内容,前面的IP地址即在2中获取的WAF接入IP地址,后面的域名即被防护的域名。
      图7 追加记录
    3. 修改hosts文件后保存,然后在命令行工具运行ping一下被防护的域名。
      图8 ping域名

      预期此时解析到的IP地址应该是2中绑定的WAF的接入IP地址。如果依然是源站地址,可尝试刷新本地的DNS缓存(Windows的cmd下可以使用ipconfig/flushdns命令,Linux的bash下可以使用systemd-resolved命令)。

  4. 访问验证。

    1. 清理浏览器缓存,在浏览器中输入防护域名,测试网站域名是否能正常访问。

      如果hosts绑定已经生效(域名已经本地解析为WAF回源IP)且WAF的配置正确,访问该域名,预期网站能够正常打开。

    2. 手动模拟简单的Web攻击命令,测试Web攻击请求。
      1. 将Web基础防护的状态设置为“拦截”模式,具体方法请参见配置Web基础防护规则
      2. 清理浏览器缓存,在浏览器中输入模拟SQL注入攻击的测试域名,测试WAF是否拦截了此条攻击,如图9所示。
        图9 访问被拦截
      3. 在左侧导航树中,选择防护事件,进入“防护事件”页面,查看防护域名测试的各项数据。

  5. 完成上述步骤后,勾选“已完成本地验证”

步骤四:修改域名DNS解析设置

将域名添加到WAF后,WAF作为一个反向代理存在于客户端和服务器之间,服务器的真实IP被隐藏起来,Web访问者只能看到WAF的IP地址,所以您必须将域名的DNS解析指向WAF提供的CNAME地址,才可以使域名的Web请求解析到WAF进行安全防护。本地验证通过后,您需要在DNS服务商处修改DNS解析设置,将网站的Web请求解析到WAF进行安全防护。

修改域名DNS解析设置前请确认:

未使用代理

  1. 获取WAF的CNAME。

    • 方式一:完成步骤三:本地验证后展开“步骤三:DNS解析”,或者在“网站设置”页面中“接入状态”列单击“修改DNS解析”,在弹出的页面复制CNAME值。
    • 方式二:在网站设置页面,在目标域名所在行中,单击目标域名名称,进入域名基本信息页面,在“CNAME”信息行,单击,复制“CNAME”值。

  2. 修改域名DNS解析为WAF的CNAME值。

    到该域名的DNS服务商处,配置防护域名的别名解析,具体操作请咨询您的域名服务提供商。

    以下为华为云DNS的CNAME绑定方法,仅供参考。如与实际配置不符,请以各自域名服务商的信息为准。

    1. 单击页面左上方的,选择网络 > 云解析服务 DNS
    2. 在左侧导航栏中,选择“公网域名”,进入“公网域名”页面。
    3. 在目标域名所在行的“操作”列,单击“管理解析”,进入“解析记录”页面。
      图10 解析记录
    4. 在目标记录集的所在行“操作”列,单击“修改”
    5. 在弹出的“修改记录集”对话框中修改记录值。
      • “主机记录”:在WAF中配置的域名。
      • “记录类型”:选择“CNAME-将域名指向另外一个域名”
      • “线路类型”:全网默认。
      • “TTL(秒)”:一般建议设置为5分钟,TTL值越大,则DNS记录的同步和更新越慢。
      • “记录值”:修改为已复制的WAF CNAME地址。
      • 其他的设置保持不变。
      图11 修改记录集

      关于修改解析记录:

      • 对于同一个主机记录,CNAME解析记录不能重复,您需要将已存在的解析记录的CNAME修改为WAF CNAME地址。
      • 同一解析记录下,不同DNS解析记录类型间可能存在冲突。例如,对于同一个主机记录,CNAME记录与A记录、MX记录、TXT记录等其他记录互相冲突。在无法直接修改记录类型的情况下,您可以先删除存在冲突的其他记录,再添加一条新的CNAME记录。删除其他解析记录并新增CNAME解析记录的过程应尽可能在短时间内完成。如果删除A记录后没有添加CNAME解析记录,可能导致域名无法正常解析。

      域名解析类型的限制规则请参见添加记录集时,为什么会提示“与已有解析记录冲突”?

    6. 单击“确定”,完成DNS配置,等待DNS解析记录生效。

使用代理

  1. 获取WAF的CNAME。

    • 方式一:完成步骤三:本地验证后单击“步骤三:修改回源地址”,或者在“网站设置”页面中“接入状态”列单击“修改代理回源地址”,在弹出的页面中复制CNAME值。
    • 方式二:在网站设置页面,在目标域名所在行中,单击目标域名名称,进入域名基本信息页面,在“CNAME”信息行,单击,复制“CNAME”值。

  2. 确认DNS的解析已指向代理,同时将使用的代理类服务(高防、CDN服务等)的回源地址修改为复制的目标域名的CNAME,具体的方法请参见网站业务接入

    为了防止其他用户提前将您的域名配置到Web应用防火墙上,从而对您的域名防护造成干扰,建议您的DNS服务商处添加“子域名”“TXT记录”

    1. 获取“子域名”“TXT记录”:在域名基本信息页面顶部,单击“未接入”旁边的,在弹出的对话框中,复制“子域名”“TXT记录”
    2. 到DNS服务商处添加“子域名”,并为它配置“TXT记录”。具体的配置方法请参见未配置子域名和TXT记录的影响

    WAF会根据配置“子域名”“TXT记录”判断域名的所有权属于哪个用户。

配置验证

完成如上配置后,您需要验证域名的CNAME是否配置成功。

  1. 在Windows操作系统中,选择开始 > 运行,在弹出框中输入“cmd”,按“Enter”
  2. 执行nslookup命令,查询CNAME。

    如果回显的域名是配置的CNAME,则表示配置成功,示例如图12所示。

    以域名www.example.com为例。

    nslookup www.example.com
    图12 查询CNAME

  3. 完成以上步骤,勾选“已完成DNS解析”

步骤五:接入验证

  • 接入状态验证。

    一般情况下,如果您确认已完成域名接入,“接入状态”“已接入”,表示域名接入成功。

    如果防护域名已接入WAF,“接入状态”仍然为“未接入”,可单击,刷新状态,如果仍然为“未接入”,可参照域名/IP接入状态显示“未接入”,如何处理?重新完成域名接入。

  • 网站访问验证。
    • 在浏览器中输入防护域名,测试网站域名是否能正常访问。

      如果配置了非标准端口,访问网站时,需要在网址后面增加非标准端口进行访问,否则访问网站时会出现404错误

    • 手动模拟简单的Web攻击命令,验证WAF防护是否生效。具体操作,请参见4.b

后续操作

域名接入成功后建议您完成以下操作:

相关文档