使用CDN和WAF提升网站防护能力和访问速度
应用场景
随着数字化应用的逐步深入,很多企业业务都通过Web应用来承载,如企业官网网站、网上商城、远程办公系统等,一般都直接暴露在互联网上,极易成为黑客攻击的目标,根据历史数据分析,约75%的信息安全攻击都是针对Web应用的,同时Web应用及组件的漏洞也较多,历史上就爆发过著名的Log4J漏洞,对大部分Web应用都产生了深远的影响。
本实践建立在网站已接入了CDN,如何使网站流量同时经过CDN和WAF进行防护,提升网站全面防护能力。
网站接入CDN的操作,请参见开通CDN服务。
方案架构
- 当用户访问使用CDN服务的网站时,本地DNS服务器通过CNAME方式将最终域名请求重定向到CDN服务。CDN通过一组预先定义好的策略(如内容类型、地理区域、网络负载状况等),将当时能够最快响应用户的CDN节点IP地址提供给用户,使用户可以以最快的速度获得网站内容。
CDN支持的对象:域名,华为云、非华为云或云下的Web业务
- Web应用防火墙通过对HTTP(S)请求进行检测,识别并阻断SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第三方应用漏洞攻击、CC攻击、恶意爬虫扫描、跨站请求伪造等攻击,保护Web服务安全稳定。
CDN+WAF可以对华为云、非华为云或云下的域名进行联动防护,同时提升网站的响应速度和网站防护能力,配置原理图如图1所示。
CDN+WAF配置后,流量被CDN加速后转发到WAF,WAF再将流量转到源站,在提升用户访问网站的响应速度与网站的可用性的同时,实现网站流量检测和攻击拦截。
相关配置说明如下:
方案优势
CDN和WAF同时部署,缩短用户查看内容的访问延迟,提高了用户访问网站的响应速度与网站的可用性,解决了网络带宽小、用户访问量大、网点分布不均等问题,同时可以防御Web应用攻击(SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第三方应用漏洞攻击、CC攻击、恶意爬虫扫描、跨站请求伪造等),确保业务持续可靠运行。
资源与成本规划
约束条件
如果您选择的是云模式-CNAME接入方式,且WAF前使用了高防、CDN(Content Delivery Network,内容分发网络)、云加速等代理,配置CC防护规则时,建议“限速模式”选择“用户限速”,并勾选“全局计数”。
步骤一:购买云模式标准版
以购买WAF云模式标准版为例进行介绍。
- 登录华为云管理控制台。
- 在控制台页面中选择 ,进入Web应用防火墙控制台。
- 在页面右上角,单击“购买WAF实例”,进入购买页面,“WAF模式”选择“云模式”。
- “区域”:根据防护业务的所在区域就近选择购买的WAF区域。
- “版本规格”:选择“标准版”。
- “扩展包”及“购买时长”:根据具体情况进行选择。
- 确认参数配置无误后,在页面右下角单击“立即购买”。
- 确认订单详情无误后,阅读并勾选《Web应用防火墙免责声明》,单击“去支付”,完成购买操作。
- 进入“付款”页面,选择付款方式进行付款。
步骤二:将网站信息添加到WAF
此处以云模式-CNAME接入为例进行介绍。
- 云模式-ELB接入方式请参见将网站接入WAF防护(云模式-ELB接入)。
- 独享模式接入方式请参见将网站接入WAF防护(独享模式)。
- 在左侧导航树中,选择“网站设置”,进入网站设置列表。
- 在网站列表的左上角,单击“添加防护网站”。
- 选择“云模式-CNAME接入”并单击“开始配置”。
- 根据界面提示,配置网站信息,如表2所示。
图2 基础信息配置
表2 重点参数说明 参数
参数说明
取值样例
防护域名
需要添加到WAF中防护的域名。
- 域名已完成备案
- 支持单域名(例如,一级域名example.com,二级域名www.example.com等)和泛域名(例如,*.example.com)。
www.example.com
防护端口
需要防护的域名对应的业务端口。
标准端口
服务器配置
网站服务器地址的配置。包括对外协议、源站协议、源站地址、源站端口和权重。
- 对外协议:客户端请求访问服务器的协议类型。包括“HTTP”、“HTTPS”两种协议类型。
- 源站协议:Web应用防火墙转发客户端请求的协议类型。包括“HTTP”、“HTTPS”两种协议类型。
- 源站地址:客户端访问的网站服务器的公网IP地址(一般对应该域名在DNS服务商处配置的A记录)或者域名(一般对应该域名在DNS服务商处配置的CNAME)。
- 源站端口:WAF转发客户端请求到服务器的业务端口。
- 权重:负载均衡算法将按权重将请求分配给源站。
对外协议:HTTP
源站协议:HTTP
源站地址:IPv4 XXX .XXX.1.1
源站端口:80
是否使用七层代理
在WAF前是否使用其他七层代理产品。此处选择“是”。
说明:如果WAF前使用的是华为云DDoS高防,要获取客户端真实IP,需要在域名基本信息页面的“流量标识”栏,将“IP标记”配置为“$remote_addr详细操作请参见”配置攻击惩罚的流量标识。
是
- 单击“下一步”,根据界面提示,完成WAF回源IP加白、本地验证的操作。
图3 添加域名完成
步骤三:域名解析
在CDN界面,添加WAF的CNAME地址,使流量经过WAF。
以下操作以华为云CDN为例介绍配置域名解析的方法。如果您使用的是华为云CDN,您可以直接参照以下步骤进行操作;若您使用华为云以外的CDN,请参考以下步骤在其他CDN上进行类似配置。
- 获取“CNAME”、“子域名”和“TXT记录”值。
- 将CDN的主源站的源站域名修改为WAF的CNAME。
- (可选)在DNS服务商添加一条WAF的子域名和TXT记录。
为了防止其他用户提前将您的域名配置到Web应用防火墙上,从而对您的域名防护造成干扰,建议您完成此操作。
- (可选)验证DNS配置。您可以Ping网站域名验证DNS解析是否生效。
由于DNS解析记录生效需要一定时间,如果验证失败,您可以等待5分钟后重新检查。
请参考以下步骤在华为云CDN上进行配置操作。
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域或项目。
- 单击页面左上方的,选择 ,进入CDN页面。
- 在左侧导航树中,选择 。
- 在域名列表中,单击需要修改的域名或域名所在行的“设置”,进入域名配置页面。
- 选择“基本配置”页签,在源站配置模块,单击“编辑”。
- 如果您的业务使用了WAF独享模式,“源站地址”文本框中输入为弹性负载均衡绑定弹性公网IP。
- 如果您的业务使用了WAF云模式-ELB接入,“源站地址”文本框中输入添加到ELB模式中选择的弹性负载均衡对应的弹性公网IP。
- 单击“保存”,完成源站配置。
生效条件
当“接入状态”为“已接入”,表示域名/IP接入成功。
- WAF每隔一小时就会自动检测防护网站的 接入状态,当WAF统计防护网站在5分钟内达到20次访问请求时,将认定该防护网站已成功接入WAF。
- WAF默认只检测两周内新增或更新的域名的接入状态,如果域名创建时间在两周前,且最近两周内没有任何修改,您可以在“接入状态”栏,单击,手动刷新接入状态。
如果域名接入失败,即域名接入状态为“未接入”,请参考域名/IP接入状态显示“未接入”,如何处理?排查处理。