CDN回源OSS私有Bucket场景下串接WAF最佳实践

当您的网站域名开启了阿里云CDN加速,且回源到阿里云对象存储 OSS(Object Storage Service)私有Bucket时,如果该网站存在一定的Web攻击风险,我们推荐您组合使用CDN、OSSWeb 应用防火墙 WAF(Web Application Firewall),将开启CDN加速的域名接入WAF,实现OSS私有Bucket的安全防护。本文介绍如何为业务同时部署CDN、OSS私有Bucket、WAF。

前提条件

网络架构

image

步骤一:在OSS Bucket中绑定CDN加速域名

  1. 登录OSS管理控制台

  2. 单击Bucket 列表,然后单击目标Bucket名称。

  3. 在左侧导航栏,选择Bucket 配置>域名管理

  4. 域名管理页面,单击绑定域名

  5. 绑定域名面板,输入CDN加速域名,单击提交

    说明
    • 绑定的域名不支持泛域名,例如*.example.com

    • 如果提示域名冲突,表示该域名已绑定至其他Bucket。此时,您可以更换域名或通过验证域名所有权强制绑定域名。验证域名所有权会解除域名与其他Bucket的绑定关系。

完成域名绑定后,您可以在浏览器输入域名和Bucket中任意文件名称(例如<被防护域名>/test.pngtest.png为上传到Bucket中的图片名称),如果网站能正常访问,表示域名添加成功。

单击目标域名操作列的域名绑定配置,可以获取OSS域名。image.png

步骤二:将域名接入WAF,并修改源站为OSS域名

为了实现WAFOSS私有Bucket的防护,您需要将开启CDN加速且绑定OSS私有Bucket的域名接入WAF,并将源站修改为OSS域名。

  1. 登录Web应用防火墙3.0控制台。在顶部菜单栏,选择WAF实例的资源组和地域(中国内地非中国内地)。

  2. 在左侧导航栏,单击接入管理

  3. CNAME接入页签,单击接入

  4. 配置监听向导页,完成如下配置后,单击下一步

    配置项

    配置说明

    域名

    填写步骤一中,绑定到OSS Bucket中的域名。

    协议类型

    选择网站使用的协议类型并填写对应端口,支持HTTPHTTPS。更多信息请参见协议类型

    WAF前是否有七层代理(高防/CDN等)

    选择

    更多配置

    • 开启IPv6:按实际情况选择要使用的防护资源类型。

    • 开启独享IP:保持默认配置即可。

    • 防护资源:按实际情况选择要使用的防护资源类型。

    资源组

    如果需要根据业务部门、项目等维度对云资源进行分组管理时,从资源组列表中选择该域名所属资源组。

  5. 配置转发向导页,完成如下配置后,单击提交

    配置项

    说明

    负载均衡算法

    如果源站有多个服务器地址,您可以根据业务需要,选择不同的负载均衡算法,使WAF将回源请求转发到对应的服务器,实现负载均衡。支持IP hash轮询Least time

    服务器地址

    填写网站对应的源站服务器的公网IP地址或源站域名,用于接收WAF转发回源的正常业务请求(回源请求),此处填写OSS域名。关于OSS域名的获取方式,请参见获取OSS域名

    HTTPS高级设置

    • 开启HTTP回源:如果您希望WAF转发的请求(无论来自80443端口)都通过80端口访问源站,可启用该功能。

    • 启用回源SNI:如果您的源站绑定了多个域名,且WAF回源协议类型为HTTPS时,可配置回源SNI,并在回源SNI内指明所请求的具体域名,使源站服务器根据该域名正确地返回对应的SSL证书。

    其它高级设置

    • 启用流量标记:如果你需要将WAF识别到的客户端IP、客户端端口等信息通过指定Header字段透传到源站,来判断请求是否经过WAF,可启用该功能。

    • 按实际情况设置WAF回源到源站的超时时间,包括 设置新建连接超时时间设置读连接超时时间设置写连接超时时间

    • 回源重试:按需开启。

    • 回源长连接:按需开启。

  6. 接入完成向导页,获取WAF提供的CNAME地址。

    复制CNAME

步骤三:开启CDN回源配置,修改源站为WAF提供的CNAME地址

  1. 登录CDN控制台

  2. 在左侧导航栏,单击域名管理

  3. 定位到目标域名,单击域名或操作列的管理

  4. 回源配置分页,开启阿里云OSS私有Bucket回源image.png

  5. 基本配置分页,定位目标源站,单击操作列的编辑,选择源站信息源站域名后,填写步骤6获取的WAF CNAME地址。

完成配置后,您可以再次在浏览器输入已添加的域名和Bucket中任意文件名称(例如<被防护域名>/test.pngtest.png为上传到Bucket中的图片名称),如果网站能正常访问,表示域名添加成功。

您也可以在浏览器输入已添加的域名和Web攻击代码(例如<被防护域名>/alert(xss)alert(xss)为用作测试的跨站脚本攻击代码),如果返回405拦截提示页面,表示攻击被拦截,WAF防护成功。

后续操作

完成上述配置后,WAF会自动将加速域名添加为防护对象,并默认为其开启基础防护规则,通过对访问域名的请求特征进行识别和检测,将正常的访问请求转发给OSS私有Bucket,实现安全防护。

您也可以根据实际业务情况,登录Web应用防火墙3.0控制台,在防护配置 > 防护对象页面,为添加的域名配置更有针对性的防护规则。更多信息,请参见防护配置概述

相关文档