更新时间:2023-01-29 17:48:31
CDN Pro上可以集成Web应用防火墙(WAF),以保护您的源站服务器免受恶意请求攻击。无论您的WEB应用程序及第三方WAF应用是部署在云上(Cloud Native)、数据中心(Data Center & Legacy Apps)、容器或者是采用无服务器部署(Any Application+Serverless),均可以与CDN Pro无缝协作实现安全加速分发。本文将为您介绍如何在CDN Pro边缘上集成WAF应用。
假设您的业务具备如下特性:
cdnpro.8686c.com
有2个源站:Origin1-IP:1.1.1.1
和 Origin2-IP: 1.1.1.2
。Host
头中携带该域名,以访问指定的文件内容。Cdn-Src-Ip
头部传递客户端原始IP。使用 CDN Pro 集成WAF安全加速服务:
Origin1
和 Origin2
。业务流量在经过CDN Pro进行加速的时候,会将流量引入到WAF应用进行检测,确保仅有可信流量可以访问后端源站应用。以下我们将以CDN Pro+网宿WAF为您介绍配置示例。cdnpro.8686c.com
,并配置其回源地址指向2个源站服务器 IP 地址: 1.1.1.1
和 1.1.1.2
,此时,系统生成这个实例的WAF CNAME:cdnpro.8686c.com.wssec.com
。稍后我们会将经过CDN Pro的流量指向这个WAF CNAME地址,同时我们会调整WAF回源站的选源策略。配置回源策略。在WAF的回源配置下,高级源配置生效优先级大于普通源配置。在换源配置页面下,我们可以看到我们刚刚创建域名时添加的普通回源IP: 1.1.1.1;1.1.1.2
,但是这个并不是我们最终想要的选源策略,我们可以新增高级源策略。此处,我们配置了3条高级源策略:a)中国大陆WAF节点检测后,优先回 1.1.1.1
这个源IP,若回源不通则尝试走1.1.1.2
这个源IP;b)美国WAF节点检测后,优先回 1.1.1.2
这个源IP,若回源不通则尝试走1.1.1.1
这个源IP;c)其他区域WAF节点检测后,在 1.1.1.1
和1.1.1.2
这两个源IP中随机轮询回源。
同时,我们还配置了回源请求HOST为 cdnpro.8686c.com
,并指定了回源的端口为443。在此场景下,我们实际上也可以不配置这个HOST值,因为该值默认为空的时候,WAF将直接把客户端携带的 Host
请求标头值传递给源站服务器。
cdnpro.8686c.com
的SSL证书,并进行证书关联域名操作,以开启HTTPS。若您没有证书,可通过“申请一键证书”来申请免费的DV SSL证书。cdnpro.8686c.com
创建一个加速项目。cdnpro.8686c.com.wssec.com
。CDN Pro回源访问WAF CNAME,WAF检测完成后,合法流量才会访问源站IP ‘1.1.1.1’ 和 ‘1.1.1.2’;②支持协议:我们配置了回源强制转 HTTPS 协议,以确保数据传输安全;③Host请求头:我们配置了HOST请求头为 cdnpro.8686c.com
。在此场景下,我们实际上也可以不配置这个HOST值,因为该值默认为空的时候,CDN Pro将直接把客户端携带的 Host
请求标头值传递给边缘WAF应用服务器;④直接连接:我们还选择了“不直连”的方式,由CDN Pro将未命中的请求直接导入WAF应用,不走父节点,减少回源链路的跳转TTL。location / { #This is the default location.
proxy_cache_valid 1440m; #200, 301, and 302 responses will be cached for 1440m
set $cache_misc $cache_misc$sorted_querystring_args; #Add sorted query string to the cache key
proxy_ignore_headers Expires Cache-Control Set-Cookie; #Ignore caching headers from the origin
origin_pass WAFEdge;
origin_set_header Cdn-Src-Ip $client_real_ip;
}
在演练环境中测试加速项目后,可以部署到生产环境。
如果您还没有边缘调度域名,您可以根据您的流量管理需求创建一个CDN Pro边缘调度域名,然后针对 cdnpro.8686c.com
添加一条CNAME 的 DNS 记录指向CDN Pro边缘调度域名。
现在,任何访问cdnpro.8686c.com
域名的请求都将被路由到 CDN Pro 平台。CDN Pro将回源流量导入指定的边缘WAF应用中,确保每个访问源站的请求都会经过WAF应用进行安全检测。这种配置方式将回源选路的逻辑放到了WAF应用上。配置方式简单,易于维护CDN Pro和WAF的配置映射关系。
假设您的业务具备如下特性:
cdnpro.8686c.com
有2个源站:Origin1-IP:1.1.1.1
和 Origin2-IP: 1.1.1.2
。Host
头中携带该域名,以访问指定的文件内容。Cdn-Src-Ip
头部传递客户端原始IP。使用 CDN Pro 集成WAF安全加速服务:
Origin1
和 Origin2
。业务流量会先经过CDN Pro进行加速,然后由CDN Pro将回源流量引入到WAF检测,确保仅有可信流量可以访问后端源站应用。以下我们将以CDN Pro+网宿WAF为您介绍配置示例。waf1-cdnpro.8686c.com
和 WAF实例2 waf2-cdnpro.8686c.com
,并配置将WAF实例的回源地址分别指向2个源站服务器 IP 地址: 1.1.1.1
和 1.1.1.2
。此时,系统生成2个实例的WAF CNAME分别为:waf1-cdnpro.8686c.com.wssec.com
和 waf2-cdnpro.8686c.com.wssec.com
。稍后我们会将经过CDN Pro的待检测流量指向这两个WAF CNAME地址。cdnpro.8686c.com
,并指定了回源的端口为443。同时,我们认为HTTP传输是不安全的,因此配置了回源请求的协议统一走HTTPS。waf1-cdnpro.8686c.com
和 waf2-cdnpro.8686c.com
的SSL证书,并进行证书关联域名操作,以开启HTTPS。若您没有证书,可通过“申请一键证书”来申请免费的DV SSL证书。cdnpro.8686c.com
创建一个加速项目。WAFOrigin1
和WAFOrigin2
,并分别将2个WAF CNAME作为回源地址,以将回源流量导入WAF实例中(以下简称WAF源)。其中:①服务器:源站服务器配置的是我们刚刚新创建的WAF CNAME waf1-cdnpro.8686c.com.wssec.com
和 waf2-cdnpro.8686c.com.wssec.com
。CDN Pro回源访问WAF CNAME,WAF检测完成后,合法流量才会访问源站IP 1.1.1.1
和 1.1.1.2
;②支持协议:我们配置了回源强制转 HTTPS 协议,以确保数据传输安全;③Host请求头:Host
标头需要设置为WAF实例检检测所需的值 waf1-cdnpro.8686c.com
和 waf2-cdnpro.8686c.com
。此处需要注意的是,我们必须配置这个HOST值,因为该值默认为空的时候,CDN Pro 将直接把客户端携带的 Host
请求标头值传递给WAF实例,WAF实例上将无法找到对应的HOST配置;④直接连接:我们还选择了“自动匹配”的方式,由CDN Pro智能选择回源路径,以此最大限度地提升缓存命中率和回源效率。
origin_pass
指令来配置CDN Pro选择WAF源 WAFOrigin1
和 WAFOrigin2
的策略。在这个配置示例中,我们定义了如果是’php|aspx|asp|jsp|do|dwr|cgi|fcgi|action|ashx|axd|json’等资源会走 WAFOrigin2
,即通过WAF实例2做检测并回到1.1.1.2这个源站;其余回源流量则默认走 WAFOrigin1
,即通过WAF实例1做检测并回到1.1.1.1这个源站。如果您想定义更灵活的选WAF源策略,您可以阅读这篇文章:用“if”来选择多个源站。②传递真实客户端IP回源:WAF安全检测需要从 Cdn-Src-Ip
头部提取用户真实客户端IP,因此,我们需要在CDN Pro上配置通过头部 Cdn-Src-Ip
传递客户端IP回WAF源。这里我们通过指令 origin_set_header
将变量 $client_real_ip
写入 Cdn-Src-Ip
头部中并携带回WAF源。location / { #This is the default location.
proxy_cache_valid 1440m; #200, 301, and 302 responses will be cached for 1440m
set $cache_misc $cache_misc$sorted_querystring_args; #Add sorted query string to the cache key
proxy_ignore_headers Expires Cache-Control Set-Cookie; #Ignore caching headers from the origin
origin_pass WAFOrigin1;
origin_set_header Cdn-Src-Ip $client_real_ip;
}
location ~* \.(php|aspx|asp|jsp|do|dwr|cgi|fcgi|action|ashx|axd|json)$ {
proxy_cache_bypass 1; #Do not cache the common dynamic objects mentioned above
proxy_no_cache 1;
origin_pass WAFOrigin2;
origin_set_header Cdn-Src-Ip $client_real_ip;
}
在演练环境中测试加速项目后,可以部署到生产环境。
如果您还没有边缘调度域名,您可以根据您的流量管理需求创建一个CDN Pro边缘调度域名,然后针对 cdnpro.8686c.com
添加一条CNAME 的 DNS 记录指向CDN Pro边缘调度域名。
现在,任何访问cdnpro.8686c.com
域名的请求都将被路由到 CDN Pro 平台。CDN Pro会对每个用户请求进行分发加速,并根据不同的业务请求特征,走最优的链路将回源流量导入指定的WAF实例中,确保每个访问源站的请求都会经过WAF应用进行安全检测。这种配置方式具备最佳的回源选路灵活性,在提升请求性能的同时保障回源流量合法。
除了在CDN Pro上集成网宿WAF之外,您也可以采用同样的方式集成第三方WAF应用。例如: