Trong series: Bảo mật
  1. 1 Mã độc là gì? Phân loại, đặc tính và cách phòng tránh
  2. 2 DDos là gì? Dấu hiệu, xử lý và cách phòng chống hiệu quả
  3. 3 Phishing là gì? Nhận diện và phòng chống tấn công lừa đảo trực tuyến
  4. 4 DNS Sinkhole là gì? Ứng dụng và cách dùng kỹ thuật DNS Sinkhole
  5. 5 OAuth 2.0 là gì? Ủy quyền truy cập và đăng nhập bằng Google/Facebook
  6. 6 Trojan là gì? Những thông tin cơ bản về mã độc Trojan
  7. 7 Zero Trust Là Gì? Mô Hình Bảo Mật 'Không Tin Tưởng Ai'
  8. 8 VPN là gì? Mạng riêng ảo, WireGuard và OpenVPN
  9. 9 MFA Là Gì? So Sánh MFA vs 2FA và Các Phương Thức Xác Thực
  10. 10 Tường lửa là gì? Vai trò và chức năng trong bảo mật mạng
  11. 11 SQL Injection là gì? Tấn công cơ sở dữ liệu và cách phòng chống
  12. 12 Ransomware là gì? Mã độc mã hóa tống tiền và cách phòng chống
  13. 13 WAF Là Gì? Web Application Firewall Bảo Vệ Ứng Dụng Web
  14. 14 XSS là gì? Cross-Site Scripting và cách phòng chống hiệu quả
✦ Tóm tắt nhanh
WAF (Web Application Firewall) là lớp bảo vệ Layer 7 chống SQLi, XSS, LFI và các tấn công ứng dụng web. Tìm hiểu cơ chế, ModSecurity, AWS WAF, Cloudflare WAF và các chế độ triển khai.
Bài này thế nào?

WAF Là Gì? Tại Sao Cần Dùng?

WAF (Web Application Firewall) là thiết bị bảo mật hoạt động ở Layer 7 của mô hình OSI, giám sát và lọc HTTP/HTTPS traffic giữa internet và ứng dụng web.

Không như firewall truyền thống chỉ xem xét IP và port, WAF hiểu được ngữ nghĩa của HTTP request — phân tích URL, header, cookie, query string, và request body để phát hiện attack pattern.

Tại sao cần WAF?

Web application là mục tiêu tấn công số một. Theo báo cáo Verizon DBIR 2024, hơn 40% data breach liên quan đến web application. OWASP Top 10 — danh sách 10 lỗ hổng web phổ biến nhất — đều có thể được WAF phát hiện và ngăn chặn.

WAF vs Firewall vs IDS/IPS:

Loại Layer Phân tích Phát hiện
Network Firewall L3/L4 IP, Port, Protocol IP block, port filter
IDS/IPS L3–L7 Packet pattern Network intrusion
WAF L7 HTTP payload SQLi, XSS, LFI, RCE

Cơ Chế Phát Hiện Của WAF

1. Signature-based detection

So sánh request với database signature pattern đã biết. Nhanh, ít false positive, nhưng chỉ phát hiện known attack.

Request: GET /users?id=1' OR '1'='1
WAF rule: matches SQL injection pattern → BLOCK

2. Anomaly-based detection (Rule scoring)

Mỗi request được cho điểm bất thường. Vượt ngưỡng → block. Ít bị bypass hơn signature đơn thuần.

3. ML-based / Behavioral detection

Học baseline traffic bình thường, phát hiện deviation. Hiệu quả với zero-day và unknown attack, nhưng phức tạp hơn để tune.

OWASP Core Rule Set (CRS) là bộ rule chuẩn mở rộng nhất cho WAF, covering:

  • SQL Injection (REQUEST-942)
  • XSS (REQUEST-941)
  • Local File Inclusion (REQUEST-930)
  • Remote Code Execution (REQUEST-932)
  • Scanner detection (REQUEST-913)

XSS là gì? Cross-site scripting attack và phòng chống

ModSecurity Và OWASP CRS Thực Tế

ModSecurity là WAF engine open-source được nhúng vào NGINX hoặc Apache. Kết hợp với OWASP CRS, đây là giải pháp WAF tự host phổ biến nhất.

Cài đặt ModSecurity với NGINX:

Bash
1# Cài modsecurity và nginx connector
2apt-get install libmodsecurity3 libmodsecurity-dev
3git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx
4# Build nginx với modsecurity module

Cấu hình NGINX:

nginx
1load_module modules/ngx_http_modsecurity_module.so;
2
3server {
4    listen 443 ssl;
5    modsecurity on;
6    modsecurity_rules_file /etc/nginx/modsec/main.conf;
7}

Ví dụ ModSecurity rule — phát hiện SQL injection:

SecRule ARGS "@detectSQLi" \
    "id:942100,\
    phase:2,\
    block,\
    capture,\
    t:none,t:utf8toUnicode,t:urlDecodeUni,t:removeNulls,t:removeComments,t:compressWhitespace,\
    msg:'SQL Injection Attack Detected via libinjection',\
    logdata:'Matched Data: %{TX.0} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',\
    tag:'application-multi',\
    tag:'language-multi',\
    tag:'platform-multi',\
    tag:'attack-sqli',\
    tag:'OWASP_CRS',\
    tag:'capec/1000/152/248/66',\
    tag:'PCI/6.5.2',\
    ver:'OWASP_CRS/3.3.4',\
    severity:'CRITICAL',\
    setvar:'tx.sql_injection_score=+%{tx.critical_anomaly_score}',\
    setvar:'tx.anomaly_score_pl1=+%{tx.critical_anomaly_score}'"

Mỗi rule có: id, phase (giai đoạn xử lý), block/detect, transform chain, message, tag, severity, và anomaly score action.

Các WAF Phổ Biến Trên Thị Trường

AWS WAF:

  • Managed service, tích hợp với CloudFront, ALB, API Gateway
  • Managed rule groups sẵn có (AWS Managed Rules, Bot Control, Fraud Control)
  • Console hoặc Terraform để quản lý rule

API Gateway là gì? Kiến trúc và tích hợp WAF

hcl
 1resource "aws_wafv2_web_acl" "example" {
 2  name  = "example-waf"
 3  scope = "REGIONAL"
 4
 5  default_action { allow {} }
 6
 7  rule {
 8    name     = "AWSManagedRulesCommonRuleSet"
 9    priority = 1
10    override_action { none {} }
11    statement {
12      managed_rule_group_statement {
13        name        = "AWSManagedRulesCommonRuleSet"
14        vendor_name = "AWS"
15      }
16    }
17    visibility_config {
18      cloudwatch_metrics_enabled = true
19      metric_name                = "CommonRuleSetMetric"
20      sampled_requests_enabled   = true
21    }
22  }
23
24  visibility_config {
25    cloudwatch_metrics_enabled = true
26    metric_name                = "ExampleWAF"
27    sampled_requests_enabled   = true
28  }
29}

Cloudflare WAF: Managed + custom rule, dễ dùng, tích hợp CDN và DDoS protection.

ModSecurity (self-hosted): Open-source, full control, chi phí thấp nhưng cần tự maintain.

WAF Bypass Techniques (Giáo Dục)

Hiểu bypass techniques giúp bạn tune WAF tốt hơn và hiểu giới hạn của nó.

URL Encoding bypass:

# Payload gốc (bị block):
' OR '1'='1

# URL encoded (có thể bypass WAF không decode đúng):
%27%20OR%20%271%27%3D%271

Case variation:

SQL
1
2> [SQL Injection là gì? Cách WAF ngăn chn](/sql-injection-la-gi/)
3
4
5# Original (blocked):
6SELECT * FROM users
7
8# Bypass attempt:
9SeLeCt * FrOm UsErS

WAF hiện đại chống bypass bằng cách: normalization trước khi match (lowercase, URL decode, HTML decode nhiều lần), dùng parser-based detection thay vì regex đơn giản, ML để phát hiện evasion pattern.

Lưu ý: Kiến thức bypass chỉ dùng để test WAF của chính bạn (penetration testing) hoặc hiểu để cấu hình WAF tốt hơn.

Chế Độ Triển Khai WAF

Inline (Blocking mode):

  • WAF nằm trực tiếp trong luồng request
  • Block bad request ngay lập tức
  • Rủi ro: misconfiguration → block legitimate user
  • Phù hợp khi đã tune rule kỹ

Monitor (Detection-only mode):

  • WAF log nhưng không block
  • Phù hợp khi mới triển khai, cần quan sát false positive
  • Sau 2–4 tuần monitor, tune rule, rồi chuyển sang blocking

Best practice khi onboard WAF:

  1. Deploy ở monitor mode
  2. Chạy 2–4 tuần, review log hàng ngày
  3. Whitelist false positive (custom rule exclude)
  4. Enable blocking mode cho rule đã verify
  5. Tiếp tục monitor và tune định kỳ

TLS 1.3 là gì? Mã hóa HTTPS nâng cao

Câu hỏi thường gặpQ&A