分類: Amazon Web Service

WordPress with AWS Cloudfront & WAF

WordPress with AWS Cloudfront & WAF

在這一兩年建站初期,這個站就很單純的放在AWS東京Region,一來台灣AWS沒有提供EC2的服務,二來其實速度也不慢。我比較過東京和新加坡速度,現在跨國頻寬算是順暢的,島內島外對我來說沒什麼感覺,而我又比較偏愛日本一點我就決定放在東京。

這幾天再研究Google Sheet網頁爬蟲的時候,發現本來能夠爬蟲的網站因為躲到Cloudflare後面,我就再也爬不到了。我稍微研究了一下Cloudflare,也就是CDN(Content Delivery Network)和WAF(Web Application Firewall)的服務。突然發現我應該能夠用在我的Blog,針對靜態內容做本地快取,會讓瀏覽的感受更好,WAF也可以增加一些安全性,畢竟其實我跟Linux並不是這麼的孰悉。

我開始註冊Cloudflare,一路設定到最後才發現必須要把Name Server整個指過去!如此會把我的整個架構打亂,因為除了Mail代管我放在Google之外,我幾乎整套都放在AWS上。Route53 / S3 / Lightsail / EC2 …如果把DNS移到CloudFlare,整合度感覺就變得很差。

所以,我想想AWS應該也是有類似的服務,所以就找到了下面三項:

AWS Cloudfront(CDN)

官網連結(新分頁)

AWS WAF

官網連結(新分頁)

AWS Shield

官網連結(新分頁)

後來去要去設定Route53,發現其實他有說明,當你開始使用Route53的時候,也就同時啟用了AWS Shield Standard了。

AWS Shield 提供兩種版本的服務:詳細請參見這裡我就不另外敖述了(新分頁)

AWS Shield Standard AWS Shield Advanced
快速偵測 增強型偵測
內嵌的攻擊降低功能 進階攻擊風險降低
  可見性與攻擊通知
  DDoS 費用保護
  專業支援
  全球可用性

標準型不另外收費,進階型的費用很嚇人,應該是商業等級的,我想我這種Blog不會需要的,所以就不繼續介紹了。

接著來說Cloudfront。WordPress 有Plug-in 跟可以直接設定Cloudfront,實在是好方便阿

安裝好之後你先按照這篇文章(新分頁)設定好AWS帳號和權限。裡面大致上的意思就是,建立一個能只能存取Cloudfront Full Access的User。在AWS的世界,所有的應用程式帳號都應該是獨立帳號而且要限縮到最小的權限這樣才能避免在網路世界中諸多的資安事件。雖然是英文,但是應該不需要我另外在寫一篇吧?看圖照做很容易。

我本來設定好帳號,然後進入Cloudfront頁面,自己手動新增,後來才發現,原來WordPress的這個Amazon AWS CDN Plug-in,非常貼心,你只要把剛剛申請的帳號的新增Access Key/Secure Key 填上去,選一下Price Class(美國/加拿大/歐洲、美國/加拿大/歐洲/中東/非洲、全部節點三種價格些許不同,可以自己去查一下),然後啟動/啟用他,如果你的帳號設置沒有問題,你的Cloudfront Console就會出現這個Plug-in幫你產生的設定而且即刻開始同步。

點開可以看一下

他預設會使用Cloudfront的SSL憑證,我個人就是喜歡用自己Domain Name的憑證,所以就在AWS的Certificate Manager申請一個自己的Domain 憑證然後掛上去。

如果你的網站有https必須要關注下面的設定(迷之音:現在還不把網站掛上SSL憑證,很快主流的瀏覽器都會擋掉了。)

他一開始狀態會是In Progress/處理中之類的,一段時間之後(端看你網站大小),他就會變成已部署。

這時候你可以用瀏覽器的私密模式去看看。網站跑完Chrome按一下F12

你就會看到很多東西是從Cloudfront傳送過來的而不是從你的網站Out put出來。

Cloudfront是用流量計費,LightSail流出也有計費。但是好加在如果從Lightsail/S3等等流出去到Cloudfront是不會計費的。所以應該不會有重複收費的問題。

