❤️ AZDIGI chính thức cập nhật hệ thống blog mới hoàn chỉnh. Tuy nhiên có thể một số bài viết bị sai lệch hình ảnh, hãy ấn nút Báo cáo bài viết ở cuối bài để AZDIGI cập nhật trong thời gian nhanh nhất. Chân thành cám ơn.
Nếu website của bạn đang chạy trên internet, nó luôn là mục tiêu của các cuộc tấn công. SQL injection, XSS, brute force, bot quét lỗ hổng… những thứ này xảy ra hàng ngày, không cần website bạn nổi tiếng hay có giá trị gì đặc biệt. Tin tốt là Cloudflare có sẵn một lớp bảo vệ khá mạnh gọi là WAF, và trong bài này mình sẽ hướng dẫn bạn cách sử dụng nó.
WAF là gì?
WAF (Web Application Firewall) là tường lửa dành riêng cho ứng dụng web. Khác với firewall truyền thống hoạt động ở tầng network (chặn port, chặn IP), WAF hoạt động ở tầng application, tức là nó hiểu được nội dung của HTTP request.
Khi một request đi qua Cloudflare, WAF sẽ kiểm tra nội dung request đó trước khi chuyển tiếp về server của bạn. Nếu phát hiện dấu hiệu tấn công (ví dụ một đoạn SQL injection trong URL, hay một payload XSS trong form), WAF sẽ chặn request đó ngay lập tức. Server gốc của bạn không bao giờ nhận được request xấu này.

Trong Cloudflare dashboard, bạn sẽ thấy mục Security > WAF với các thành phần chính:
- Managed Rules, bộ rules do Cloudflare viết sẵn, tự động cập nhật
- Custom Rules, rules do bạn tự viết theo nhu cầu
- Rate Limiting Rules, giới hạn số lượng request từ một IP
Nếu bạn từng dùng Firewall Rules (mục cũ trong Cloudflare), thì nó đã được deprecated và gộp vào WAF Custom Rules. Giao diện mới, chức năng tương tự nhưng mạnh hơn.
Managed Rules
Managed Rules là bộ rules được Cloudflare xây dựng và duy trì. Bạn không cần viết gì cả, chỉ cần bật lên là có ngay một lớp bảo vệ chống lại các kiểu tấn công phổ biến.

Có ba bộ rules chính:
Cloudflare Managed Ruleset
Đây là bộ rules do đội ngũ Cloudflare viết riêng, dựa trên các mối đe dọa thực tế mà họ quan sát được trên mạng lưới toàn cầu. Bộ này bao gồm rules chống các lỗ hổng phổ biến của WordPress, Joomla, PHP, và nhiều ứng dụng web khác.
Cloudflare OWASP Core Ruleset
Bộ rules dựa trên OWASP ModSecurity Core Rule Set. Nó tính điểm cho mỗi request dựa trên các dấu hiệu đáng ngờ. Nếu tổng điểm vượt ngưỡng (threshold), request sẽ bị chặn. Bộ này rất tốt trong việc phát hiện SQL injection, XSS, và các kiểu tấn công trong danh sách OWASP Top 10.
Cloudflare Exposed Credentials Check
Bộ rules kiểm tra xem thông tin đăng nhập (username/password) có nằm trong danh sách bị lộ (data breach) hay không. Nếu phát hiện, Cloudflare sẽ cảnh báo hoặc chặn tùy cấu hình.
Lưu ý: Managed Rules trên gói Free khá giới hạn. Bạn chỉ có thể bật/tắt ở mức cơ bản. Gói Pro trở lên mới cho phép tùy chỉnh chi tiết từng rule, thay đổi action, và override theo nhu cầu.
Custom Rules
Custom Rules là nơi bạn tự viết các rules bảo vệ theo nhu cầu riêng. Đây là phần mạnh nhất và linh hoạt nhất của WAF vì bạn có toàn quyền quyết định điều kiện lọc và hành động xử lý.

Mỗi custom rule gồm hai phần:
- Filter expression, điều kiện để match request (dựa trên IP, quốc gia, URI, user-agent, method…)
- Action, hành động khi request match (Block, Challenge, Log…)
Tạo Custom Rule
Vào Security > WAF > Custom rules, bấm Create rule. Bạn sẽ thấy giao diện cho phép chọn điều kiện bằng visual builder hoặc viết expression trực tiếp.

Filter Expression Syntax
Cloudflare sử dụng Wirefilter syntax cho các expression. Dưới đây là một số trường (field) hay dùng:
ip.src, địa chỉ IP nguồnip.geoip.country, mã quốc gia (ISO 3166-1 alpha-2)http.request.uri.path, đường dẫn URIhttp.request.method, HTTP method (GET, POST…)http.user_agent, user-agent stringhttp.host, hostnamecf.threat_score, điểm đe dọa Cloudflare gán cho IP (0-100)
Các toán tử phổ biến:
eq, bằngne, không bằngcontains, chứa chuỗiin, nằm trong danh sáchnot,and,or, logic operators
Ví dụ thực tế
Chặn truy cập từ một số quốc gia:
(ip.geoip.country in {"CN" "RU" "KP"})
Action: Block
Chặn bot dựa trên user-agent:
(http.user_agent contains "SemrushBot") or (http.user_agent contains "AhrefsBot") or (http.user_agent contains "MJ12bot")
Action: Block
Bảo vệ wp-login.php khỏi brute force:
(http.request.uri.path eq "/wp-login.php") and (http.request.method eq "POST") and (not ip.geoip.country eq "VN")
Action: Managed Challenge
Rule này chặn mọi POST request đến wp-login.php từ ngoài Việt Nam. Nếu bạn chỉ quản trị từ VN thì đây là cách đơn giản và hiệu quả để chống brute force.
Chặn truy cập vào wp-admin nhưng cho phép admin-ajax.php:
(http.request.uri.path contains "/wp-admin") and (not http.request.uri.path contains "/wp-admin/admin-ajax.php") and (not ip.geoip.country eq "VN")
Action: Block
Quan trọng: Nếu bạn chặn /wp-admin, nhớ exclude /wp-admin/admin-ajax.php vì nhiều plugin WordPress sử dụng endpoint này ở frontend. Chặn nó có thể làm hỏng chức năng của website.
Các Action có thể dùng
Khi một request match với filter expression, bạn có thể chọn các action sau:
- Block, chặn hoàn toàn, trả về trang lỗi Cloudflare
- JS Challenge, yêu cầu trình duyệt chạy một đoạn JavaScript để xác minh. Bot đơn giản sẽ không qua được
- Managed Challenge, Cloudflare tự chọn cách challenge phù hợp (có thể là JS challenge, CAPTCHA, hoặc tự động pass nếu đủ tin cậy). Đây là lựa chọn được khuyến nghị
- Skip, bỏ qua các rules khác cho request này. Dùng khi bạn muốn whitelist
- Log, chỉ ghi log, không chặn. Hữu ích khi bạn muốn test rule trước khi áp dụng thật
Mẹo: Khi tạo rule mới, nên dùng action Log trước để theo dõi vài ngày. Nếu không có false positive (chặn nhầm người dùng thật), mới chuyển sang Block hoặc Managed Challenge.
Rate Limiting Rules
Rate Limiting giúp bạn giới hạn số lượng request từ một nguồn trong một khoảng thời gian nhất định. Đây là vũ khí hiệu quả chống DDoS tầng application, brute force, và các bot quét trang liên tục.

Để tạo rate limiting rule, vào Security > WAF > Rate limiting rules. Bạn sẽ cần cấu hình:
- Filter expression, áp dụng rate limit cho request nào (giống custom rules)
- Requests, số request tối đa được phép
- Period, trong khoảng thời gian bao lâu (10s, 1 phút, 10 phút…)
- Action, hành động khi vượt ngưỡng (Block, Challenge, Log…)
- Duration, thời gian áp dụng action (10s, 1 phút, 1 giờ…)
Ví dụ: Giới hạn POST request đến wp-login.php, tối đa 5 request trong 1 phút. Nếu vượt quá, block IP đó trong 10 phút.
(http.request.uri.path eq "/wp-login.php") and (http.request.method eq "POST")
- Requests: 5
- Period: 1 minute
- Action: Block
- Duration: 10 minutes
WAF Analytics
Sau khi cấu hình WAF, bạn sẽ muốn theo dõi xem nó hoạt động thế nào. Vào Security > Overview để xem tổng quan các sự kiện bảo mật.
Tại đây bạn có thể xem:
- Tổng số request bị chặn/challenge trong một khoảng thời gian
- Request bị chặn bởi rule nào (Managed Rules, Custom Rules, hay Rate Limiting)
- Top quốc gia bị chặn
- Top IP bị chặn
- Chi tiết từng request: IP, URI path, user-agent, action đã áp dụng
Đây là nơi bạn kiểm tra xem có bị false positive không. Nếu thấy request từ người dùng thật bị chặn, bạn cần điều chỉnh rule cho phù hợp.
Free plan vs Pro/Business
WAF có sẵn trên mọi gói Cloudflare, nhưng mức độ chi tiết và số lượng rules khác nhau đáng kể:
- Free, 5 custom rules, managed rules cơ bản (chỉ bật/tắt, không tùy chỉnh chi tiết), 1 rate limiting rule
- Pro ($20/tháng), 20 custom rules, tùy chỉnh managed rules chi tiết (override action từng rule), 2 rate limiting rules, WAF analytics đầy đủ hơn
- Business ($200/tháng), 100 custom rules, full managed rules bao gồm OWASP ruleset tùy chỉnh, 5 rate limiting rules, advanced analytics
- Enterprise, unlimited rules, custom rulesets, dedicated support
Với đa số website cá nhân và doanh nghiệp nhỏ, gói Free với 5 custom rules là đủ dùng. Bạn chỉ cần tạo vài rule chặn quốc gia, bảo vệ wp-login, và chặn bot xấu là đã cover được phần lớn các mối đe dọa phổ biến.
Tổng kết
WAF là một trong những tính năng giá trị nhất mà Cloudflare cung cấp. Chỉ cần dành 15 phút cấu hình vài custom rules cơ bản, bạn đã có thể chặn được phần lớn các cuộc tấn công tự động nhắm vào website.
Tóm lại những gì bạn nên làm:
- Bật Managed Rules để có lớp bảo vệ cơ bản
- Tạo Custom Rules chặn bot xấu và bảo vệ trang đăng nhập
- Cấu hình Rate Limiting cho các endpoint nhạy cảm
- Theo dõi WAF Analytics thường xuyên để phát hiện false positive
- Test rule mới bằng action Log trước khi chuyển sang Block
Trong bài tiếp theo, mình sẽ hướng dẫn bạn các tính năng bảo mật khác của Cloudflare. Hẹn gặp lại!
Có thể bạn cần xem thêm
- Hướng dẫn chống DDoS và cấu hình bảo mật trên Cloudflare
- Cloudflare Rules - Page Rules, Redirect Rules và Transform Rules
- Cloudflare Workers - Chạy code serverless trên edge
- CloudFlare là gì? Cách kết nối CloudFlare với Website
- WAF là gì? - Ứng dụng bảo vệ website
- Hướng dẫn tối ưu WordPress với WP Rocket, Cloudflare APO và Cache Rules
Về tác giả
Trần Thắng
Chuyên gia tại AZDIGI với nhiều năm kinh nghiệm trong lĩnh vực web hosting và quản trị hệ thống.