执笔时,香港的一个网站正受到每秒逹 300 Gbps 的 DDoS 黑客攻击,但幸好网站已有备无患,找来了一家专门提供网站保安服务的公司来守护网站的健康,让香港市民仍然能使用网站所提供的服务,这个网络守护神的功劳可谓功不可没,这家网站保安服务供应商是谁,它就是 2009 年于美国成立的 Cloudflare 。

Cloudflare CDN
Cloudflare CDN

史上最大型的 DDoS 攻击

直至昨天 (2014 年 6 月 21 日) 为止,Cloudflare 已成功顶住了 300 Gbps 的 DDoS 攻击,这可谓史上以来第二大的 DDoS 的攻击,但不查不知,原来史上以来最大的 DDoS 攻击,发生于今年二月欧洲,当时的攻击频率为 400 Gbps,亦是 Cloudflare 这家公司去防御的,详情可以看下的连结:

Technical Details Behind a 400Gbps NTP Amplification DDoS Attack

Record-breaking DDoS attack in Europe hits 400Gbps

故此早前那个香港网站负责人声称已使用 Cloudflare 为网站护航,但于首轮只有 75 Gbps 的 DDoS 攻击之下已不敌,不正是拆自己的招牌吗?区区 75 Gbps 又怎会难到应付过 400 Gbps 的 Cloudflare 呢?
故此,它今次重整旗鼓,已将系统升级,严阵以待即将来犯的黑客!果然不负众望,成功抵挡了 300 Gbps 的 DDoS 的攻击。

Cloudflare 的运作原理

Cloudflare 是怎样去保护网站安全呢?

其实原理很简单,它就好像大厦的保安员,所有来访网站的访客要先经过它的反向代理伺服器 ( Reverse Proxy ),当它 认为来访的访客没有威胁的时候,它才会去处理来访的要求,情况有类似一个智慧的防火墙。

另外,它还有一个增值服务,与一些传统的 CDN ( Content Delivery Network ) 服务商一样,提供网站内容快取服务。由于 Cloudflare 在全球不同的地点都设有伺服器,成为一个庞大的网络系统,当有访客经它的伺服器存取了网站的资料后,它会预留一个 Copy ,当有其他访客要求存取同一份资料的时候,它就可以直接把相同的 Copy 传送给其他访客,减少原本网站的负荷。另外,它还会把访客重新导向 ( Redirect )到访客身处地域最接近的伺服器,意即如果您身处香港,就算原本网站伺服器不在香港,它都会派遗香港的伺服器来服侍您,如果您身处欧洲,它就会用最接近您的欧洲伺服器来服侍您,所以对网站用户来说,亦会得到效能上的提升。

以下是它现时的伺服器分布及运作情况的连结:

https://www.cloudflare.com/system-status.html

简单来说,由于它成为您的网站的守门员 ( Gate-keeper ),对于所有黑客的攻击,首当其冲,身先士卒,故此能阻挡外来的威胁。

Cloudflare 的运作原理

Cloudflare 的免费套餐

CDN 的服务总结有以下的好处:

  1. 加强网站安全,阻截不利网站的攻击及 DDoS
  2. 减低原本网站的系统及网络负荷
  3. 提升网站载入速度,提高用户体验
  4. 不用修改网站程式,自动优化网站 ( Minify Javascript 、CSS、HTML 及移除图像 meta-data,优化网页元件载入次序等)
  5. 自动启用 gzip compression 来加快网站资料传送
  6. 大多 CDN 都会提供 DNS 服务,而效能也满不错的

当然,这些都需要代价的,就是
从前做网站项目,都会接触到这些 CDN Providers,如 Akamai 等。但这些都只是大型网站或大型企业才有财力利用得到,小型或个人网站都只好望门轻叹。

但我这里要告诉大家一个好消息,原来 Cloudflare 是有提供免费的套餐给大家使用的,不用花费一分一毫就可以得到 CDN 的好处和护航,当然要趁机试用一下。

到官方网站登记之后,它就会询问您的网站堿名,输入了后,系统就会扫描您的网站当前的 DNS Server 的设定,大约等待1 分钟后,它就会显示您的网站的 DNS Zone 的设定。

