在网络安全问题日益严峻的今天,大型网站自然有自己的防护方案,小型的个人网站没有这些技术和财力去折腾安全配置。(千万不要以为自己的blog网站不会有人来攻击,大错特错了,WordPress站点可是攻击者垂涎的目标,无论大小,不信可以装个WP安全插件看看有多少爆破攻击)不过好在很多大型网络公司都提供免费的前端代理服务,可以为自己的站点套上一层保护层。

在免费选项里,首选的是Cloudflare,这是一家跨国科技企业,总部位于美国旧金山,提供反向代理是它的主要业务。Cloudflare拥有世界顶尖的网络性能和安全解决方案,提供CDN、DNS、SSL、DDoS防护等一系列保障Web安全和提高性能的服务。

个人网站的话,Cloudflare的免费服务就已经非常丰富了,充分使用可以为站点增色不少。

关于 Cloudflare 技术的简单小知识

  • 反向代理:Cloudflare的主要业务是为用户提供反向代理服务,也就是隐藏原始服务器IP地址,让用户访问Cloudflare网络的服务器,然后再由Cloudflare的服务器去跟原始服务器通信,再把原始服务器的响应返回给用户。反向代理是互联网的基础技术之一,内容分发网络(CDN)的核心之一就是反向代理技术。反向代理在保护原始服务器安全上起了至关重要的作用。
  • 任播网络:Cloudflare(ASN13335,互联网自治系统编号13335)使用自己的150W+个IP地址为1300W+个网站提供反向代理服务,利用其全球任播网络(覆盖100+个国家,200+个城市),用户的请求可以被路由到最近的Cloudflare服务器。由于任播网络中一个IP地址可以由分布多个位置的多个服务器共用,在Cloudflare服务器给用户的响应中会用三字机场代码表示具体是哪台服务器提供了服务。
  • 中国内地网络:Cloudflare中国内地的网络由百度云加速运营,免费用户无法使用。中国内地的用户访问Cloudflare网络多数会被任播到美国西海岸的节点,主要是洛杉矶节点(三字机场代码LAX)。

开始使用 Cloudflare 服务

在使用Cloudflare之前需要在Cloudflare中添加自己的站点,这里需要在域名提供商处把DNS解析服务器修改成Cloudflare的DNS服务器。

注册Cloudflare账号,中文官网地址: https://www.cloudflare.com/zh-cn/

添加自己的站点,然后Cloudflare会分配2个DNS服务器,在域名提供商处修改DNS服务器。阿里腾讯云的话直接在域名控制台修改,GoDaddy的话在后台添加自定义DNS服务器。

