0

AWS WAF - Hiểu và Dùng Để Bảo Vệ Ứng Dụng Web Trên AWS

AWS WAF – Hiểu và Dùng Để Bảo Vệ Ứng Dụng Web Trên AWS

1. AWS WAF là gì?

AWS WAF (Web Application Firewall) là một tường lửa giúp bảo vệ website hoặc API khỏi các cuộc tấn công trên internet. Nó hoạt động bằng cách kiểm tra mọi request (yêu cầu) gửi đến ứng dụng và quyết định:
Cho phép (ALLOW) nếu là request bình thường.
Chặn (BLOCK) nếu là request nguy hiểm.

Ví dụ thực tế

Giả sử bạn có một website bán hàng chạy trên AWS. Một ngày nọ, bạn phát hiện có rất nhiều request từ một IP lạ, làm website bị chậm hoặc không thể truy cập. Đây có thể là DDoS attack (tấn công từ chối dịch vụ).

👉 Giải pháp: Dùng AWS WAF để tự động phát hiện và chặn các IP gửi quá nhiều request trong thời gian ngắn.


2. AWS WAF hoạt động như thế nào?

AWS WAF dựa vào các bộ luật (rules) để kiểm tra request gửi đến website/API.

🎯 Cách hoạt động:

  1. Người dùng gửi request (truy cập website, gọi API).
  2. AWS WAF kiểm tra request dựa trên các rules (luật).
  3. Thực hiện hành động:
    • ALLOW → Request hợp lệ, chuyển tiếp đến server.
    • BLOCK → Request nguy hiểm bị từ chối.
    • 🔍 COUNT → Ghi nhận request để phân tích nhưng không chặn.

3. Các tình huống phổ biến AWS WAF có thể giúp bạn

🚨 3.1. Chặn SQL Injection (SQLi)

SQL Injection là kiểu tấn công chèn mã độc vào form nhập liệu của website để đánh cắp dữ liệu.

🔴 Ví dụ: Hacker nhập vào ô tìm kiếm:

' OR '1'='1

Nếu website không được bảo vệ, hacker có thể lấy toàn bộ dữ liệu trong database.

Cách AWS WAF bảo vệ:

  • Kích hoạt AWS Managed Rules để tự động phát hiện SQL Injection.
  • Hoặc tạo rule kiểm tra các ký tự SQL đáng ngờ trong request:
    • SELECT, INSERT, DELETE, DROP, ' OR '1'='1, v.v.

🚨 3.2. Ngăn chặn DDoS Layer 7

Tấn công DDoS (Distributed Denial of Service) làm website chậm hoặc sập bằng cách gửi hàng triệu request giả mạo trong thời gian ngắn.

🔴 Ví dụ: Hacker dùng botnet để gửi 100.000 request/giây đến trang đặt hàng của bạn.

Cách AWS WAF bảo vệ:

  • Dùng Rate-based Rule để giới hạn request từ mỗi IP (VD: không cho phép quá 100 request/phút từ một IP).
  • Tích hợp AWS Shield để chống lại các cuộc tấn công lớn hơn.

🚨 3.3. Chặn bot xấu (Bad Bots) thu thập dữ liệu

Một số bot tự động vào website của bạn để copy nội dung hoặc đánh cắp dữ liệu.

🔴 Ví dụ:

  • Một trang đối thủ muốn copy danh sách sản phẩm của bạn.
  • Hacker dùng bot để thử hàng triệu mật khẩu trên trang đăng nhập.

Cách AWS WAF bảo vệ:

  • Dùng AWS Managed Rule "Bot Control" để tự động nhận diện và chặn bot xấu.
  • Chỉ cho phép trình duyệt hợp lệ (Chrome, Firefox, Safari) truy cập.

🚨 3.4. Chặn request từ quốc gia không mong muốn (Geo-blocking)

Bạn chỉ muốn khách hàng từ Việt Nam và Mỹ có thể truy cập, còn những quốc gia khác bị chặn.

Cách AWS WAF bảo vệ:

  • Tạo Geo-blocking rule để chặn toàn bộ request từ các quốc gia khác.

🔧 Ví dụ rule:

  • ALLOW: Vietnam (VN), United States (US).
  • BLOCK: China (CN), Russia (RU), North Korea (KP).

4. Cách triển khai AWS WAF đơn giản

🔹 Bước 1: Tạo WebACL (Web Access Control List)

  1. Truy cập AWS WAF Console.
  2. Nhấn Create WebACL.
  3. Chọn CloudFront, ALB, API Gateway làm mục tiêu bảo vệ.

🔹 Bước 2: Thêm các quy tắc bảo vệ (Rules)

  • 📌 Chặn SQL Injection & XSS → Thêm AWS Managed Rules.
  • 📌 Giới hạn số request từ một IP → Thêm Rate-based Rule.
  • 📌 Chặn request từ bot xấu → Thêm Bot Control Rule.

🔹 Bước 3: Kiểm tra & kích hoạt WebACL

  • Gán WebACL vào CloudFront, ALB hoặc API Gateway.
  • Theo dõi log bằng AWS CloudWatch để kiểm tra request nào bị chặn.

5. Ví dụ cụ thể về AWS WAF Rules

5.1. Giới hạn request từ một IP (Rate-Based Rule)

Chặn IP nào gửi hơn 100 request trong 5 phút:

{
  "RateBasedRule": {
    "RateLimit": 100,
    "MatchConditions": [
      { "IPMatch": { "SourceIP": "ALL" } }
    ],
    "Action": { "Type": "BLOCK" }
  }
}

🔹 Khi nào dùng?

  • Chống DDoS Layer 7.
  • Ngăn chặn spam bot.

5.2. Chặn request chứa SQL Injection

Chặn request nếu có các từ khóa "SELECT", "DROP", "INSERT", "DELETE":

{
  "Conditions": {
    "SQLiMatchStatement": {
      "FieldToMatch": { "QueryString": {} }
    }
  },
  "Action": { "Type": "BLOCK" }
}

🔹 Khi nào dùng?

  • Bảo vệ form đăng nhập, tìm kiếm, đặt hàng.

6. Giám sát và Logging trong AWS WAF

Để biết request nào bị chặn, bạn có thể bật AWS WAF Logs:

  • AWS CloudWatch Metrics → Giám sát request bị chặn.
  • Amazon S3 Logs → Lưu toàn bộ request bị chặn để kiểm tra chi tiết.

🔹 Ví dụ tình huống:

  • Nếu thấy nhiều request bị chặn từ một IP, bạn có thể thêm IP đó vào blocklist.
  • Nếu thấy nhiều request bị chặn do SQL Injection, bạn có thể kiểm tra lỗ hổng trên website.

7. Tổng kết

💡 AWS WAF là một giải pháp bảo mật quan trọng giúp bảo vệ website và API khỏi các tấn công phổ biến.

Chặn SQL Injection, XSS, Bad Bots.
Bảo vệ chống DDoS Layer 7, giới hạn request từ IP xấu.
Lọc request theo quốc gia, giám sát với CloudWatch & Logging.

🔥 Bạn có thể thiết lập AWS WAF dễ dàng chỉ trong vài bước để bảo vệ hệ thống của mình ngay hôm nay! 🚀


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí