如何提升企業雲端防護力-Cloud Armor
Cloud Armor是一款GCP的DDoS防護解決方案,意味著它可以提供自動L3和L4 DDoS 防護,同時也能夠提供L7防護,還包括一些創新的功能,如速率限制、機器人管理和自適應保護等。 Cloud Armor也是一個Web Applicatioiln Firewall防火牆 (WAF),表示它可以識別和阻止常見的攻擊類型(OWASP Top 10)。因此,可幫助保護我們部署的應用程式免受DDoS攻擊、XSS入侵和SQL注入攻擊和一些session固定攻擊。
架構
圖片來源: Google官方網站
使用Cloud Armor您可以
- 透過 HTTP(S)負載平衡保護服務免受基礎設施DDoS攻擊。
- 配置安全策略(security-policy),可指定規則和這些規則的評估順序。
- 允許/阻止/預覽和記錄流量。
- 為IPv4和IPv6流量部署IP白名單和黑名單。
- 使用豐富的規則語言建立自定義規則,以根據第3層和HTTP(S)請求參數的任意組合匹配流量,並允許或阻止此流量。
- 為SQL注入(SQLi) 和跨站點腳本 (XSS)攻擊啟用基於地理位置的控制和應用程式感知防禦。
配置步驟
請點選左側網路安全性Cloud Armor並點選【建立政策】。
- 在配置策略部分,給出名稱並增加描述。
- 策略類型(在例子中,使用的是後端策略)。
- 預設規則動作允許/拒絕。
如果是公有應用程式,您只想阻止幾個IP或國家/地區,通常將允許設定為預設值。對於私有應用程式,通常可選擇拒絕規則。如果預設選擇拒絕,它將阻止所有具有最低優先級的流量,任何具有最高優先級允許的規則,都將覆蓋預設規則。(在這例子中,預設選擇允許所有流量)。
請點選【新增規則】。
- 為新規則增加說明。
- 選擇模式基本模式/進階模式: 基本模式可以允許或拒絕來自匹配IP地址的流量。
- 在匹配部分,增加要阻止的IP地址或網段(黑名單)。
- 只啟用預先發布(preview only),僅記錄規則操作,但不會實際去執行。
- 設定拒絕(Deny)以及優先順序(Priority)設定為300,數字越小越優先。
接下來應用目標部分,要把這個Policy套用到目標主機,就是先前面建立好的Load Balance和Backend,請點選【新增目標】,然後選擇一個負載均衡器後端目標並點選完成。如下圖所示。
自適應保護(Adaptive Protection)是一項高級功能,依情況可將其作為預覽啟用。可以了解存取您的網站請求模式,並將根據異常流量發出告警/建議補救措施。
最後請點選【建立政策】。
下圖為已建立的Armor Policy。
在Armor Policy裡的規則。
驗證阻擋
如下圖為惡意主機IP位址。
結果: 列黑名單已被阻擋。
查看記錄
請點選記錄->查看政策記錄檔。
查詢語法:
resource.type="http_load_balancer"
jsonPayload.enforcedSecurityPolicy.outcome="DENY"
展開jsonPayload與enforcedSecurityPolicy。
將會看到拒絕流量以及惡意者的來源IP還有其它相關http Header資訊。
小提醒:
如果啟用僅預覧模式(preview only)則查詢語法jsonPayload.previewSecurityPolicy.outcome="DENY"
應用情境
情境一 阻擋來自某些國家
新增一條規則,以阻擋某些國家來的流量。這裡的範例為來自中國或香港。
自定義規則:
origin.region_code == 'HK' || origin.region_code == 'CN'
另外其他國家的設定語法可參考《ISO 3166-2》裡面的詳細列表: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
情境二 速率限制(rate based ban)
這是一個非常有用的L7保護功能。該情境以Cloud Shell指令方式來增加一個速率限制規則。該action操作可以是throttle或rate-based-ban。該規則會計算從每個特定IP地址(由 enforce-on-key定義)發送的請求數量,如果在最近的rate-limit-threshold-interval-sec(60)秒內這些數量超過了rate-limit-threshold-count(100)所指定的限制,則以下的請求將被拒絕並返回 404 狀態碼(exceed-action)。在throttle情況下,當請求數量再次低於時間間隔允許的限制時,用戶可以繼續發出新的請求並獲得回應。對於基於rate-based-ban,您可以在一定的時間內ban-duration-sec(300)阻止他們發出新的請求。
以下是自定義規則:
gcloud beta compute security-policies rules create 400
--security-policy=armor-test
--expression="true"
--action=rate-based-ban
--rate-limit-threshold-count=100
--rate-limit-threshold-interval-sec=60
--ban-duration-sec=300
--conform-action=allow
--exceed-action=deny-404
--enforce-on-key=IP
下圖為速率限制規則。
情境三 WAF阻擋
這裡簡單定義一些常用的攻擊,如sql-injection、xss、lfi..等。
執行指令security-policies list-preconfigured-expression-sets,可列出完整的規則集合如下所示。
自定義規則:
evaluatePreconfiguredWaf('sqli-v33-stable', {'sensitivity': 1}) || evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 1}) || evaluatePreconfiguredWaf('lfi-v33-stable', {'sensitivity': 1}) || evaluatePreconfiguredWaf('rfi-v33-stable', {'sensitivity': 1}) || evaluatePreconfiguredWaf('rce-v33-stable', {'sensitivity': 1})
參考文件
https://cloud.google.com/armor/docs/rules-language-reference?hl=zh-cn
https://cloud.google.com/armor/docs/configure-security-policies?hl=zh-cn#gcloud_5
https://cloud.google.com/armor/docs/rule-tuning?hl=zh-cn
https://cloud.google.com/armor/docs/adaptive-protection-use-cases?hl=zh-cn&authuser=1