執筆時,香港的一個網站正受到每秒逹 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 – 網站守護神
Tagged on:                     

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

zh_HKChinese (Hong Kong)