Gói miễn phí của Cloudflare có tính năng bảo mật mạnh mẽ cho WordPress, tôi rất khuyên dùng nếu bạn sử dụng dịch vụ proxy của nó (bạn cần bật đám mây vàng trong DNS của Cloudflare lên thì các tính năng dưới đây mới có tác dụng).
Lưu ý: Bạn không bắt buộc phải dùng Cloudflare thì mới dùng được wpsila, hai cái này độc lập với nhau. Tuy nhiên việc bổ sung thêm các tính năng của Cloudflare sẽ giúp trang WordPress của bạn an toàn hơn.
Quan trọng: Khi sử dụng Cloudflare proxy (bật đám mây vàng) kết hợp với Caddy Server thì bạn cần phải để cài đặt SSL/TLS mode là Full (Strict) để tránh vòng lặp vô tận (chuyển hướng quá nhiều). Cách làm như sau:
Bạn truy cập vào tên miền trên Cloudflare, rồi vào SSL/TLS > Overview
- Click nút Configure
- Chọn Full (Strict) rồi nhấn Save để lưu tùy chọn này.
Tiếp theo: Truy cập vào tên miền của bạn trên Cloudflare, nhìn sang cột trái, chọn Security > Security rules > Create rule.
Đây chính là nơi ta tạo ra các quy tắc để chống lại các cuộc tấn công mạng (vốn rất phổ biến hiện nay, ngay cả khi website của bạn không nổi tiếng).
Quy tắc 1: Bảo vệ trang đăng nhập & trang admin
Trang đăng nhập của WordPress nằm ở địa chỉ:
ten-mien-cua-ban.com/wp-login.php
còn trang admin của bạn nằm ở địa chỉ:
ten-mien-cua-ban.com/wp-admin
Kẻ tấn công rất thường xuyên tấn công trang đăng nhập và trang quản trị này.
Chúng ta sẽ thiết lập rule để chống lại các bot tự động truy cập vào hai địa chỉ trên.
Create rule > Custom rules
Chỗ Rule name (required) đặt tên tùy ý, nhưng nên là gợi ý để bạn biết ý nghĩa của nó, ví dụ: Hạn chế bot vào trang login và admin.
Bên dưới bạn click vào Edit expression để thêm mã:

Một ô nhập liệu mở ra, bạn paste mã dưới đây vào:
(http.request.uri.path contains "/wp-login.php") or (http.request.uri.path contains "/wp-admin" and not http.request.uri.path contains "/wp-admin/admin-ajax.php" and not http.request.uri.path contains "/wp-admin/css/" and not http.request.uri.path contains "/wp-admin/js/" and not http.request.uri.path contains "/wp-admin/images/")
Kéo xuống dưới, ở phần Choose action bạn chọn Managed Challenge
Cuối cùng nhấn nút Deploy để triển khai chính thức:
Ý nghĩa là nếu có truy cập trang đăng nhập hoặc admin, Cloudflare sẽ thử thách xem nó có phải là bot không, nếu là bot thì chặn luôn.
Nếu bạn làm đúng, lúc bạn vào trang đăng nhập WordPress thì Cloudflare sẽ kiểm tra trước khi cho vào (khoảng 2 – 3 giây):

Quy tắc 2: Chặn truy cập các file nhạy cảm
Các file này thường chứa dữ liệu nhạy cảm của website và cũng nên chặn truy cập chúng luôn. Danh sách này khá dài.
- /xmlrpc.php
- /wp-config.php
- .htaccess
- /.env
- /.git/
- /wp-includes/wlwmanifest.xml
- .log
- .sql
- .bak
- .old
- readme.html
- license.txt
- .git
Để triển khai rule này bạn làm như sau:
- Tạo một rule mới bằng cách chọn Create rule > Custom rules
- Rule name (required) nhập tùy ý, ví dụ Chặn truy cập các file nhạy cảm
Kéo xuống dưới một chút, bạn cũng click vào Edit expression rồi paste mã dưới đây vào:
(http.request.uri.path contains "/xmlrpc.php") or (http.request.uri.path contains "/wp-config.php") or (http.request.uri.path contains ".htaccess") or (http.request.uri.path contains "/.env") or (http.request.uri.path contains "/.git/") or (http.request.uri.path contains "/wp-includes/wlwmanifest.xml") or (ends_with(http.request.uri.path, ".log")) or (ends_with(http.request.uri.path, ".sql")) or (ends_with(http.request.uri.path, ".bak")) or (ends_with(http.request.uri.path, ".old")) or (ends_with(http.request.uri.path, "readme.html")) or (ends_with(http.request.uri.path, "license.txt")) or (ends_with(http.request.uri.path, ".git"))
Kéo tiếp xuống dưới, ở phần Choose action bạn chọn Block
Cuối cùng bạn nhấn Deploy để triển khai.
Nói riêng về trường hợp chặn /xmlrpc.php: Nó là file cần dùng nếu bạn sử dụng plugin Jetpack hoặc phải đăng nhập WordPress qua app trên di động. Cả hai cái này đều không có quá nhiều người cần, và vì rủi ro cao của xmlrpc.php nên giải pháp chặn thường được ưu tiên hơn. Tuy nhiên nếu bạn bắt buộc cần nó, ví dụ bạn phải dùng plugin Jetpack chẳng hạn, thì bạn cần bỏ chặn file này đi, khi đó bạn dùng mã này:
(http.request.uri.path contains "/wp-config.php") or (http.request.uri.path contains ".htaccess") or (http.request.uri.path contains "/.env") or (http.request.uri.path contains "/.git/") or (http.request.uri.path contains "/wp-includes/wlwmanifest.xml") or (ends_with(http.request.uri.path, ".log")) or (ends_with(http.request.uri.path, ".sql")) or (ends_with(http.request.uri.path, ".bak")) or (ends_with(http.request.uri.path, ".old")) or (ends_with(http.request.uri.path, "readme.html")) or (ends_with(http.request.uri.path, "license.txt")) or (ends_with(http.request.uri.path, ".git"))
Vậy là xong, mặc dù phần này hơi kỹ thuật, nhưng bạn chỉ cần bỏ ra 10 phút là website của bạn an toàn hơn rất nhiều, và bạn cũng hiếm khi phải quay lại điều chỉnh phần này. Rất đáng để làm.


