Tổng quan chiến lược bảo vệ
Áp dụng cho mọi website trên Cloudflare. Cấu hình theo thứ tự: Bot Fight Mode → WAF → Rate Limiting.
| # | Tính năng | Mục đích | Ưu tiên | Plan |
|---|---|---|---|---|
| 01 | Bot Fight Mode Bật 1 lần, không cần viết rule |
Chặn bot scraping, fake traffic, spam tự động |
Cao | Free |
| 02 | WAF — Block quốc gia Lọc traffic từ vùng nguy hiểm |
Giảm 60-80% attack surface ngay lập tức |
Cao | Free |
| 03 | WAF — Block bad UA Lọc tool tự động, scanner |
Chặn Nuclei, sqlmap, python script công khai |
Cao | Free |
| 04 | WAF — Protect /api/* Bảo vệ endpoint nhạy cảm |
Thêm friction cho attacker vào API core |
Trung bình | Free |
| 05 | Rate Limiting — API Giới hạn request/IP/phút |
Chặn brute force, API abuse từ 1 IP |
Trung bình | Free |
| 06 | Under Attack Mode Chỉ bật khi có sự cố |
Mua thời gian xử lý khi bị DDoS thật |
Tình huống | Free |
✅ Thứ tự cấu hình đề xuất: Bot Fight Mode → WAF Rule #1 (country block) → WAF Rule #2 (bad UA) → Rate Limiting → xong. Các rule còn lại thêm dần tùy nhu cầu.
Truy cập Cloudflare Dashboard
Bước cơ bản để vào đúng chỗ cấu hình.
🔗 Đường dẫn vào Security settings
1.Vào dash.cloudflare.com → đăng nhập
2.Chọn tên domain cần cấu hình trong danh sách
3.Menu trái → click Security
4.Từ đây có thể truy cập:
WAF / Bots / SettingsWAF Custom Rules
Free plan có 5 rules. Sắp xếp theo thứ tự ưu tiên từ trên xuống — Cloudflare evaluate rule #1 trước.
→Cách vào: Security → WAF → Custom rules → Create rule
Rule 01
Block quốc gia có nguy cơ cao
BLOCK
Free
Loại bỏ phần lớn traffic tấn công ngay từ đầu. CN, RU, KP là nguồn chiếm ~60% DDoS và brute force toàn cầu. Không ảnh hưởng user VN.
(ip.geoip.country in {"CN" "RU" "KP" "IR" "BY"})
📋 Hướng dẫn tạo rule này
1.Security → WAF → Custom rules → Create rule
2.Rule name:
Block high-risk countries3.Click "Edit expression" (chuyển sang chế độ text), dán expression ở trên vào
4.Action: chọn Block
5.Click Deploy
⚠️ Nếu có đối tác hoặc traffic hợp lệ từ TQ → đổi action sang JS Challenge thay vì Block
Rule 02
Block scanner và bad User-Agent
BLOCK
Free
Các tool dưới đây là scanner/attacker phổ biến nhất: Nuclei (vuln scanner), sqlmap (SQL injection), python-requests/curl không có UA chuẩn thường là script tấn công.
(http.user_agent contains "python-requests")
or (http.user_agent contains "Go-http-client")
or (http.user_agent contains "Nuclei")
or (http.user_agent contains "sqlmap")
or (http.user_agent contains "zgrab")
or (http.user_agent eq "")
📋 Hướng dẫn tạo rule này
1.Tương tự Rule 01 → Create rule
2.Rule name:
Block bad user agents3.Dán expression, Action: Block → Deploy
⚠️ Dòng
http.user_agent eq "" block request không có UA — phần lớn là bot. Nhưng nếu site có internal API gọi không kèm UA → thêm IP whitelist trước
Rule 03
Bảo vệ /api/* bằng JS Challenge
JS CHALLENGE
Free
Thêm friction cho mọi request vào API endpoint từ quốc gia rủi ro cao. Người dùng thật (có browser) sẽ pass trong ~2 giây. Bot không có JS engine bị chặn.
(http.request.uri.path starts_with "/api/")
and (ip.geoip.country in {"CN" "RU" "KP" "IR"})
and (not cf.bot_management.verified_bot)
📋 Hướng dẫn
1.Rule name:
Challenge API from risky countries2.Action: JS Challenge (không phải Block — để không ảnh hưởng nếu có request hợp lệ)
3.Deploy → sau 24h xem log, nếu không có false positive thì đổi sang Block
Rule 04
Block Threat Score cao (Tor, proxy)
CAPTCHA
Free
Cloudflare tự chấm điểm threat score (0-100) cho mỗi IP dựa trên lịch sử. Score > 10 là proxy/VPN đáng ngờ. Score > 50 là đã có hành vi tấn công trước đó.
(cf.threat_score gt 10)
📋 Hướng dẫn
1.Rule name:
Managed challenge high threat score2.Action: Managed Challenge (CAPTCHA tự động của Cloudflare)
3.Bắt đầu với ngưỡng
gt 10. Nếu block nhiều false positive thì tăng lên gt 25
Rule 05
Whitelist IP nội bộ (Skip all rules)
SKIP
Free
Đây là rule quan trọng nhất — phải để ở vị trí số 1 (kéo lên đầu). IP nội bộ sẽ bypass toàn bộ rule, tránh tự block chính mình khi dev/test.
(ip.src in {1.2.3.4 5.6.7.8})
📋 Hướng dẫn
1.Kiểm tra IP hiện tại tại whatismyip.com
2.Thay
1.2.3.4 bằng IP thật. Thêm nhiều IP cách nhau bởi dấu cách trong {}3.Action: Skip → tích All remaining custom rules
4.Sau khi tạo: kéo rule này lên vị trí số 1 trong danh sách
🔴 Nếu IP công ty là dynamic (thay đổi mỗi ngày) thì bỏ rule này. Thay vào đó dùng Security Level = "Essentially Off" cho IP range của ISP, hoặc dùng Cloudflare Access.
💡 Thứ tự rule trong Cloudflare WAF rất quan trọng. Rule ở trên được evaluate trước. Sau khi tạo đủ, kéo thả để sắp xếp: Whitelist (1) → Block country (2) → Block bad UA (3) → Challenge API (4) → Threat score (5).
Rate Limiting Rules
Giới hạn số request per IP theo thời gian. Vào: Security → WAF → Rate limiting rules.
→Cách vào: Security → WAF → Rate limiting rules → Create rule
RL 01
Giới hạn API endpoint chung
BLOCK
Free
Chặn script tự động gọi API liên tục. 100 req/phút là ngưỡng an toàn — user thật hiếm khi vượt, nhưng bot thường gọi 1000+ req/phút.
Cấu hình
Field
URI Path
Operator
starts with
Value
/api/
Characteristic
IP Address
Requests
100
Period
1 minute
Action
Block
Duration
10 minutes
📋 Hướng dẫn tạo Rate Limit rule
1.Security → WAF → Rate limiting rules → Create rule
2.Phần "When incoming requests match": Field =
URI Path, Operator = starts with, Value = /api/3.Phần "Rate":
100 requests per 1 minute4.Phần "Then take action": Block, Duration:
10 minutes5.Click Deploy
RL 02
Giới hạn endpoint đăng nhập
BLOCK
Free
Endpoint đăng nhập là mục tiêu phổ biến nhất của brute force. 5 lần thử/phút là đủ cho người dùng thật — bot thường gửi hàng trăm request/phút.
Cấu hình
URI Path
/login
Characteristic
IP Address
Requests
5
Period
1 minute
Action
Block
Duration
1 hour
⚠️ Thay
/login bằng path đăng nhập thật của website bạn. Ví dụ: /wp-login.php, /admin/login, /auth/signin.Bot Fight Mode
Không cần viết rule. Bật 1 lần là xong. Vào: Security → Bots.
BOT
Bật Bot Fight Mode
Free
Cloudflare dùng ML để nhận diện bot. Tự động block các request từ bot rõ ràng — không cần viết rule thêm. Googlebot và Bingbot được whitelist sẵn.
📋 Hướng dẫn bật
1.Security → Bots
2.Tìm dòng "Bot Fight Mode" → toggle sang ON
3.Xong. Không cần cấu hình thêm gì.
✅ Googlebot và Bingbot được Cloudflare whitelist sẵn dưới dạng "Verified Bots" — sẽ không bị block. Bật Bot Fight Mode an toàn cho mọi website.
⚠️ Nếu có webhook bên thứ 3 gửi POST vào server (Stripe, Google, v.v.) → tạo WAF Skip rule cho IP của họ trước khi bật, để không bị challenge.
Under Attack Mode
Tình huống khẩn cấp. Không bật thường xuyên. Vào: Security → Settings → Security Level.
UAM
Bật Under Attack Mode khi bị DDoS
Free
Khi bật, mọi visitor phải chạy JS challenge (~5 giây) trước khi vào site. Bot không có browser thật bị chặn 100%. Dùng khi server đã quá tải, cần mua thời gian.
📋 Hướng dẫn bật
1.Security → Settings
2.Phần "Security Level" → chọn "I'm Under Attack!"
3.Save → có hiệu lực ngay lập tức
4.Sau khi xử lý xong tấn công → đổi lại về "Medium" hoặc "High"
Quy trình xử lý khi bị tấn công
Bật Under Attack Mode ngay — mua thời gian cho server
Vào Analytics → Security — xem IP/quốc gia đang tấn công nhiều nhất
Tạo WAF rule block quốc gia đó nếu chưa có — giảm tải ngay
Check server log — xem endpoint nào bị hit nhiều → thêm Rate Limit
Sau 30-60 phút — tắt Under Attack Mode, kiểm tra các rule đã đủ chưa
🔴 Không bật lâu dài. Under Attack Mode break hoàn toàn: API client không có browser, app mobile gọi API, webhook từ bên thứ 3. Chỉ dùng tối đa 1-2 giờ khi có sự cố.