如果您的业务未配置负载均衡,建议通过 CNAME 方式接入云 WAF 实例。在火山引擎 Web 应用防火墙控制台配置防护域名参数和 WAF 回源参数后,您只需要修改防护域名的 DNS 解析记录并放行火山引擎 Web 应用防火墙的回源 IP 地址,即可完成域名的安全防护配置。本文介绍通过 CNAME 接入防护的操作步骤。
前提条件 您已创建云 WAF 实例。创建相关操作,请参考创建 WAF 实例 。 所需防护域名已备案,且未添加到云 WAF 实例。备案相关操作,请参考备案流程 。
注意事项 WAF CNAME 接入支持 WebSocket 和 WebSockets 协议,且默认为启用状态,暂不支持关闭。
流程说明
步骤一:添加域名 登录 Web 应用防火墙控制台 。
在顶部菜单栏选择实例所属地域。
在左侧导航选择网站设置 ,然后单击新建站点 。
选择接入方式为 CNAME 。
填写要接入 WAF 的网站基础信息。
参数
说明
配置示例
网站配置
防护域名
填写需要接入防护的域名,支持泛域名或精准域名。域名须经过 ICP 备案 ,未备案域名将无法正常添加。
说明
如需同时配置泛域名和域名主体本身,请分别配置。如:需要同时配置*.b.a.com
和b.a.com
,需要分别接入域名并配置策略。
www.test.com
所属项目
将防护域名添加至当前账号被授权的项目中。项目管理是火山引擎提供的一种资源管理方式,有利于保持资源独立,维护数据安全。
默认关联当前账号授权的项目,且不可修改。 主账号可以查看所有项目,切换控制台顶部的所属项目为账号全部资源 后,可调整所属项目设置。 关于项目和权限管理相关的配置,可参考项目概述 。 default(默认项目)
协议类型
协议选择:
勾选 HTTPS 协议后需要选择对应证书。如只勾选 HTTPS 协议,则 HTTP 请求将默认重定向至 HTTPS。
HTTP:80、81 HTTPS:443、4443 协议跟随:关闭 HTTP 2.0:关闭 IPv6 防护:关闭 端口号配置:
HTTP 协议默认支持 80 端口,HTTPS 默认支持 443 端口。 协议支持配置的端口数量因版本而异。 端口号输入后按回车键可继续输入其他端口号。 支持编辑或删除已输入的端口号。 注意
输入的端口号需在可添加端口范围内且不能重复,单击查看可添加端口 可搜索查看对应协议下可添加的端口号。
更多设置:
非标端口强制重定向:如果仅勾选 HTTPS 协议,HTTP 协议的 80 端口会默认重定向至 HTTPS 协议的 443 端口。您可以通过非标端口强制重定向 ,将 HTTP 非标端口重定向至 HTTPS 的相同端口号。 协议跟随:开启后,访问请求的“回源协议”与“访问协议”保持一致。为保证正常回源,请同时选中 HTTP 和 HTTPS 并确认源站支持已选中的协议类型。 HTTP 2.0:开启前需要勾选 HTTPS 协议类型,开启后支持 HTTP 2.0 协议接入防护,以 HTTP 1.0/1.1 协议转发回源。 IPv6 防护:开启后支持对 IPv6 客户端请求的防护,可在回源配置中配置 IPv4 和 IPv6 源站地址。开启协议跟随后,IPv4 请求将转发 IPv4 源站,IPv6 请求转发 IPv6 源站。 证书选择
勾选 HTTPS 协议后需要选择对应证书,支持选择已上传的证书或者新增证书。
因启用 HTTPS 协议,故需要选择相关证书
DDoS 原生防护
如您需要对实例开启 DDoS 原生防护,可启用该功能,并选择相关 DDoS 原生防护实例。
注意
如您在之前配置并开启了 WAF 关联 EIP 实例的云防火墙防护策略,在您选择开启 DDoS 原生防护(企业版)后,WAF 的 EIP 会被与 DDoS 原生防护(企业版)关联的增强型防护 EIP 替代,此时 WAF 实例不受已有的云防火墙防护策略保护。如需要开启云防火墙防护,请重新配置。
暂不开启
日志配置
日志采集
选择当前域名的日志服务的启用状态。
开启 :域名规则创建完成后开始采集该域名产生的日志数据。关闭 :域名规则创建完成后不会采集该域名产生的日志数据。说明
如果需要开启日志服务,需要先完成 WAF 访问日志服务的跨服务授权,让 WAF 服务获取日志采集和存储权限。
开启
记录全量 Header
日志采集的字段分为必选字段和可选字段。在必选日志字段中,Host
、XForwardedFor
、Referer
和UserAgent
属于常见 header 字段。您在接入网站防护时,WAF 默认仅采集这些常见 header 日志字段。
如果您关闭 记录全量 Header,则日志仅记录这些常见 header 字段。 如果您开启 记录全量 Header,WAF 会记录常见 header 字段和自定义 header 字段。除Cookie
以外,其他自定义 header 字段统一记录在Headers
中。 关于日志字段的详细说明,可参考日志字段说明 。
关闭
接入能力
代理配置
需要配置的网站在接入 WAF 前是否使用了高防、CDN 等七层代理。
否 :WAF 前没有配置代理,WAF 取与 WAF 建立连接的 IP(取 X-Real-Ip)作为客户端 IP。是 :WAF 前配置了代理,表示 WAF 收到的业务请求来自其他七层代理服务转发,而非直接来自发起请求的客户端,需要进一步配置客户端 IP 判定方式。
X-Forwarded-For 字段获取客户端真实 IP:通过 X-Forwarded-For 字段中第一个公网 IP 地址作为客户端真实 IP 地址。注意
该方式存在攻击者伪造 X-Forwarded-For 字段的风险。
自定义 Header 字段:按匹配字段添加顺序获取客户端 IP 并将其作为客户端真实 IP 。如匹配字段无法获取客户端 IP,则将通过 X-Forwarded-For 字段获取;如 X-Forwarded-For 字段由于伪造非法 IP 无法获取,则取 X-Real-Ip 字段作为客户端 IP。说明
单实例每域名最多可配置 5 个自定义 Header 字段。
否
TLS 配置
如果勾选了 HTTPS 协议类型,需设置 TLS 参数,即设置允许使用的 TLS 协议版本和加密套件,不匹配的请求将默认被丢弃。为提升业务安全和兼容性,建议您使用系统默认配置。
TLS 协议 :默认全选。注意
修改时至少选择一个协议版本,暂不支持单独选中 TLSv1.3 版本。 选择多个版本时需注意版本号需要保持连续。例如,您不能仅选择 TLSv1 和 TLSv1.3。 加密套件 :默认选择全部加密套件。注意
使用未被选中的加密套件的请求将无法正常访问,请谨慎修改。
保持默认(全选)
长连接
配置客户端与 WAF 之间的长连接限制。
长连接保持时间:客户端与 WAF 之间的长连接保持时间。默认为 75 秒,支持配置 0~900 秒。 复用长连接请求数:单个已建立的 TCP 连接上可以重复发送多个请求的个数。默认为 100 个,支持配置 60~1000 个。 保持默认:
长连接保持时间:75 秒 复用长连接请求数:100 个 请求 Body 最大值
可接收客户端请求正文的最大值。默认为 60 MB,支持配置 1~10240 MB。
保持默认:60 MB
源站配置
回源方式
公网回源:回源地址为公网 IP。 VPC 内私有 IP 地址:回源地址为私有 IP,需选择对应火山引擎 VPC。 公网回源
负载均衡
加权轮询(WRR):权重值越高的后端服务器,被轮询到的次数(概率)越高。 加权最小连接数(WLC):将请求分发给“当前连接/权重”比值最小的后端服务器。 源地址哈希(SH):基于源 IP 地址的一致性哈希,相同源地址的请求会调度到相同的后端服务器。 加权轮询
源站配置
分组:
默认分组:默认包含全部未自定义配置回源规则的接入端口。当自定义分组规则未命中,默认匹配默认分组规则。 自定义分组:
单击添加 可生成一个自定义分组,需要配置生效的端口范围。 支持编辑自定义分组名称,不超过 15 个字符,支持中文、英文、数字和下划线。 支持删除自定义分组,删除分组后将清空组内回源配置,并对组内接入端口按照默认分组配置执行回源操作。 接入端口配置:
默认分组的接入端口范围为全部未自定义配置回源规则的接入端口。 自定义分组支持在添加的端口范围内选择多个目标接口。不同自定义分组间不得重复选择。 说明
例如,您在网站配置中选择了 HTTP 协议下的80
、81
、82
、83
端口,和 HTTPS 协议下的443
、4443
端口,且在源站配置的自定义分组 1 中选择了 HTTP 协议下的80
和81
端口,则余下的82
、83
、443
和4443
端口都将适用默认分组的回源规则配置。
源站地址配置:
源站协议:即从 WAF 回源至源站的回源协议,支持 HTTP/HTTPS 回源。注意
未开启协议跟随时,同一地域下不同分组间的源站协议将全局保持一致。例如:您将自定义分组中的某源站配置的协议设置为 HTTP 协议,则所有分组(包括默认分组)下的源站协议都将设置为 HTTP 协议。
源站地址:需要接入 WAF 的网站所提供服务的源站 IP 地址。 源站端口:源站地址对应的端口。 权重:表示后端服务器收到请求的概率,支持设置 1-100 的任意整数。说明
权重数字不直接代表比重。
如您希望多个源站的轮询概率相同,可设置同样的权重值。
源站权重之和可以大于 100。
当负载均衡算法为加权轮询时,每个源站被轮询的概率为(该源站的权重)/(源站组中所有源站权重之和)。因此权重越大,收到请求的概率越大。 当负载均衡算法为加权最小连接数时,计算数值为(当前连接数)/(该源站的权重),值最小的源站收到请求的概率最大。 当监听器调度算法为源地址哈希时,无需配置权重。 说明
由于网站配置勾选了 HTTP 和 HTTPS 协议,并且开启了协议跟随,所以需要分别配置支持 HTTP 和 HTTPS 协议的源站信息。
例如:
在默认分组中,添加以下 2 条源站配置。
源站 1 :
源站协议:HTTP 源站地址:192.1.. 源站端口:80 权重:100 源站 2:
源站协议:HTTPS 源站地址:192.2.. 源站端口:443 权重:40 说明
由于负载均衡算法为加权轮询
,源站 1(权重为 100) 的轮询概率更高。
回源能力
建立超时时间
WAF 和后端服务器的建连超时时间,建议大于健康检查超时时间。默认为 4 秒,支持配置 4~120 秒。
保持默认:4 秒
写连接超时时间
WAF 将请求传输给后端服务器的超时时间。默认为 60 秒,支持配置 30~3600 秒。
保持默认:60 秒
读连接超时时间
WAF 从后端服务器读取响应的超时时间。默认为 60 秒,支持配置 30~3600 秒。
保持默认:60 秒
回源长连接
WAF 回源时,长连接可复用的个数。默认为 100 个,支持配置 60~1000 个。
保持默认:100 个
回源重试
WAF 回源失败后,可重试的次数。默认为 3 次,支持配置 1~10 次。
保持默认:3 次
空闲长连接超时时间
WAF 与后端服务器建立请求的长连接空闲时间。默认为 15 秒,支持配置 1~60 秒。
保持默认:15 秒
SNI 配置
如果您的源站 IP 绑定了多个域名,且 WAF 以 HTTPS 协议回源访问您的源站,您需要配置回源 SNI(Server Name Indication)指明请求的具体域名。源站根据配置的 SNI 名称返回对应域名的 SSL 证书,以确保正常回源。 如果未配置域名,则根据流量中的实际 host 回源。 关闭
单击提交 。
站点添加成功后,WAF 会在页面返回防护域名的 CNAME 值和 WAF 的回源 IP 地址。
步骤二:放行 WAF 回源 IP 在业务接入 Web 应用防火墙之后,所有的请求都会通过 WAF 的回源 IP 段返回到源站。这会导致每个回源 IP 上的请求量增加,从而容易触发安全策略的误拦截或限速,因此需要对 WAF 的回源 IP 段进行放行。
如果源站已经配置了防火墙或安装了安全软件,您复制以下回源 IP 地址,并将它们添加到源站的防火墙、访问控制列表(ACL)或者其他任何安全软件的白名单中。这样可以确保回源 IP 不会受到源站安全策略的影响。
您可以在添加完成后的返回页面,单击复制全部 IP 地址 ,获取需要放行的回源 IP 信息。
步骤三:验证转发配置 建议您在放行回源 IP 后,验证 WAF 实例的业务转发配置是否生效,避免因配置未生效导致业务切换过程中发生中断。验证操作详情请参见验证转发配置 。
步骤四:修改域名 DNS 访问 Web 应用的 DNS 解析服务商,将 DNS 服务记录类型设置为 CNAME,将记录值修改为刚获取到的 WAF CNAME 值。
待 DNS 解析生效后,防护域名的请求流量就会转发到 WAF。您可以在网站设置 页面查看添加的网站信息,接入成功的网站状态和防护模式如下。
步骤五:设置防护策略 域名接入后,默认开启漏洞防护策略(正常模式)。您也可自定义其他防护策略,关于防护策略设置的更多详情,请参见防护策略类型 。
说明
默认开启的漏洞防护策略将执行观察动作,即放行请求流量,但会将请求行为上报至攻击日志。
下文以配置一条黑名单防护策略,限制 IP 地址192.1.1.1
的访问请求为例。
登录 Web 应用防火墙控制台 。
在顶部菜单栏选择实例所属地域。
在左侧导航选择防护策略>访问管控 。
开启待防护域名的黑名单访问功能。
在页面上方选择需要添加访问黑名单策略的域名。 单击访问黑名单 。 开启策略启用开关。 单击添加黑名单 ,配置规则参数。
参数
说明
配置示例
基本信息
规则名称
防护规则名称。
说明
以中文、字母、数字开头。 允许字母、数字、中文、点“.”、下划线“_”和短横线“-”。 长度为 1-128 个字符。 Block_rule1
规则描述
填写规则相关备注信息,例如拦截原因。
拦截对应 IP 的访问
防护域名
选择域名:选择已经接入防护的域名,支持选择多个域名。 选择域名组:选择已经创建的域名组,支持选择多个域名组。 选择域名组
规则条件
IP 地址
手动添加:手动输入需要加为白名单的 IP 地址,支持输入单个 IP 地址、IP 地址段或全部 IP 地址(*)。 引用地址组:选择已经创建的 IP 地址组,支持选择多个地址组。 选择地理位置:勾选需要限制的 IP 来源区域,支持选择多个区域。 手动添加:192.1.1.1
特征描述
请求路径:填写需要拦截 IP 地址的网站路径,可以是具体的某个页面 URL,也可以针对整个网站。
某个具体的 URL 地址,例如需要拦截对test.com/test.html
路径的访问,则填写 /test.html
。 针对整个网站,则填写/*
即可。 支持填写通配符*
,仅可出现一次,例如/test/*
。 多个网站路径可用英文逗号分隔。 添加条件:设置其他匹配字段、逻辑符和匹配内容。
匹配字段:选择匹配字段,目前支持请求协议、请求 uri、请求方法、请求路径、请求参数、请求头等字段。 逻辑符:选择逻辑符,目前支持大于、大于等于、等于、小于、小于等于、不等于等逻辑关系。 匹配内容:填写该条规则需要匹配的具体内容。 多个条件之间为“且”的关系,即当多个条件都满足,方可触发规则。 例如,拦截来自访问源 IP 地址至/test.html
路径,且请求方法为POST
的访问请求,则可以设置以下特征:
请求路径
等于
/test.html
请求方法
等于
POST
请求路径:/test.html 添加条件:请求方法
等于
POST
执行动作
观察:放行请求流量,但会将请求行为上报至攻击日志。 拦截:拦截请求流量,将请求行为上报至攻击日志。如果配置了自定义拦截响应页面,WAF 会将配置的拦截响应页面信息返回给客户端。 拦截
生效配置
规则开关
开启或关闭当前规则。
开启
单击确定 ,完成规则配置。
配置完成后,则所有来自源 IP 192.1.1.1
的访问请求都将被拦截,且在攻击日志中可查看对应记录。
后续操作