AWS WAF (Web Application Firewall) 是 AWS 提供的 「網頁應用程式防火牆」。
一句話總結:它是專門擋在你的網站最前線,負責檢查 HTTP/HTTPS 請求內容的「守門員」,用來防禦常見的網頁攻擊(如 SQL 資料隱碼攻擊、XSS 跨站腳本攻擊)以及惡意機器人。
它是 OSI 模型第 7 層 (應用層) 的防護服務。1. 核心功能 (Core Functions)
AWS WAF 的主要任務是過濾惡意流量,它能做到以下幾件事:
- 防禦常見漏洞:直接阻擋 OWASP Top 10 安全漏洞(例如:SQL Injection、XSS)。
- IP 封鎖與地理限制:封鎖來自特定惡意 IP 的連線。封鎖特定國家/地區的流量(Geo-blocking)。
- Bot Control (機器人控制):辨識並阻擋爬蟲 (Scrapers)、掃描器或惡意機器人,避免資源被濫用。
- 速率限制 (Rate Limiting):設定規則:「如果某個 IP 在 5 分鐘內發送超過 2,000 個請求,就封鎖它」。這能有效防禦 第 7 層 DDoS 攻擊 (HTTP Flood)。
2. 部署位置 (Supported Resources) —— 考試必考!
AWS WAF 不能隨便裝在任何地方,它只能掛載在以下 四種 面向公網的服務上:
- Amazon CloudFront (CDN) —— 全球層級 (Global)這是唯一可以在 Edge location 進行攔截的部署方式。
- Application Load Balancer (ALB) —— 區域層級 (Regional)保護 EC2 或 Fargate 後端的服務。
- Amazon API Gateway (REST API) —— 區域層級 (Regional)保護 Serverless API。
- AWS AppSync (GraphQL API) —— 區域層級 (Regional)
(註:WAF 不能 直接掛在 EC2 上,EC2 前面必須要有 ALB)
3. 運作元件 (Components)
A. Web ACL (網路存取控制清單)
- 這是 WAF 的最上層容器。你所有的規則 (Rules) 都放在這裡面。
- 你需要將 Web ACL 綁定 (Associate) 到上述的資源(如 ALB)上才會生效。
B. Rules (規則)
你可以自己寫,也可以用買的:
- Managed Rules (受管規則) —— 強烈推薦!由 AWS 或資安廠商(如 Fortinet, Trend Micro)幫你維護好的規則集。你只要勾選 "AWS Managed Rules for SQL databases",就自動擁有防禦 SQL Injection 的能力,不用自己寫 Regex。
- Custom Rules (自訂規則):你自己定義邏輯。例如:「封鎖 User-Agent 包含 curl 的請求」或「封鎖 Header 裡沒有 x-token 的請求」。
C. Actions (動作)
當請求符合規則時,要怎麼做?
- Block:直接擋掉,回傳 403 Forbidden。
- Allow:允許通過。
- Count:測試用。只計數不阻擋,讓你在正式上線前觀察規則會不會誤殺好人。
- CAPTCHA / Challenge:懷疑是機器人時,跳出驗證碼給使用者解。
4. 超級比一比:WAF vs. Security Group vs. Network Firewall
這三個都有「防火牆」的功能,差別在哪?

5. 考試與實務 關鍵字 (Keywords)
- Protect against SQL injection / XSS (防禦 SQL 資料隱碼 / 跨站腳本) →→ WAF。
- Block specific countries (Geo-match) (封鎖特定國家) →→ WAF。
- Block malicious bot traffic (阻擋惡意機器人) →→ WAF Bot Control。
- Rate-based rules (基於速率的規則 / 防禦 HTTP Flood) →→ WAF。
- Deploy on CloudFront / ALB / API Gateway。
- AWS Managed Rules (不想自己維護規則時選這個)。
- Web ACL。
總結
如果你需要保護網站應用程式免受 駭客攻擊 (Layer 7),而不僅僅是限制 IP 連線,請使用 AWS WAF,並記得開啟 Managed Rules 來省事。












