iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
Build on AWS

亞馬遜熱帶雨林生存日記系列 第 13

Day 13: 如何在AWS使用WAF保護API?

  • 分享至 

  • xImage
  •  

公開讓大家存取的API,有的時候沒有驗證機制的保護,可能會被不同來源攻擊,再說就算有驗證機制,別人也可以登入後取得 token ,然後在短時間發出大量 Request 攻擊 API 。

為了防止 API 被攻擊,或者提早回應帶有錯誤內容的 Request , AWS 提供了 WAF 幫助開發人員保護系統的 API 。下面會介紹如何在 AWS 設定 WAF 保護 API Gateway 的 API 。


要使用WAF,先進到WAF頁面,並新增 Web ACLs ,接著按照流程依序設定。

Step 1: Describe web ACL and associate it to AWS resources

點選 Create web ACL 之後,進到新增頁面,選擇要把這個 WAF 綁到哪個 AWS 服務進行保護。

這邊提供了 Load Balancer 、 API Gateway 、 AppSync GraphQL 等多種 AWS 服務,選了AWS服務之後,再繼續選該服務底下,要綁定的資源。

按下 Add 之後,會回到新增 WAF 的頁面,就可以看到剛才選擇的資源被綁到這個 WAF 。由於我是選擇 API Gateway ,所以跳回這個頁面的時候,可以看到 Web request body inspection ,可以在這裡決定 Request body 大小的限制。

Step 2: Add rules and rule groups

Step 2 主要要訂這個 WAF 的規則,開發人員可以選擇使用別人訂好的規則或自己訂規則,如果要使用別人訂好的規則,右上角 Add rules 選擇 Add managed rule groups ,如果要自己訂規則,則選擇 Add my own rules and rule groups

Add managed rule groups

選擇別人的規則,除了 AWS 自己所提供的之外,還有多間公司可以選擇

AWS的部分,有的規則需要額外付費。

有的只扣 Capacity ,兩種都可以直接加到 web ACL 。

如果要使用其他公司的,則需要先去AWS Marketplace訂閱,通常是扣Capacity,沒有額外的費用。

Capacity的部分,預設是1500,超過1500要額外收費。

Add my own rules and rule groups

這部分可以使用 Rule builder 幫忙設計保護API的規則。

可以選擇 Request 要符合或不符合哪些條件,讓 WAF 進行 Block 或允許通行。檢查的條件如果是 Regular rule ,可以選擇要針對 Request body 、 header 、 cookies 或 query parameter 等跟 Request 內容有關的當條件。

如果要現在呼叫 API 的次數,可以選擇跟存取 API 次數有關的 Rate-base rule ,設定多少時間內, IP 存取 API 的次數,並設定 IP 的來源,以及要針對單一 IP 還是所有 IP 。

然後 Action 再決定是要 Block 、 Allow ,或者單純的做統計。

規則設計好之後,回到 Step 2 的頁面,可以看到多一條規則在 Rules ,並且顯示用了多少 Capacity 。

Step 3: Set rule priority

由於開發人員可能會設計多條規則,有的要允許,有的要限制,不同規則的邏輯很有可以能會打架,所以開發人員需要在這個頁面調整規則的優先順序。

Step 4: Configure metrics

接著需要設定 metrics ,選擇要不要把符合規則的 Request 記錄下來。

Step 5: Review and create web ACL

最後 review 剛才的設定,就可以新增 web ACL 了。

新增完之後就可以回到**Web ACLs**看到了。

Final test

設定好 WAF 之後,可以簡單測試一下 WAF ,我在這個 WAF 設定的規則是5分鐘內不能超過10次的呼叫。

用 Postman 簡單測試一下,超過次數時,會出現 403 ,這就是 WAF 真的發揮作用!!

Reference


上一篇
Day 12: DynamoDB IAM 實戰 - Attribute Level 權限設計和踩坑實錄
下一篇
Day 14: 使用 AWS Lambda 的 Concurrency 機制處理高流量應用 (上)
系列文
亞馬遜熱帶雨林生存日記16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言