修改完成后转到Cloudflare后台(https://dash.cloudflare.com),选择需要管理的站点,进入DNS页面,如下图,Content一列填写原始服务器IP。确保2条A记录(一条直接解析主域名,一条解析www域名)或者1条A记录1条CNAME记录(一条指向原始IP地址,一条指向主域名),都已经开启Proxy模式,也就是代理。

Cloudflare DNS config
Cloudflare DNS 配置

这两条解析生效后域名DNS将解析到Cloudflare分布全球的CDN节点上,隐藏了真实服务器的IP地址,起到了一定的保护作用。当然用一定的手段还是能找出原始IP的,但是总比没有一点保护要好🙄。

通过任播网络,全世界各地的用户访问时将从最近的Cloudflare节点提取内容,与原始服务器的通信将由Cloudflare边缘服务器完成,避免用户直接访问原始服务器。

完成这步后,站点已经添加进了Cloudflare,接下来还有更多的功能等待探索。

Cloudflare 加速服务

Cloudflare免费服务中是无法使用中国大陆节点的,因为大陆节点是和百度合作的,要么就使用百度云加速,要么购买Cloudflare商业版。百度什么尿性,想必不用多说,而Cloudflare商业版又很贵,所以只能使用境外节点,这一点很遗憾。不过境外节点的速度也很快,我的服务器在香港,使用Cloudflare境外节点也有不错的加速效果(香港服务器使用的是国际互联网带宽,缩短了Cloudflare服务器到原始服务器的回源时间)。

加速配置

在上面一步添加完站点后,Cloudflare默认开启CDN服务,可以在后台Speed页面下面查看详情。Speed页下有3个选项卡:

  • Overview:加速效果总览,把有加速和无加速的情况做了对比 。
  • Optimization:可供选择的优化措施。
  • Browser Insights:浏览器洞察,用来查看浏览器加载页面的耗时。
Cloudflare Speed Console
Cloudflare Speed 控制台 Optimization 选项卡

这个选项卡下面有一部分服务是免费版无法使用的,可以使用并且建议开启的功能有下面2个:

Cloudflare CDN config
Cloudflare CDN 配置(减少静态文件大小、启用内容压缩)

缓存配置

进入Cloudflare后台Caching页面,这里是一些CDN缓存站点文件的规则,从上往下依次是:

  • 刷新缓存:站点文件更新后需要手动刷新CDN缓存就用这个。
  • 缓存等级:决定了Cloudflare缓存多少站点上的文件,选择最后一项Standard即可(当获取资源的查询字符串更改时,会提供不同的资源,而不是同一个)。
  • 浏览器本地缓存过期时间:这是发给浏览器的Cache-Control响应头。默认4小时,可以手动修改。修改频繁的站点就减小过期时间,修改不频繁的话可以考虑增加过期时间,缓存时间到了之后浏览器会重新请求服务器获取资源。
  • 始终在线:建议开启,如果源站宕机的话Cloudflare会返回一个人性化的错误页面告诉访问者;如果是纯静态的网站,Cloudflare会从CDN缓存直接返回页面。
Cloudflare Caching config
Cloudflare Caching 配置

Cloudflare 安全服务

Cloudflare免费提供的安全服务有Web应用防火墙(WAF)、DNS安全、DDoS防护、SSL/TLS。而这些在国内的腾讯阿里云都是付费才能使用的。

Web应用防火墙(WAF)、DDoS防护

进入Cloudflare后台Firewall页面,这里有5个选项卡:

  • Overview:防火墙事件查看,被Cloudflare拦截的请求都会显示在这里。
  • Managed Rules:由Cloudflare管理的防火墙规则,包括内置规则(免费版无法使用)和DDoS防护(已经自动启用)
  • Firewall Rules:手动配置防火墙规则,可以禁止指定IP、用户代理标识、URI、地区的请求,免费版只能设置5条规则。
  • Tools:手动添加对指定用户代理标识、指定AS(互联网自治系统)请求的拦截。愿意付费的话可以开启限制访问速率的功能。
  • Settings:防火墙设置。
Cloudflare Firewall Console
Cloudflare Firewall 配置

Firewall Rules选项卡里的内容将另开文章详细介绍,链接在本文结尾。

Settings选项卡里面,有一个Browser Integrity Check功能,建议开启。它检测浏览器完整性,拦截Python脚本请求这类明显不是真人发出的请求。

DNS 安全

进入Cloudflare后台DNS页面,没错就是一开始那个设置解析代理的页面。这里有一个DNSSEC(Domain Name System Security Extensions,DNS安全扩展)功能,可以考虑开启。

Cloudflare DNSSEC
Cloudflare DNSSEC

DNSSEC,即DNS安全扩展,用来保证DNS解析到正确的IP地址而不会被劫持。我在GoDaddy注册的域名是支持设置DNSSEC的。首先在Cloudflare这里启用DNSSEC,会得到一系列的记录值,以及加密密钥,然后在GoDaddy控制台找到DNSSEC设置,把Cloudflare提供的这些数据添加进去就可以了(GoDaddy帮助文档)。等待几分钟Cloudflare验证通过,DNSSEC就启用了。

SSL 证书与 TLS 传输加密

加入Cloudflare的站点,Cloudflare会在CDN节点上为自己的域名配置免费证书,采用最新型的TLS1.3标准。

进入Cloudflare后台SSL/TLS页面,如果站点两端的SSL证书配置(Cloudflare到前端用户、Cloudflare到源服务器,前者由Cloudflare自动添加,后者需要自己在源服务器上添加服务器证书)没问题,那么会显示这样的页面:

Cloudflare SSL/TLS
Cloudflare SSL/TLS

Edge Certificates选项卡中,确保下面2个功能开启:

  • 总是使用HTTPS:即便通过HTTP协议访问也会强制跳转至HTTPS。
  • HSTS严格传输安全: 强制客户端(如浏览器)使用HTTPS协议与服务器创建连接。
Cloudflare SSL/TLS
Cloudflare HTTPS 配置

Cloudflare也提供了源站免费证书,这个免费证书仅可用于源站与Cloudflare通信,具体操作在Origin Server选项卡下。

Cloudflare free origin server certificate
Cloudflare 源站免费证书

免费证书可以下载(Cloudflare不会保存生成的私钥,要自己妥善保存,丢了就得重新生成证书),然后安装到源站服务器上,如果有一天不再使用Cloudflare的服务,该免费证书也必须移除。

Cloudflare 页面规则

这是Cloudflare一项强大的功能,允许用户针对站点不同的路径配置不同的Cloudflare功能,在后台上方一排蓝色导航按钮中点击Page Rules进入。免费用户仅可设置3条规则。

对于WordPress站点,最常用的功能是缓存非后台管理(wp-admin)页面,点此查看官网文档,上面给出了一张GIF图片形象地说明了如何编写这种缓存规则。

Cloudflare 站点统计

Cloudflare提供了详细的站点流量、安全状态分析报告,在后台Analytics页面中可查看。

Cloudflare Analytics
Cloudflare Analytics
  • Traffic:流量查看,这里显示了来自各个地区的请求数量。
  • Security:Cloudflare拦截的攻击、爬虫情况。
  • Performance:站点表现,包含HTTP协议版本分布、节省的带宽、请求出现的故障。
  • DNS:DNS查询的次数。

Cloudflare 额外 APP

这是Cloudflare很有意思的一个功能,Cloudflare可以在发送页面给客户端之前在页面上添加各种额外脚本来实现其它功能,比如自动添加Google Analytics脚本实现Google网站分析。当然还有非常多的APP可以添加进去,这里就不多说了,在后台进入Apps页面,里面还有更多好玩的功能。

Cloudflare Workers 无服务器计算环境

JavaScript的无服务器计算环境,具体内容将在单独文章中写。


写了这么多,基本上免费版的功能都写进去了🤨,更详细的操作Cloudflare上都有说明,照着步骤一步步来,英语不好的童鞋用一下Google或者Bing翻译,都可以搞出来。

2020年补充:Cloudflare后台目前已经支持多语言,包括简体中文,在后台点击右上角语言列表可以切换已经支持的语言。

发表评论

电子邮件地址不会被公开。 必填项已用*标注