如果你的網站掛上Cloudfront有些動態功能有點怪怪的

建議你可以把這兩個選擇性的勾起試試看看,我的下拉選單圖示沒勾的時候,變成方格,勾了以後才正常。

再來講AWS WAF。

AWS WAF和Shield是做在同一個Console,WAF可以選Region,如果想連結Cloudfront,請選擇,Global(Front)設定前請先先好Region不然設定錯又要重來了。

Region選定之後,按Create,名稱描述請隨意,下面選Cloudfront 

然後按下面的Add AWS resources

他會列出你所有的Cloudfront資源,選定你要的然後Add然後Next

接著新增Rule,這裡要說明一下Managed rule group,是指AWS或第三方廠商維護的Role,Managed rule一條一個月一塊美金,如果是AWS自己維護的Rule不在另計時數費用,如果是第三方廠商維護的Rule端看他的時數費用怎麼計算。

因為我只是小小的Blog,所以我就選用AWS管理的Role

然後下面的Default action通常是Allow,如果你選到Block意思是預設阻絕..沒人能連你的網站。

如果你有多條Rule,可以調整判斷順序

這裡我有加入CloudWatch,看你需不需要

最後Review完你就可以Create web ACL

回到Web ACL,可以看一些統計資料

以上打完收工。

要注意雲端很多服務都是計費的,有計流量、計時間的、計數量的,使用之前請詳閱價格說明書,以免收到帳單的時候傻掉。

CloudBerry-雲端備份

CloudBerry-雲端備份

這一邊是在說明我在尋找家裡File Server要做雲端(異地)備援的軟體/方法

因為我家裡的File Server大約有900G的資料。

平常除了本機磁碟陣列(2Tx2 Raid 1)之外另外還有同步備份到外接式磁碟。

畢竟資料本身以及備份的外接硬碟都是放在同一個地方/同一個櫃子,如果碰到一些天災人禍意外可能很多心血就都沒了,所以我一直在尋找異地備援的方案。

但是在沒有這幾年雲端服務之前,平凡人也不可能去租一個機房擺Storge來放這些備份的資料。

這個軟體是我在搜尋雲端備份軟體的時候找到的 。

先說明這不是廣告文純粹是分享一個好用的軟體而已。

CloudBerry ->https://www.cloudberrylab.com/

我一開始是被他其中一個軟體吸引到Cloudberry Explore for Amazon S3

這介面實在很人性化,就像FTP一樣可以直接增、刪、拖拉檔案在電腦與Amazon S3之間

在我試拖了幾個檔案之後覺得好方便,我就開始找尋有沒有自動排程的功能。

點了上面的Schedule Backup之後,果不其所然跳出他的廣告網頁。畢竟好用方便的工具就是用錢砸出來了。

他所跳出來的軟體網頁是Windows Desktop Cloud Backup

我仔細看了一下,他說明的其實沒有很清楚,只有說Free版的是給個人使用的,Pro版擁有更多的進階功能

想想我File Server是放在Windows Server 2016上面,我直接換個產品線找到Windows Server Backup

載回來裝起來之後,我發現我無法切換成Freeware模式……..

冏了,原來只要加了網域的電腦就沒辦法使用Freeware mode,而且Freeware模式有限制200G備份資料的限制,遠低於我的需求。

後來,我想想至少先用用看決定買或不買,畢竟119美金台幣四千多塊,實在是不便宜(但是更重要的是資料無價。)

註冊Mail之後,它可以讓你全功能試用15天。

其實軟體並不複雜

他基本的功能除了備份到本地端/本地網路之外,就是可以備份到各大雲端商!

看看這是不是很猛!支援雲端之外也支援各是各式各樣的服務或Storage。

我自己在研究的三大雲裡面所有正在使用的服務

AWS:Lightsail / Route53 / S3

Azure:AzureDNS / Storage

Google:G Suit

想想我就先試試看設一定一個Backup Plan到S3,至於詳細的設定過程我就不打出來因為很簡單。

按照家裡的網速 Dual Wan( 100/60、60/15),我挑選的300G的部分檔案做上傳,大概也花了我20小時做第一次的Full Backup。

