iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0

前一天的文章提到可以搭配 WAF 使用,今天我們以這文章來為您做入門介紹。
但因為是 WAF,所以我要先放上免責聲名。

免責聲明: 如果你對 WAF 有不同的看法或理解,沒問題,一定是你對。

什麼是 WAF

WAF 是 Web Application Firewall,既然名詞中有 Web,可以想像就是針對 Web(HTTP) 的請求處理,提供的 Firewall 功能。
重點: 因為是 HTTP(Layer 7) Traffic,所以 WAF 能做的一切事情都是從 HTTP 的回應開始。
ex: 針對不想放行的請求回應 HTTP 403
下圖是 AWS WAF 的架構圖,可以看到保護的範圍包含了 CloudFront.

https://ithelp.ithome.com.tw/upload/images/20230918/201625020BDUCWDcOt.png

基本介紹.

我們可以參考 Jayden 的 Blog 文章來理解 WAF 是什麼。
每一套 WAF 設定,我們稱為 WebACL。
每一個 WebACL 包含 Rules & Rules Group.
每個 Rules Group 包含 1~多組 Rule
每組 Rule 包含一些判斷的方法,大致分為內容比對 & 頻率計算。

圖片來源: https://jayendrapatil.com/aws-waf/

那麼,基於這些不同的判斷方法,後續 WAF 可以採取不同的「Action」,包含:
Allow(放行)、阻攔(Block)、計量(Count)、reCaptcha(對抗AI 判定是不是人在使用)

好了,介紹完畢! (ㄟ?
別急,我們是介紹 CloudFront 的攤子(Booth),主要是要講如何搭配 WAF 使用,WAF 的部分啊。

如何設定

如果你是近期創建 CloudFront 的 Distribution,就會注意到在創建的過程中已經可以直接創建 WAF WebACL.
https://ithelp.ithome.com.tw/upload/images/20230918/20162502bQE8vAcZEV.png

如果一開始創建時沒設定,沒問題,後面開也行。

使用案例。

那麼,設定好了 WAF,可以怎麼用 + 用來做什麼? 這邊為大家報告常用場景。
場景 1: 使用受管規則(AWS Managed Rules),先滿足資安檢查的最基本要求
我個人很推薦以下幾個:

場景 2: 因為某些特殊原因,希望限定 CloudFront 只針對 IPv4 的客戶提供服務
比方說,您的程式端會去處理 XFF(X-Forwarded-For)欄位,抓取出IPv4 資料,但還無法處理IPv6 的IP位置。
這時您可以用以下搭配:

  • 設定 CF Distribution,不要勾選 IPv6 的 Support.
  • 設定 WAF 的 IP Set: 因為 IPSet 不能直接吃 0.0.0.0/0 這樣的 IP,請您加入兩段 CIDR IP: 0.0.0.0/1 以及 128.0.0.0/1。資料來源
    後續就可以拿來直接使用(ex: 看到IPv4 就放行),或以 ScopeDown 的方式搭配 AWSManagedRuleGroups 使用。

場景 3: 我想問如果被 WAF 擋住了,會出現什麼 & 怎麼查
會出現什麼: 被 WAF 擋住時,會看到 HTTP 403 的回應。如果你有在WAF 中設定客製化回應(Customized web requests and responses in AWS WAF),就可以直接從回應中看到。

你也可以透過以下方法來查是否被 WAF 攔下:

  • 透過 WAF Console的 Sample Requests: 這邊會紀錄對應的請求,短時間內& 請求數量不大時很方便查詢。
    https://ithelp.ithome.com.tw/upload/images/20230918/20162502W6SvKYNSv4.png
  • 透過 WAF 的 Logs
  • 透過 WAF 的 CloudWatch Metrics 觀察:
以 Web ACL, rule group, and rule 為 dimensions,看 Blocked Requests。可以直接 by rule 來查。

你可以透過檢視對應的 Cloudwatch Metrics 來看。

  • (如果剛好你有買 support plan) 直接蒐集 CloudFront RequestID,開 case 給 AWS Premium Support 查。

或者參考這文章 以及Youtube 影片來進一步瞭解。
Yes
p.s. 真希望趕快換成中文版影片。

OK,以上就是今天的內容,歡迎在留言區跟我分享你的看法。


上一篇
Day 15 - 使用 CloudFront Prefix List.
下一篇
Day 17 - CloudFront 的 Staging 環境 ( Continuous Deployment )
系列文
2023 年了,一起來學 CDN - 你也可以瞭解的 CloudFront 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言