文档中心 CDN Pro 集成Web应用防火墙(WAF)

集成Web应用防火墙(WAF)

更新时间:2022-06-27 20:06:20

集成Web应用防火墙 WAF

在CDN Pro上集成WAF应用

CDN Pro上可以集成Web应用防火墙(WAF),以保护您的源站服务器免受恶意请求攻击。无论您的WEB应用程序及第三方WAF应用是部署在云上(Cloud Native)、数据中心(Data Center & Legacy Apps)、容器或者是采用无服务器部署(Any Application+Serverless),均可以与CDN Pro无缝协作实现安全加速分发。本文将为您介绍如何在CDN Pro边缘上集成WAF应用。

集成示例1:边缘WAF

假设您的业务具备如下特性:

  • WAF应用部署在/靠近网络边缘(IDC/托管机房等)。
  • 域名 cdnpro.8686c.com 有2个源站:Origin1-IP:1.1.1.1 和 Origin2-IP: 1.1.1.2
  • 从源站应用服务器获取资源,需要在请求 Host头中携带该域名,以访问指定的文件内容。
  • WAF检测需要CDN Pro通过 Cdn-Src-Ip 头部传递客户端原始IP。

使用 CDN Pro 集成WAF安全加速服务:

  • 我们创建了1个WAF实例,在WEB应用程序之前开启WAF安全防护,以保护WEB应用程序源站 Origin1Origin2 。业务流量在经过CDN Pro进行加速的时候,会将流量引入到WAF应用进行检测,确保仅有可信流量可以访问后端源站应用。以下我们将以CDN Pro+网宿WAF为您介绍配置示例。

从“有边界”到“无边界”,企业该如何重构安全边界?

步骤1:创建WAF实例并为其配置回源策略

  • 进入WAF控制台。在CDN Pro控制台上点击左侧菜单【Web应用防火墙】,进入网宿WAF控制台。

从“有边界”到“无边界”,企业该如何重构安全边界?

  • 创建WAF实例。进入WAF控制台【域名管理】菜单页,点击“新增域名”按钮,为需要进行安全加速的域名WAF实例。这里我们创建了WAF实例 cdnpro.8686c.com ,并配置其回源地址指向2个源站服务器 IP 地址: 1.1.1.11.1.1.2,此时,系统生成这个实例的WAF CNAME:cdnpro.8686c.com.wssec.com 。稍后我们会将经过CDN Pro的流量指向这个WAF CNAME地址,同时我们会调整WAF回源站的选源策略。

从“有边界”到“无边界”,企业该如何重构安全边界?

  • 进入回源配置页。当流量经过WAF检测后需要回源站获取数据,对于多个源IP的场景,需要在WAF上设置策略。在域名管理页面下,勾选刚刚创建的WAF实例,点击“批量换源”,开始进行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.11.1.1.2 这两个源IP中随机轮询回源。

  • 同时,我们还配置了回源请求HOST为 cdnpro.8686c.com,并指定了回源的端口为443。在此场景下,我们实际上也可以不配置这个HOST值,因为该值默认为空的时候,WAF将直接把客户端携带的 Host请求标头值传递给源站服务器。

从“有边界”到“无边界”,企业该如何重构安全边界?

步骤2:为WAF实例配置证书

  • 为WAF配置证书。进入【证书管理】控制台,分别上传授权域名包含 cdnpro.8686c.com 的SSL证书,并进行证书关联域名操作,以开启HTTPS。若您没有证书,可通过“申请一键证书”来申请免费的DV SSL证书。

从“有边界”到“无边界”,企业该如何重构安全边界?

步骤3:创建加速项目并为其开启WAF

  • 为域名创建加速项目。在CDN Pro控制台【边缘配置】【加速项目】页面下,点击“新建加速项目”,为域名 cdnpro.8686c.com 创建一个加速项目。

从“有边界”到“无边界”,企业该如何重构安全边界?

  • 配置WAF应用信息。此处我们将边缘WAF实例作为CDN Pro的源站应用,并将WAF CNAME作为回源地址,以确保在流量发到源站之前会经过WAF实例做检测中(以下简称边缘WAF应用)。其中:①服务器:源站服务器配置的是我们刚刚新创建的WAF CNAME 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。

从“有边界”到“无边界”,企业该如何重构安全边界?

  • 在边缘逻辑中配置引入WAF应用。①选WAF源策略:我们通过 ‘origin_pass’ 指令来配置CDN Pro在回源阶段引入WAF应用 ‘WAFEdge’ 。在这个配置示例中,我们定义CDN Pro默认把源站设置为我们创建的WAF应用。②传递真实客户端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 WAFEdge;
origin_set_header Cdn-Src-Ip $client_real_ip;
}

从“有边界”到“无边界”,企业该如何重构安全边界?

步骤4:为加速项目配置证书

  • 为加速项目配置TLS证书。您可以根据您的安全要求配置 TLS 最低协议版本、TLS 最高协议版本以及TLS加密套件:

从“有边界”到“无边界”,企业该如何重构安全边界?

步骤5:测试部署并引流生效

现在,任何访问cdnpro.8686c.com域名的请求都将被路由到 CDN Pro 平台。CDN Pro将回源流量导入指定的边缘WAF应用中,确保每个访问源站的请求都会经过WAF应用进行安全检测。这种配置方式将回源选路的逻辑放到了WAF应用上。配置方式简单,易于维护CDN Pro和WAF的配置映射关系。

集成示例2:云上WAF

假设您的业务具备如下特性:

  • WEB应用及WAF应用部署在/靠近云上或者数据中心。
  • 域名 cdnpro.8686c.com 有2个源站:Origin1-IP:1.1.1.1 和 Origin2-IP: 1.1.1.2
  • 从源站应用服务器获取资源,需要在请求 Host头中携带该域名,以访问指定的文件内容。
  • WAF检测需要CDN Pro通过 Cdn-Src-Ip 头部传递客户端原始IP。

