如何利用Cloudflare WAF提高网站安全性

图片[1] - 如何利用Cloudflare WAF提高网站安全性 - 聚问天空网

CloudFlare是全球著名的CDN服务商,可惜在中国境内速度稍有些缓慢,不如本土CDN速度快。本文主要是介绍如何利用免费的Cloudflare WAF防火墙提高网站安全性。

什么是Cloudflare WAF?

WAF也称为“Web应用防护系统”,英文:Web Application Firewall,简称: WAF。它会对HTTP的请求进行异常检测,根据特定规则拒绝不安全的请求。

Cloudflare WAF 可以针对漏洞提供自动保护,还能让用户灵活地创建自定义规则。

为什么要使用Cloudflare WAF?

国内云服务提供商的WAF安全服务均收费较高,几乎没有免费的。各CDN的安全防护功能也都开始额外收费,包括阿里云、腾讯云、百度云等。

Cloudflare免费版用户可以自定义5条WAF安全规则,这对于一般网站来说足够使用了。

本教程使用的方法是境内访问依然回源站或使用境内的CDN服务,仅将境外的访问接入Cloudflare。这样不影响境内访问速度。

经过研究发现,大部分的网络攻击或恶意扫描来自境外,所以可以通过域名智能解析将境外所有的访问解析至Cloudflare,通过Cloudflare WAF防火墙来保障网站安全。

如何使用Cloudflare WAF?

准备工作

  1. 注册Cloudflare账户
  2. 因为Cloudflare官方不再接受CNAME方式接入CDN,所以需要借助Cloudflare for SaaS服务实现CNAME方式接入。Cloudflare for SaaS可免费使用100个域名。
  3. 使用可以区分境内或境外线路的DNS解析服务。例如阿里云DNS、DNSPod等

通过CNAME方式接入Cloudflare

如果是以前的Cloudflare老用户,是可以通过CNAME方式接入CDN的,那么可以直接跳过本步骤,直接进入下一步。

如果是新用户,在注册完账户后,使用一个闲置的域名(或注册一个最便宜的任意后缀域名)先通过NS方式接入Cloudflare,然后开通Cloudflare for SaaS服务(只要不超过100个域名是免费的)。

图片[2] - 如何利用Cloudflare WAF提高网站安全性 - 聚问天空网
通过Cloudflare for SaaS服务使用CNAME方式接入CDN

如果不清楚如何设置,可以参考教程:https://luotianyi.vc/6185.html

提示:开通Cloudflare for SaaS服务需要绑定信用卡,未达到100个域名不会扣费。

添加境外线路的域名解析记录

原来的默认解析记录不变,添加一条境外线路解析,填入Cloudflare的CNAME记录值或通过Cloudflare for SaaS设置的自定义主机名。

这里以DNSPod为例:

图片[3] - 如何利用Cloudflare WAF提高网站安全性 - 聚问天空网
DNSPod增加境外线路解析

解析生效后,所有境外访问的请求均会接入到Cloudflare。

配置Cloudflare WAF规则

图片[4] - 如何利用Cloudflare WAF提高网站安全性 - 聚问天空网
创建Cloudflare WAF防火墙规则

第一条规则,对搜索引擎机器人(蜘蛛)放行:

图片[5] - 如何利用Cloudflare WAF提高网站安全性 - 聚问天空网
Cloudflare WAF对搜索引擎机器人(蜘蛛)放行

如上图,匹配字段选择:“合法机器人爬虫”,选择操作:“允许”,权重填入:“1”。权重越小,优先级越高。

第二条规则:禁止扫描网站所有的压缩包

图片[6] - 如何利用Cloudflare WAF提高网站安全性 - 聚问天空网
Cloudflare WAF阻止对压缩包扫描请求

字段选择:“URL路径”,选算符:“包含”,值分别填入:.rar、.zip、.gz、.tar、.7z,每条规则之间选择“Or”运算符。也就是当“URL路径”中“包含”“.rar”或“.zip”或“.gz”或“.tar”或“.7z”的均阻止。

图片[7] - 如何利用Cloudflare WAF提高网站安全性 - 聚问天空网
Cloudflare WAF对压缩包扫描请求的操作

优先级填入“2”。

为什么要阻止压缩包扫描?请参阅:《站长容易中招的攻击:网站备份压缩包被窃取》。

第三条规则:禁止访问PHP、ASP或ASP.net等程序文件

填写这条规则时,要注意排除网站使用的程序需要正常执行的程序文件,例如WordPress至少需要排除:/index.php、/wp-comments-post.php、/wp-admin/admin-ajax.php这三个文件。如果有开放用户登录等功能的,还需排除相应的登录程序文件。

请看以下示例规则:

图片[8] - 如何利用Cloudflare WAF提高网站安全性 - 聚问天空网

需要排除阻止的文件请选择:“URL路径字段”且运算符选择:“不包含”。

具体表达式为:

(http.request.uri.path contains ".php" and not http.request.uri.path contains "/wp-admin/admin-ajax.php" and not http.request.uri.path contains "/wp-comments-post.php" and not http.request.uri.path contains "/index.php") or (http.request.uri.path contains ".asp") or (http.request.uri.path contains ".aspx") or (http.request.uri.path contains ".jsp")

注意:按照以上规则设置后,Cloudflare WAF会阻止WordPress后台登录及后台所有功能访问。如需使用后台,请勿通过境外线路,或者更改本机DNS解析,或者在以上规则中排除/wp-admin路径(不建议)。

将这条规则优先级填入“3”:

图片[9] - 如何利用Cloudflare WAF提高网站安全性 - 聚问天空网
Cloudflare WAF防火墙禁止访问PHP、ASP或ASP.net等程序文件

还剩余两条Cloudflare WAF防火墙规则,可以自由发挥!例如可以阻止一些垃圾爬虫、或一些可疑IP等。

需要注意的是,根据本教程的方法,Cloudflare WAF防火墙仅对境外有效,境内请求不会触发防火墙规则。可在服务器端另行配置安全规则。

检查Cloudflare WAF效果

图片[10] - 如何利用Cloudflare WAF提高网站安全性 - 聚问天空网
查看Cloudflare WAF防火墙事件
图片[11] - 如何利用Cloudflare WAF提高网站安全性 - 聚问天空网
查看Cloudflare WAF防火墙事件详情

总结

网络攻击无处不在,随着网站流量不断增长,知名度越高的网站越要注意安全防护,千万不要等到出了问题后再考虑安全问题。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论