文章段落
當年 Cloud Armor 推出之後,功能比較陽春,但 Google 一直有在增加更多功能上去,尤其是大家最想要的,阻擋「某些國家」的 IP 流量,這次就來試試看吧!前提條件:必須要有 instance group 搭配 Load Balance 和 Backend Service,才能設定 Cloud Armor 喔!
一、環境準備
1.建立 instance template 做為等等建 group 的範本
取名 apache-web-page,作業系統用 Debian,機器規格可選 f1-micro, g1-small 等等小台機器。最重要在這裡 startup-script,表示機器一建好就自動裝 apache和寫一張初始網頁:
語法如下:
#! /bin/bash
apt-get update
apt-get install -y apache2
cat <<EOF > /var/www/html/index.html
<html><body><h1>Hello World</h1>
<p>This page was created from a simple startup script!</p>
</body></html>
EOF
2. template 建好後,就可以建立一組 instance group ,取名為 aaron-instance-group
我有設定 Auto Scale 主機數量最小一台,最多十台,本範例是用不到,但如果你的主機流量時大時小的話,設定 Auto Scale會比較好喔!到這邊 instance group 就建立完成了,所以在下方圖片中我們可看到裡面有一台主機。
3. 並且確認網頁可正常運作
4. 新增 Load Balance,取得 IP 位址如下,細節就略過了,直接提供摘要如下:
5. 接下來在香港、美國、歐洲各開一台機器
6. 然後 SSH 進去主機,做 curl http://[Load_Balance_IP]
二、設定 Cloud Armor
1. Network Security => Cloud Armor
2. Create Policy
3.先取名,範例為 allow-tw-deny-hk-eu-us
雖然有 default rule action 設為 Allow,代表原本的 rule 套用之後,其餘的流量會套用 default rule,但為了保險起見,還是會先設定一定要允許的流量。
4.先Allow 台灣,因為基本模式只有 IP 範圍,所以要用進階模式。
設定語法如下,另外其他國家的設定語法可參考《ISO 3166-2》裡面的詳細列表。
origin.region_code == 'TW'
5. 設 Allow 以及優先順序 (Priority) 設定為 100,數字越小越優先
6. 另外 Done 之後, Cloud Armor 記得要再加另一條 Rule
7.規則語法如下,對了歐洲那台是波蘭主機,要設 PL,不要設 EU,會出錯:
origin.region_code == 'HK' ||
origin.region_code == 'US' ||
origin.region_code == 'PL'
注意 ‘||’ 是 “OR” 的意思,代表這三個國家都要套用,如果沒有’||’,會有語法錯誤。
8. 設定 Deny,並且優先順序設為 200,沒問題之後按 Done
9.再按 Next Step
10. 現在要把 這個 Policy 套用到目標主機,就是最前面建好的 Load Balance和 Backend
11. 最後按下 Create Policy,可以看到整個規則如下圖所示:
這邊提醒大家注意,設定並不會立刻生效,建議設定完後大概等5分鐘左右再回來看結果。
三、測試 Cloud Armor 效果
1. 確認主機是香港 IP
2. 確認原本是看到 Hello World,現在碰到 403 錯誤訊息
3. 美國主機也重覆上面香港主機的操作
4. 確認原本是看到 Hello World,現在碰到 403 錯誤訊息
5. 最後我們再來檢查波蘭的主機
6. 一樣確認原本是看到 Hello World,現在碰到 403 錯誤訊息
在依序檢查完上面三個地方的主機後,我們即可確認 Cloud Armor 已阻擋成功囉!
7. 最後再用台灣的桌機確認不是網站問題造成 403 錯誤
8. 直接用瀏覽器確認網站是可以造訪的,且允許台灣的主機訪問:
參考資料: Cloud Armor 的語法規則說明: https://cloud.google.com/armor/docs/rules-language-reference Cloud Armor 可直接引用 Cloudflare, Imperva 和 Fastly 的 IP list。 (Beta版): https://cloud.google.com/armor/docs/armor-named-ip |
以上就是使用 Cloud Armor 設定阻擋其他國家 IP 的設定方式,希望可以幫助到大家喔!各位如有任何問題歡迎直接留言討論,若有進一步的開發需求或想詢問更多技術問題,也可以直接與我們聯繫或參考我們的 GCP 資安解決方案。
▋延伸閱讀:
・比 VPN 連線、跳板機更方便!利用 Cloud IAP 快速建立遠端安全連線
・比 SSH 連線 GCE 更好管理!輕鬆以 OS Login 掌握用戶資訊
・[GCP 資安攻略] GCP 資訊安全各項功能簡介
・什麼是 Cloud IAM?GCP 權限管理服務介紹