iT邦幫忙

2025 iThome 鐵人賽

DAY 29
0
IT 管理

無職轉生:到了IT就拿出真本事!IT 維運 30 日修煉系列 第 29

Day29 - 章節二十八:雲端結界 ‧ Google Armor 的守護之術(雲端修行篇)

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20250929/20178480RfVwAUemDa.png


在迷霧中追尋惡意請求之後,冒險者終於抵達城堡的核心。眼前是一座古老的祭壇,上面刻滿符文,散發著幽光。這正是守護整座王國的法術 —— Google Cloud Armor

Armor 就像「結界術」,能將巨龍的烈焰與魔物的突襲隔絕於城牆之外。今日,我將學會如何從基礎到進階,布下結界守護術。


🔹 1️⃣ 基礎用法 — 新手結界

在冒險者剛掌握魔法之時,最需要的就是簡單、直接的防禦術。這些初級結界能立刻在城門口築起屏障。

核心能力:

1. Armor 開啟與基本規則設置

如同在城門立下結界法陣,第一步是開啟 Armor,並在 Load Balancer 前布署防護規則。

透過 gcloud CLI 指令快速建立一條規則:

gcloud compute security-policies create my-armor-policy \
    --description "Adventure Shield - 基礎結界"

https://ithelp.ithome.com.tw/upload/images/20250929/20178480SW7r2euUYI.png

2. 封鎖惡意 IP / CIDR

惡意騎兵團常從同一方位進攻,冒險者可以直接封印該地區的入口,阻止其再度入侵。

gcloud compute security-policies rules create 1000 \
    --security-policy=my-armor-policy \
    --src-ip-ranges="203.0.113.0/24" \
    --action=deny-403 \
    --description="封鎖惡意IP結界"

指令解說:

  • gcloud compute security-policies rules create 1000:在 Cloud Armor 裡建立一條規則
  • 1000:規則優先順序(數字越小優先級越高,範圍是 0~2147483647)
  • --security-policy=my-armor-policy:指定要套用的安全策略名稱
  • --src-ip-ranges="203.0.113.0/24":定義來源 IP 範圍(CIDR 表示法),代表 203.0.113.0 ~ 203.0.113.255 的所有 IP
  • --action=deny-403:動作是拒絕存取,並回應 HTTP 403 Forbidden,使用者會看到「禁止存取」的錯誤
  • --description="封鎖惡意IP結界":給這條規則加上描述,方便後續管理和辨識

https://ithelp.ithome.com.tw/upload/images/20250929/20178480tR4VKk3uIA.png

3. 限制特定 User-Agent

某些邪惡的魔法傀儡會偽裝身分潛入城堡,但它們的魔法印記(User-Agent)卻無法完全隱藏。

gcloud compute security-policies rules create 1100 \
    --security-policy=my-armor-policy \
    --expression="request.headers['user-agent'].matches('.*BadBot.*')" \
    --action=deny-403 \
    --description="阻擋壞機器人 UA"

表達式解說:

  • --expression="request.headers['user-agent'].matches('.*BadBot.*')":使用 CEL (Common Expression Language) 表達式判斷條件
  • request.headers['user-agent']:取出 HTTP 請求的 User-Agent 標頭
  • .matches('.*BadBot.*'):用正規表示法檢查是否包含 BadBot 字串
  • 換句話說,只要 User-Agent 裡帶有 BadBot,就符合規則

4. Rate limiting(速率限制)

面對小型洪水般的攻擊(DoS),冒險者可以設下「流量閥門」,防止短時間內過多請求癱瘓系統。

gcloud compute security-policies rules create 1300 \
    --security-policy=my-armor-policy \
    --expression="true" \
    --action=throttle \
    --rate-limit-threshold-count=100 \
    --rate-limit-threshold-interval-sec=60 \
    --conform-action=allow \
    --exceed-action=deny-429 \
    --description="防止簡單洪水攻擊"

速率限制參數:

  • --action=throttle:啟用速率限制 (rate limiting) 動作
  • --rate-limit-threshold-count=100:門檻次數:最多 100 次
  • --rate-limit-threshold-interval-sec=60:計算時間窗口:60 秒,也就是 1 分鐘 100 次的限制
  • --conform-action=allow:沒超過限制的請求 → 允許
  • --exceed-action=deny-429:超過限制 → 拒絕並回覆 429 Too Many Requests

簡單來說: 這個規則會讓每個來源在 1 分鐘內最多 100 次請求,超過的部分會被擋掉並回覆 429 Too Many Requests。

基礎結界完成!