显示 DNS 设定
显示 DNS 设定

基本上,所有 DNS Entry Type (A 、MX、CNAME 及 NS 等) 都支援,在这里您可以修改、移除或增加新的 DNS Entry。留意上图的云 Icon,当它是橙色的时候,就代表所有流经那个网站的请求,都会经过  CDN 伺服器,而呈现灰色时,则代表会 by-pass CDN 伺服器而直接流向原本的网站。要注意的是,只有 A 和 AAAA Entry 支持 CDN 服务,而当然这里只把 HTTP 和 HTTPS (免费套餐并不支持 SSL) 才启用 CDN 服务。

完成后,它就会告诉您把网站 DNS 伺服器指向它们的専用伺服器。那么您就会登入您的 Domain Registrar 去改变 DNS  转向。大概 2 小时至 48 小时后,您的网站域名服务就会交由 Cloudflare 处理,您可以跟原本的 DNS 伺服器说拜拜了。

如果担心 DNS 的设定有误,可以先自行 dig 一 dig 它的 DNS 的 Zone Record,确定无误后,才把网站 DNS 转向。其例子如下:

$ dig +cmd @GAIL.NS.CLOUDFLARE.COM itarchitect.hk any

; <<>> DiG 9.9.5 <<>> +cmd @GAIL.NS.CLOUDFLARE.COM itarchitect.hk any
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<$ dig +cmd @GAIL.NS.CLOUDFLARE.COM itarchitect.hk any

; <<>> DiG 9.9.5 <<>> +cmd @GAIL.NS.CLOUDFLARE.COM itarchitect.hk any
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38849
;; flags: qr aa rd; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 3
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;itarchitect.hk. IN ANY

;; ANSWER SECTION:
itarchitect.hk. 300 IN MX 30 mx.itarchitect.hk.
itarchitect.hk. 86400 IN NS gail.ns.cloudflare.com.
itarchitect.hk. 86400 IN NS noah.ns.cloudflare.com.
itarchitect.hk. 86400 IN SOA gail.ns.cloudflare.com. dns.cloudflare.com. 2015509553 10000 2400 604800 3600
itarchitect.hk. 300 IN A 108.162.196.209
itarchitect.hk. 300 IN A 108.162.197.209

;; ADDITIONAL SECTION:
mx.itarchitect.hk. 300 IN A 66.96.142.52
mx.itarchitect.hk. 300 IN A 66.96.142.50
mx.itarchitect.hk. 300 IN A 66.96.142.51

;; Query time: 14 msec
;; SERVER: 173.245.58.116#53(173.245.58.116)
;; WHEN: Sun Jun 22 17:45:15 CST 2014
;; MSG SIZE rcvd: 226

效能测试

把 DNS 服务完全交托给它,真的没有问题吗?赶快来做一个 DNS Speed Test。

DNS 速度
DNS 速度

哗,简直快到无伦,还不用 5 ms ,我早前的 DNS 伺服器要 200 ms 以上呢。免费 DNS Hosting 有这样的速度,还可以去哪里找?

跟住就是 CDN 的分布快取服务,首先要验証一下身处香港的我是否真的把我的 Web 请求传送到香港的伺服器,可以利用官方提供的 CGI 程序去验証:

http://itarchitect.hk/cdn-cgi/trace

得到以下的结果,其中 colo= 就是标明Reverse Proxy 的位置了。

fl=23f9
h=itarchitect.hk
ip=xxx.xxx.xxx.xxx
ts=1403434416.079
visit_scheme=http
uag=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
colo=HKG
spdy=off
0

至于其他的位置代码,可以参考其官方网站。

https://support.cloudflare.com/hc/en-us/articles/200169986-What-do-the-CloudFlare-location-codes-mean-

最后,就是实际网站载入速度比拼。方法如下,

  1. 先清除 Chrome 浏览器的快取档案。
  2. 首先利用 Chrome 浏览器访问 香港 SoftLayer 试用体验 ,确定 Cloudfare 已把网页快取到它的伺服器中。
  3. 再清除 Chrome 浏览器的快取档案。
  4. 启用 Chrome 开发人员工具 (F12)
  5. 然后再访问 香港 SoftLayer 试用体验,纪录网页载入时间。
  6. 然后清除 Chrome 浏览器的快取档案,并修正 Windows 的 hosts file ,令Chrome 浏览器直接指向网站访问。
  7. 再利用Chrome 开发人员工具再访问香港 SoftLayer 试用体验 ,纪录并比较网页载入时间。

