ASM网关支持对接WAF,并且可以通过自定义访问日志格式来查看WAF对回源请求添加的Header,更方便线上运维。本文介绍如何使用ASM网关对接WAF,以及如何使用ASM的自定义访问日志能力进行调试。
前提条件
已部署入口网关。具体操作,请参见创建入口网关。
已添加集群到ASM实例。具体操作,请参见添加集群到ASM实例。
已部署httpbin应用,并暴露在网关的80端口。具体操作,请参见部署httpbin应用。
WAF功能介绍
Web应用防火墙(Web Application Firewall,简称WAF)为您的网站或App业务提供一站式安全防护。WAF可以有效识别Web业务流量的恶意特征,在对流量清洗和过滤后,将正常、安全的流量返回给服务器,避免网站服务器被恶意入侵导致性能异常等问题,从而保障网站的业务安全和数据安全。
步骤一:将ASM网关接入WAF
ASM支持四层CLB和CNAME这两种方式接入WAF。两种方式使用场景不同,请根据需求选择。
四层CLB接入(推荐):将ASM网关的CLB接入(原SLB)。这种方式可以直接将网关的所有流量接入WAF。所有到达网关CLB的请求都会执行WAF规则。
CNAME接入:将指定域名的请求接入。如果一个ASM网关上有多个域名,并非所有域名都需要WAF防护,可以采用这种方式。
说明CNAME接入需要修改域名的DNS的解析规则。请将您的域名先指向WAF代理,然后WAF再将请求传给ASM网关。
方式一:四层CLB接入
登录Web应用防火墙控制台,按照您的需求单击购买包年包月或开通按量付费,仔细确认地域等配置项后,单击立即购买创建WAF3.0实例。如果您已创建WAF实例,可以使用已有实例。
在左侧导航栏,选择接入管理。在接入管理页面,选择云产品接入页签,单击CLB(TCP),在右侧区域单击接入。
在接入资产-四层CLB面板列表中,找到网关绑定的CLB,单击添加端口。选择ASM网关上的对应端口。端口配置完,单击确定。
本文选择的是HTTP协议的80端口。如果您需要选择HTTPS协议,需要在此处配置HTTPS证书。
说明您可以登录ASM控制台,在网关详情页查看网关对应的CLB实例信息。
选中启用流量标记。配置三个Header,然后单击确定,完成配置。
如果请求携带该Header,则可以认为该请求经过了WAF防护。三个Header的内容分别是:自定义Header
customwaftag:customwaftagvalue
、客户端真实源IPclientrealip
以及客户端真实源端口clientrealport
。
方式二:CNAME接入
登录Web应用防火墙控制台,按照您的需求单击购买包年包月或开通按量付费,仔细确认地域等配置项后,单击立即购买创建WAF3.0实例。如果您已创建WAF实例,可以使用已有实例。
在左侧导航栏,选择接入管理,然后在接入管理页面,选择CNAME接入页签,单击接入。
在配置监听配置向导,进行相关配置,单击下一步。
中国内地的WAF会校验域名是否备案。请填写有效的域名,避免校验失败。配置示例如下。
在配置转发配置向导,负载均衡算法选中IP hash,服务器地址选中IP,填写ASM网关的公网地址。选中启用流量标记,添加三个Header,其他配置项保持默认,单击提交。
该配置会在通过WAF发往ASM网关的请求中添加对应的三个Header。三个Header的内容分别是:自定义Headercustomwaftag:customwaftagvalue、客户端真实源IPclientrealip以及客户端真实源端口clientrealport。
在接入完成配置向导,单击复制CNAME,记录WAF提供的CNAME地址,然后单击完成。
说明采用CNAME接入,需要您将此处配置的域名的DNS记录指向WAF提供的CNAME地址。
(可选)步骤二:自定义ASM访问日志格式
经过WAF校验的请求可能会携带一些特殊的Header。例如,步骤一配置转发时在请求中添加了一个自定义Header和两个标识请求源IP、源端口的Header。在将线上应用接入WAF时,如果不能在调用链路的日志中看到这个Header,将会给链路联调造成极大困难。这种情况下,您可以使用ASM可观测能力的自定义访问日志功能。具体操作,请参见自定义数据面访问日志。
步骤三:测试是否接入WAF成功
方式一:采用四层CLB接入
使用四层CLB接入WAF,直接访问网关的IP地址。在浏览器中输入${ASM网关IP地址}:80/status/418
。
预期输出:
-=[ teapot ]=-
_...._
.' _ _ `.
| ."` ^ `". _,
\_;`"---"`|//
| ;/
\_ _/
`"""`
方式二:采用CNAME接入
使用WAF提供的CNAME地址,执行以下命令,访问httpbin应用的/status/418
路径。
curl -HHost:${WAF处配置的域名} "http://${WAF提供的CNAME地址}/status/418" -v
此处并没有使用原始域名访问。如需使用原始域名访问,请您自行修改域名解析规则,将原始域名解析到WAF提供的CNAME地址。
步骤四:查看网关日志中WAF添加的Header值
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在网关日志标签页的文本框中输入418,单击查询/分析。
您可以看到日志中已经打印出了WAF添加的Header值。
对接完成之后,您可以登录WAF控制台配置其他更高级的防护能力,保护您的网站不受攻击。如果您还有其他自定义Header需要全链路观测,请参考步骤二中的方式配置。