使用 CDN Pro 集成WAF安全加速服务

  • 我们创建了2个WAF实例,在WEB应用服务器之前开启WAF安全防护,以保护WEB应用程序源站 Origin1Origin2 。业务流量会先经过CDN Pro进行加速,然后由CDN Pro将回源流量引入到WAF检测,确保仅有可信流量可以访问后端源站应用。以下我们将以CDN Pro+网宿WAF为您介绍配置示例。

从“有边界”到“无边界”,企业该如何重构安全边界?

步骤1:创建WAF实例并为其配置回源HOST

  • 进入WAF控制台。在CDN Pro控制台上点击左侧菜单【Web应用防火墙】,进入网宿WAF控制台。

从“有边界”到“无边界”,企业该如何重构安全边界?

  • 创建WAF实例。进入WAF控制台【域名管理】菜单页,点击“新增域名”按钮,创建2个WAF实例。这里我们创建了WAF实例1 waf1-cdnpro.8686c.com 和 WAF实例2 waf2-cdnpro.8686c.com ,并配置将WAF实例的回源地址分别指向2个源站服务器 IP 地址: 1.1.1.11.1.1.2。此时,系统生成2个实例的WAF CNAME分别为:waf1-cdnpro.8686c.com.wssec.comwaf2-cdnpro.8686c.com.wssec.com稍后我们会将经过CDN Pro的待检测流量指向这两个WAF CNAME地址。

从“有边界”到“无边界”,企业该如何重构安全边界?

  • 进入配置页。当合法流量经过WAF后,需要配置回源HOST来区分从源站获取的内容。在域名管理页面下,勾选刚刚创建的WAF实例,点击“配置修改”,开始进行WAF配置。

从“有边界”到“无边界”,企业该如何重构安全边界?

  • 配置回源HOST。在配置修改页面下,我们在【回源配置】页签下进行【回源协议改写】和【回源替换】配置。此处,我们配置了WAF回源HOST为 cdnpro.8686c.com,并指定了回源的端口为443。同时,我们认为HTTP传输是不安全的,因此配置了回源请求的协议统一走HTTPS。

从“有边界”到“无边界”,企业该如何重构安全边界?

步骤2:为WAF实例配置证书

  • 为WAF配置证书。进入【证书管理】控制台,分别上传授权域名包含 waf1-cdnpro.8686c.comwaf2-cdnpro.8686c.com 的SSL证书,并进行证书关联域名操作,以开启HTTPS。若您没有证书,可通过“申请一键证书”来申请免费的DV SSL证书。

从“有边界”到“无边界”,企业该如何重构安全边界?

步骤3:创建加速项目并为其配置选WAF策略

  • 为域名创建加速项目。在CDN Pro控制台【边缘配置】【加速项目】页面下,点击“新建加速项目”,为域名 cdnpro.8686c.com 创建一个加速项目。

从“有边界”到“无边界”,企业该如何重构安全边界?

  • 配置WAF源信息。此处我们创建2个CDN Pro的源站WAFOrigin1WAFOrigin2,并分别将2个WAF CNAME作为回源地址,以将回源流量导入WAF实例中(以下简称WAF源)。其中:①服务器:源站服务器配置的是我们刚刚新创建的WAF CNAME waf1-cdnpro.8686c.com.wssec.comwaf2-cdnpro.8686c.com.wssec.com 。CDN Pro回源访问WAF CNAME,WAF检测完成后,合法流量才会访问源站IP 1.1.1.11.1.1.2;②支持协议:我们配置了回源强制转 HTTPS 协议,以确保数据传输安全;③Host请求头Host标头需要设置为WAF实例检检测所需的值 waf1-cdnpro.8686c.comwaf2-cdnpro.8686c.com 。此处需要注意的是,我们必须配置这个HOST值,因为该值默认为空的时候,CDN Pro 将直接把客户端携带的 Host请求标头值传递给WAF实例,WAF实例上将无法找到对应的HOST配置;④直接连接:我们还选择了“自动匹配”的方式,由CDN Pro智能选择回源路径,以此最大限度地提升缓存命中率和回源效率。

从“有边界”到“无边界”,企业该如何重构安全边界?
从“有边界”到“无边界”,企业该如何重构安全边界?

  • 在边缘逻辑中配置选WAF源策略。①选源策略:我们通过 origin_pass 指令来配置CDN Pro选择WAF源 WAFOrigin1WAFOrigin2 的策略。在这个配置示例中,我们定义了如果是’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;
}

从“有边界”到“无边界”,企业该如何重构安全边界?

步骤4:为加速项目配置证书

  • 为加速项目配置TLS证书。您可以根据您的安全要求配置 TLS 最低协议版本、TLS 最高协议版本以及TLS加密套件:

从“有边界”到“无边界”,企业该如何重构安全边界?

步骤5:测试部署并引流生效

现在,任何访问cdnpro.8686c.com域名的请求都将被路由到 CDN Pro 平台。CDN Pro会对每个用户请求进行分发加速,并根据不同的业务请求特征,走最优的链路将回源流量导入指定的WAF实例中,确保每个访问源站的请求都会经过WAF应用进行安全检测。这种配置方式具备最佳的回源选路灵活性,在提升请求性能的同时保障回源流量合法。

集成其他第三方WAF

除了在CDN Pro上集成网宿WAF之外,您也可以采用同样的方式集成第三方WAF应用。例如:

本篇文档内容对您是否有帮助?
有帮助
我要反馈
提交成功!非常感谢您的反馈,我们会继续努力做到更好!