如果大家熟悉雲端的收費模式,大致上的收費方向除了存在上面的資料量還有資料的流出流入與純取的次數。

我曾經試過想者不要錢的節省方式,用Powershell搭配AWS Shell來上傳備份檔案,照這樣計算我資料流出流入的和存取次數一定很快就爆量!

這個軟體就是好在他會把備份的檔案在本地和雲端都建構一個資料庫,要備份的時候他會先掃描本地端有異動過的資料蒐集完之後遠端的資料庫做比對,然後只上傳有異動的資料

下面是單一雲端備份計畫的畫面,是不是簡單明瞭!

下面是備份工作正在Running的時候的畫面,特別的是他一次會先排1000個檔案進佇列,等到快要清完的時候他會再排下1000個檔案。

總之,最後他會告訴你他完成了。

備份完總要檢查一下!

AWS上傳完成。CBB_SRVFSTORE其實就是他放資料庫的地方。

Azure上傳中(在寫此篇的同時Azure Storage正在做第一次完整上傳)

Local的Backup Plan也看一下。

Local的將近900G資料透過USB3.0做第一次傳輸大概也花了一天半快兩天才做完。

而之後的每次都只要比對有異動資料才做備份。

除此資外它還可以幫你刪除老資料節省空間/金錢,我自己是設定(同時也是預設)來源檔案刪除30天之後,也刪除雲端的備份檔案。

雲端的儲存計畫也有分熱資料/冷資料價格不同

他可設定好之後自動幫你移轉儲存計畫(省錢)

以上,您說這是不是異地備援好用的軟體呢?

 

 

 

 

Blog終於掛上SSL憑證了!即刻本站開始使用https

在這裡請容我先放張圖,讓我自High一下!終於把這裡加上憑證,開始使用https了

整個是過程應該來記錄一下(測試SSL網站連結)

最最一開始,我在網路上搜尋關於AWS lightsail上的Wordpress關於SSL加密的方案,幾乎都是採用增加LoadBlance的方案然後靠附贈的SSL來加密。

但是!這個LoadBalance方案月費就要18美金,天殺的比我本來租用的AWS Lightsail 的五美金方案還貴(其實我剛剛已經升級到10美金的)

但是總是還是要嘗試一下,可以用這種方式來熟悉下AWS Lightsail的設定流程對於AWS經驗也是有不少幫助

看看這18 USD/月其實寫得一點都不明顯……..而且為了只網站加密花這18 USD/月感覺不太值得。

我的情況比較特殊,因為我的DNS託管是放在Azure,所以有些設定跟他的操作步驟不同。

Load balancer建完之後80 Port就會先通了,

只要把Instance attach上去之後,在DNS把本來的A紀錄換成CNAME指到Load Balancer的網址即可。

接著就在同個頁面申請SSL憑證(免費,由AWS一站式申請/託管)。

SSL申請需要再DNS加上一些指定的CNAME方能確認你擁有該Domain才能夠成功申請憑證。

SSL憑證申請完成之後,掛在HTTPS上,即可生效。

在這裡,其實你會發現SSL加密其實只有做Client到ELB這一段,而Wordpress主機本身都不做任何設定,所以在AWS內部走的應該都沒有加密。

然後我測試過,可能是因為Wordpress的關係,瀏覽整個網站都會看到憑證,但是就是沒有出現鎖頭,感覺應該是沒有使用憑證加密。

經過了一天之後,越想越不對。所以我把Load Balancer砍了,DNS紀錄指回Instance之後,我回頭去找之前查過的Let’s Encrypt

它是Free的網站通用憑證,但是因為之前大部分搜尋到的安裝都是用Linux套件下去做,在WAMP環境下我實在是試不出來。

既然搬到AWS LightSail上,Linux環境應該有機會,所以我參考了這篇文章(點擊會開新分頁)。實作了兩次才成功。

當然要修改任何網站重大設定以前,請先做Sanpshot,不然一不小心就整站掛了。

備份這種東西如果在地面上或實體機都有點麻煩,在AWS上真的很方便!彈指之間就搞定一切!

接著用SSH直接連進主機按照步驟下指令(有些東西是必須要自己修改成自己網站需要的東西)。