https://ithelp.ithome.com.tw/upload/images/20250929/20178480mRsPKnxUjY.png

目前這套設置可以有效阻擋:

  • ✅ 單一惡意 IP/網段的攻擊 → 封鎖 IP
  • ✅ 已知壞機器人或自動化工具攻擊 → 檢查 User-Agent
  • ✅ 短時間內的洪水/大量請求 → 速率限制

但仍無法完全防護:

  • ❌ 分散式 DoS (DDoS) 攻擊,多個來源同時攻擊
  • ❌ 會偽裝 User-Agent 的自動化攻擊
  • ❌ 未知 IP 的掃描或漏洞攻擊

所以接下來要繼續加強我們的結界術!發揮最大魔力,進階 Armor 用法!


🔹 2️⃣ 進階用法 — 高階結界

隨著冒險者修行的提升,基礎結界已不足以抵禦高階魔物。於是更強大的結界術被傳授,能應對更狡詐與強力的敵人。

進階能力:

1. 使用自訂規則(WAF 規則)

就像在結界中刻下複雜符文,可精準抵禦 SQLi、XSS 等針對性攻擊。

城堡裡不只有直接衝擊的敵人,還有潛伏在信件或魔法卷軸中的陷阱:

SQL Injection(SQLi)
惡徒試圖在城堡的倉庫系統(資料庫)植入魔法符文,偷偷竊取或修改財寶。你啟動了 SQLi 結界,只要檢測到類似符文的攻擊,立刻阻擋並回應 403。

gcloud compute security-policies rules create 1400 \
    --security-policy=my-armor-policy \
    --expression="evaluatePreconfiguredWaf('sqli-v33-stable')" \
    --action=deny-403 \
    --description="阻擋 SQL Injection"

XSS(跨站腳本攻擊)
有些敵人會在留言板或公告中放置暗黑魔法咒語(惡意腳本),想操控城堡內的訪客。你啟動了 XSS 結界,凡檢測到危險咒語的請求都會被攔截。

gcloud compute security-policies rules create 1500 \
    --security-policy=my-armor-policy \
    --expression="evaluatePreconfiguredWaf('xss-v33-stable')" \
    --action=deny-403 \
    --description="阻擋 XSS 攻擊"

2. 使用 WAF 預設規則的注意事項

⚠️ WAF 預設規則可能誤擋正常流量

  • SQLi、XSS 規則會檢查請求字串
  • 某些正常使用的特殊字元或表單輸入可能被誤判
  • 建議做法:先用 Preview 模式
gcloud compute security-policies rules create 1400 \
    --security-policy=my-armor-policy \
    --expression="evaluatePreconfiguredWaf('sqli-v33-stable')" \
    --action=preview \
    --description="SQLi 預覽模式"

Preview 模式的優點:

  • --action=preview:不實際阻擋,只記錄觸發事件
  • 可以觀察哪些請求會被判定為攻擊
  • 逐步調整規則
  • 分析 Preview 日誌,排除誤判
  • 調整例外條件或白名單
  • 確認後再切換 deny-403 正式封鎖

3. 與 Cloud Logging 整合(自動化調整策略)

防禦並非死板,透過 Logging 分析,可以在發現異常後自動生成規則,像結界能隨戰場狀況即時變化。

gcloud compute security-policies update my-armor-policy --enable-logging

🔹 3️⃣ 結論 — 城堡結界的長存

完成這些結界術後,冒險者的城堡已經築起強大的護盾。無論是惡意請求的史萊姆,還是狡詐的魔狼,都難以再次突破城門。

然而,真正的戰爭不會就此結束。結界需要不斷調整與強化,否則新的魔物終會找到縫隙。

防護總結

基礎結界能防護:

  • ✅ 單一惡意 IP/網段攻擊
  • ✅ 已知惡意機器人
  • ✅ 簡單 DoS 攻擊
  • ✅ 基礎速率限制

進階結界能防護:

  • ✅ SQL Injection 攻擊
  • ✅ XSS 跨站腳本攻擊
  • ✅ 複雜應用層攻擊
  • ✅ 可疑流量模式分析

仍需持續關注:

  • 🔄 高度分散的 DDoS 攻擊
  • 🔄 會變換策略的自動化攻擊
  • 🔄 零時差漏洞攻擊
  • 🔄 新型態威脅


上一篇
Day28 - 章節二十七:雲端迷霧 ‧ 利用Cloud logging追尋惡意請求的影蹤(雲端修行篇)
下一篇
Day30 - 終章:冒險者的覺醒
系列文
無職轉生:到了IT就拿出真本事!IT 維運 30 日修煉30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言