测试结果显示,直接访问时,网站载入需时 6.87 秒,利用了 Cloudflare 后则只需 3.11 秒,足足快了一半。

另外,它还会自动 minify 网站的 HTML、Javascript 、CSS,甚至改变网页的载入次序。View Source 之下,网站的 Javascript 载入方式已经被改写成以下的样子:

<script type="text/javascript">
//<![CDATA[
try{if (!window.CloudFlare) {var CloudFlare=[{verbose:0,p:0,byc:0,owlid:"cf",bag2:1,mirage2:0,oracle:0,paths:{cloudflare:"/cdn-cgi/nexp/dokv=abba2f56bd/"},atok:"72cbf1ed3fc80106d86cb34dfa42e050",petok:"7942ae5fac9ba00a2b1ca81a822cdd56a2011d22-1403432533-1800",zone:"itarchitect.hk",rocket:"a",apps:{}}];CloudFlare.push({"apps":{"ape":"729238247096b40867a041c126f8d781"}});document.write('<script type="text/javascript" src="//ajax.cloudflare.com/cdn-cgi/nexp/dokv=97fb4d042e/cloudflare.min.js"><'+'\/script>');}}catch(e){};
//]]>
</script>
.....
.....
<script type='text/rocketscript' data-rocketsrc='http://itarchitect.hk/wp-includes/js/jquery/jquery.js?ver=1.11.0'></script>
<script type='text/rocketscript' data-rocketsrc='http://itarchitect.hk/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.2.1'></script>
<script type='text/rocketscript' data-rocketsrc='http://itarchitect.hk/wp-content/themes/spacious/js/spacious-custom.js?ver=3.9.1'></script>

增值服务

除了保安和网站快取代理服务外,它还提供很多其他的增值服务,其中一个最主要的就是 Web Analytics 服务,附有访客数据及图表,但由于是免费计划,不能得到即时的数据,只能看到昨天或之前的数据,见图如下:

Web Analytic 服务
Web Analytics 服务

个人认为这个 Web Analytics 的服务挻阳春的,还是建议选用 Google Analytics 会比较好,不过它可以汇报为网站挡住了多少个威胁及节省了多少网络频宽。

节省了的频宽
节省了的频宽

如果想选用 Google Analytics,您可以在 Cloudflare Apps 选单中加入到您的网站,它可以为您设置 (当然首先要自行建立 Google Analytics 账户 ),它还有许多其他增值的 Apps ,可以无须修改网站程式码而加入到到您的网站中。

增值的 Apps
增值的 Apps

Amazon AWS 的最佳配撘

由于 Amazon AWS 是按网络流量及 I/O 来计算收费,而 Cloudflare 的免费套餐竟然是无限流量,而且还可以降低对 AWS 的网络流量和系统负荷,简直是穷网主的恩物!
AWS 的 Security Group 是提供 Whitelist 的 ACLs,我就曾经试过给来自某一个 IP 的恶意网站攻击,由于 AWS 只有 Whitelist ACL,最后我只好登入 Linux VPS 暂时用 iptables 封截它。但 Cloudflare 的 Threat Control 比起 AWS 的 Security Group 提供更全面的保护,同时提供 Whitelist 及 Blacklist 的 ACLs,往后就多了一个方法来封截恶意攻击。

Threat Control Custom Rules
Threat Control Custom Rules

唯一的不好处

免费套餐的不好处就是不支援 SSL ,即是当访客利用 HTTPS 来访问网站的时候,会出现 Timeout 的情况。如果要让网站可以利用到 HTTPS,就必须要付费来购买 Pro 或上的套餐。不过,暂时博客还没有开放给其他 bloggers 使用,这个问题暂时还可以修改 hosts 来解决自身登入 WordPress admin console 的问题。

Cloudflare – 网站守护神
标签:                    

发布留言

发布留言必须填写的电子邮件地址不会公开。 必填栏位标示为 *