目前国际有不少网站都挂了Cloudflare服务,Cloudflare主要提供的安全服务是帮助网站阻止来自网络的黑客攻击、垃圾邮件等,并提升网页的浏览速度等。笔者近日在Cloudflare为自己的网站部署好了防火墙(WAF)、抗DDoS等防护,颇有成效,因此给大家介绍一下,帮助大家更轻松地部署Cloudflare防火墙,保护自己的网站不受来自于恶意爬虫、恶意流量、DDoS攻击CC攻击的威胁
我本人的服务器是一台位于新加坡的阿里云服务器,目前服务器内已经配置好了Nginx + MySQL + PHP + WordPress + phpMyAdmin + Pure-Ftpd等应用和开发环境,已运行一个博客网站,目前网站正常运行,能够有效拦截恶意爬虫和恶意流量
阅前提醒:由于国内某大型网络设施对Cloudflare的反制,目前Cloudflare的部分节点在中国大陆地区均无法正常访问。一个多月前vscode官网被封、mc不能连上官方服务器都是因为这个原因。如果你的服务器在国内,且你的网站的访客主要来自于中国大陆,那么尽量不要部署Cloudflare,特此声明
登录Cloudflare中国官网,进入之后点击右上角的注册,就进入了上面这个画面
Email输入你的邮箱,Password输入密码,密码要大小写英文+数字+字符
下面那个勾勾是是否允许Cloudflare推送产品服务广告到你的邮箱的,你也不想让邮箱被广告轰炸吧?不要勾选
点击Sign Up,即可注册
Cloudflare会为你的网站域名分配一个DNS服务器,稍等一下
Cloudflare会给你分配两个DNS服务器,现在回到你的域名提供商(买域名的网站),去修改DNS。因为我的域名是在阿里云买的,所以在阿里云改
进入阿里云控制台,点击左上角的橙色框框,点击"域名",进入域名控制台
左侧列表选择“域名列表”,就能看到你买的域名了
左侧列表选择“DNS管理”-“DNS修改”,点击“修改DNS服务器”,把Cloudflare给你分配的两个DNS服务器地址填进去
修改DNS后需要一段时间同步到全球的DNS服务器,这段时间你可能不能正常访问网站,这是正常的
完成之后,我们回到Cloudflare官网继续操作。
接下来会让你填类似这样的东西,IPv4地址填服务器IP地址,至于代理状态……
简单来说,就是你的连接走了Cloudflare的代理,别人访问你的网站或者ping你的网站是不能直接看到你的服务器源IP地址的,如果想隐藏自己服务器IP地址的可以开一下,但代价就是连接速度会比较慢,这个在后面我们会有补救措施,尽量不要让它那么慢
要填写两次,一次名称是www,一次名称是你的网站域名,如果你的网站更加庞大更加复杂……那不在本文讨论范围之内,我也解决不了
在绑定完IP之后,应该会提示选择付费计划,选择最下面的Free(免费)即可,免费的功能已经足够强大,够我们用了
这样我们就基本完成了Cloudflare的注册,和DNS修改
这一步是重中之重,也是本文的核心内容
本文不介绍SSL证书如何配置,仅介绍Cloudflare防火墙配置方法,请自行搜索“Cloudflare SSL证书 服务器部署”以获得你需要的信息
你现在应该在Cloudflare控制台主页了,点进你的域名(就是我上面这张图最底下码住的地方),进入域名控制台
左侧栏点击“安全”————“设置“
按照上面图片来配置,安全级别设为高,质询通过期不建议超过1小时(就是你有时候用魔法登录谷歌一类网站,会提示are you bot,那个就是质询,因为我们是拦住爬虫和恶意流量恶意访问的,建议时间短一点,也不要太短了,否则影响正常浏览),浏览器完整性检查勾上(爬虫一般都是自动程序,一般不具备浏览器的完整性,开了可以挡掉一部分爬虫,当然也有部分爬虫带了Selenium的,这在后面会继续介绍如何防它)
左侧栏点击“安全”——“DDoS“
直接开,不用解释了,你也不想哪天起床发现流量爆了欠了几千几万流量钱吧?()
左侧栏点击“安全”——“自动程序“
就是防爬虫的,直接开,理由同上
左侧栏点击“安全”——“WAF”,点击自定义规则
这个要多说一点,因为爬虫、恶意流量、恶意访问它们的行为是不同的,对策也应该不同
先简单介绍一下我的方案
你会发现优先度都有区别,阻止在最上面,JS质询托管质询应该在下
路径保护,就是防止一些恶意程序非法流量去爬一些服务器里面文件目录啥的,这种直接杀,直接阻止即可
可以直接抄我的,不过最好根据你网站的实际情况来,因为每个人的网站目录安排都不一样
IP封禁,字面意思,不用解释了吧,把要封禁的IP直接填进去就行。这里要提一嘴,如果你发现封了IP没啥用,可以封ASN。ASN通俗理解就是一个网络服务商提供的ip地址集合。由于是地址集合,所以里面必然有正常流量有非法流量,所以这么操作必然误伤了。简单介绍怎么操作
上面这个德国哥们有点烦人啊,如果但看用户代理我们会发现是正常的,但是访问的路径明显有问题,可以认定为非法流量,所以我们要封它,有时候发现封IP没啥用,比如上面这个,怎么办呢?就封ASN。上面这张图,ASN后面有个AS20473,那么它的ASN码就是20473,直接回到规则里面填进去阻止访问就行了
封IP这个操作建议谨慎执行,因为可能会误伤其他正常流量
地区防火墙,不用解释了。这个根据自己实际情况来就行。一般是填IP来源地区不包含xxx国家/地区就JS质询托管质询,假如网站主要访客都来自于中国,而且你自己不会用魔法登录你的网站,那直接填中国大陆港澳台就行,如果有用魔法的话,就根据实际情况来填。因为DDoS攻击和CC攻击多来自于海外,所以如果你没有特殊需求或没有访客来自于海外,那就把中国大陆港澳台之外的其他地方全ban了
防恶意爬虫,也是字面意思,这个可以直接给大家抄了
用户代理这里提一嘴,很多爬虫都会伪装,不一定带了Mozilla的就不是爬虫,反之不带的一定不是
自定义规则就配完了,下面是速率限制,直接抄就行
最后一个,左侧栏“网络”,洋葱路由直接关,能用洋葱路由访问你网站的,什么成分不言自明
这样基本就配置完防火墙了,一句话总结:防火墙该开的要开而且要尽可能调高,尽量做到不干扰正常流量的同时可以阻挡非法流量,平时多去控制台看看,根据实际情况调整防火墙
这部分不属于防火墙内容,但我要提一嘴,当你部署完Cloudflare的代理之后,你会发现访问网站的速度明显变慢了(主要体现在中国大陆,原因懂得都懂),如果我们不想让我们的网站速度太慢,就可以尽量利用Cloudflare的CDN缓存,给我们的网站加速
左侧栏“规则”——“页面规则”
看上面这张图应该能大概明白什么意思了吧,不明白我可以简单解释一下
假如你有一个网站叫做www.abc.def,同时一般还会有abc.def这个域名,第一条就是向abc.def的请求直接转发到www.abc.def,减轻服务器的压力(和C++重载相等运算符和不等运算符,只需要写一个,另一个直接调用写好的那一个道理是一样的)
第二条是绕过,假如www.abc.def下面有一个页面叫做admin,admin的页面经常变动,那么我们就不能缓存它,而应该是选择直接绕过去,这个根据你的网站实际情况来
第三条就是缓存了,也是让我们的网站变得更快的最重要的一个方法,假设我们缓存了abc.def/*这个域名,那么我们第一次会向CDN服务器发起请求,CDN服务器内部没有类似的内容,就会向我们源服务器请求这个数据,同时CDN会把这些数据缓存下来,以后我们再访问这个页面,CDN就能直接把数据从CDN本身返回给我们了,因为Cloudflare本身不是靠流量计费,所以缓存可以随便设,非常良心
经过我本人实测,PC设备使用接入中国教育网,使用Edge浏览器访问网站的情况下,使用CDN缓存策略前单次访问需要4-6s,部署CDN缓存后访问只需1-2s,速度提升非常明显
以上就是Cloudflare防火墙部署指南的全部内容了,按照上面的内容做完,相信你的网站一定可以拦下不少恶意流量恶意爬虫()至少我本人是这样的,前面提到的德国哥们就是Cloudflare防火墙为我拦下的恶意流量
大家都可以先试一试,感受Cloudflare防火墙的威力