然後把在網站設定上,直接指定好要套用的憑證。

還有,設定好排程每個月月初去自動Renew憑證一次,避免憑證過期失效(這種Free憑證一次通常只給三個月效期)

就一切搞定了!其實這Blog一路走來雖然簡單,但是真的讓我學到不少東西!順便溫故知新(Linux)!

 

 

 

Blog Migration to AWS. Successful!!!

上完了三堂AWS架構的課程之後,我一直很想把Blog放到AWS上。

WordPress是個簡單的Web服務,LAMP/WAMP+WordPress套件就可以很快的架設起來了。

舊的Blog使用的是Windows Server 2016 + WAMP套件 + WordPress的VM。

Web server + MySQL都做在同一台機器。後來又加了另外一台WAMP,但是僅拿來做DB的Replica而已。

到底實體機器都是同一台,只是放在不同顆硬碟而已,而且網路都是吃家裡的,都會有單點失敗的風險在。

雖然有做備份,但是感覺就是不太踏實。自家的機器掛了或網路斷了都很麻煩….

後來我上網找了些資料,WordPress也可以直接利用AWS Managed Service來做。

使用AWS Elastic Beanstalk + AWS RDS就有機會做成一個完整的WP網站。而且搭配 ELB還可以做Auto Scaling。

但是後來仔細看了一下,如果未來WP要更新將會變得很十分麻煩。

不然退而求其次,用EC2+ELB+AWS RDS應該也可以達到不錯的效果。

當我在Service 選單裡不小心點到AWS Lightsail的時候,突然眼睛一亮。

他幫我把整個我想要的東西都打包好了。

 

而且一個月只要不超過下面的限制,都不須另外加錢。

當然我這個小小blog肯定從最便宜的開始。日後要移轉再用Snapshot Export出來套用大一點的機器就好了。

所以我選了5美金一個月的。

後來其實我去換算了一下:

5美金的其實大概就是t2 nano+網路流量再打一點折。

10美金的則是t2 Micro規格+網路流量再打一點折。

轉換的過程當然也是碰到不少麻煩事。一開始一直沒找到好的打包工具。

雖然文章不多也才23篇,但是很多設定/外掛/外觀都要重來實在很麻煩!

後來找到了All-in-One WP Migration,終於成功打包了將近1G的資料整個傳上去!

全站就這樣,花兩天的時間查資料加上一天的時間慢慢做,就把我的blog上雲端了。

這篇同步放在雲端跟地面上。但是這應該同時也是地面端的最後一篇Post了

舊站:http://blog.avex.idv.tw/blog  –>也許某年某月他就消失了。

新站:https://www.avex.idv.tw  –>也許很快就變成https://www.avex.idv.tw了

 

AWS Technical Essentials

從這一天開始比較清楚的認識的了AWS的架構,雖然以前在國眾的日子老闆有送我去上過同一個課程(Ver 3.7)現在是Ver4.2,但是當時上課的並沒有很認真的去研究,事後也沒甚麼機會研究一下Lab,在離開國眾之後就慢慢淡忘了。

前陣子過完年之後,某天突然覺得當工作只剩下Client的時候,以前接觸過的Server和Cloud都快忘記了,繼續這樣沉淪不是長久之計又或是有天如果被裁員?突然想起了以前摸過的AWS,該是來好好複習一下,在很多的網路資源上找來找去,都很難找到有詳細解說的資源,後來上官網無意間發現官方是有開課的。最初皆的課程,其實主要Focus在 AWS最基礎的幾項服務 :EC2、VPC、S3、IAM上面

透過下面的3個Lab,來實作一個能夠Auto Scaling的Website.雖然很簡單很基礎,但是透過講師講解,確實很多網路上並不一定能找到的東西。

AWS Technical Essentials – Lab 1 – Build a Web Server

 

AWS Technical Essentials – Lab 2 – Configure Website Data Store

 

AWS Technical Essentials – Lab 3 – Manage Your Infrastructure

 

P.S圖自己畫好,比較沒有版權問題。

另外附上一張沒甚麼用的結業證書

AWS Technical Essentials -Certificate of Completion