Tóm lại, trong hướng dẫn này bạn sẽ tìm thấy các dòng lệnh mà qua đó bạn có thể cài đặt và cấu hình Fail2Ban cho WordNhấn. Bảo mật xác thực WordPress và truy vấn bằng brute force của xmlrpc.php.
Blog và trang web được phát triển trên nền tảng WordPress thường là mục tiêu của các cuộc tấn công mạng. Hầu hết các cuộc tấn công đều là tấn công bằng vũ lực và nhắm vào phiên xác thực hoặc khai thác XML-RPC (Gọi thủ tục từ xa bằng XML). May mắn thay, fail2ban là giải pháp bảo mật rất hữu ích cho những tình huống này. Nếu bạn muốn bảo mật một trang web WordPress với fail2ban, hãy làm theo các bước cấu hình trong hướng dẫn này.
Trước hết, hãy đảm bảo rằng bạn có thể truy cập vào máy chủ web thông qua kết nối SSH và ứng dụng fail2ban đã được cài đặt.
Cấu hình Fail2Ban cho WordPress trên Debian
1. Trước hết, bạn cần đảm bảo rằng ứng dụng fail2ban đã được cài đặt và đang chạy trên máy chủ. Chạy dòng lệnh bên dưới:
systemctl status fail2ban
Trong kết quả đầu ra, bạn sẽ thấy nội dung tương tự như thế này:
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-03-11 00:39:32 EET; 6 days ago
Docs: man:fail2ban(1)
Main PID: 917 (fail2ban-server)
Tasks: 17 (limit: 76843)
Memory: 33.2M
CPU: 17min 1.752s
CGroup: /system.slice/fail2ban.service
└─917 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Nếu fail2ban chưa được cài đặt trên máy chủ của bạn, bạn sẽ cần phải cài đặt nó. Chạy dòng lệnh để cài đặt fail2ban trên Debian/Ubuntu:
sudo apt install fail2ban
2. Bước tiếp theo là tạo bộ lọc fail2ban cho WordNhấn. Chạy dòng lệnh trong terminal để tạo và chỉnh sửa bộ lọc wordpress.conf
.
sudo nano /etc/fail2ban/filter.d/wordpress.conf
Trong file wordpress.conf
thiết lập các bộ lọc để xác thực WordPress và cho tập tin xmlrpc.php
, như sau:
[Definition]
failregex = ^<HOST> -.*"(GET|POST).*(/wp-login.php|/xmlrpc.php).*" 200
ignoreregex =
Điều này có nghĩa là bằng bất kỳ phương pháp nào, GET
hoặc POST
, nếu các tệp wp-login.php hoặc xmlrpc.php được truy cập, quy tắc cho fail2ban có thể được tạo. Điều kiện là các tập tin này phải tồn tại và kẻ tấn công có thể truy cập được. Nghĩa là nó sẽ trả về mã 200 (ok) khi được truy cập.
Lưu tập tin /etc/fail2ban/filter.d/wordpress.conf
.
3. Bước tiếp theo là cấu hình “nhà tù” cho WordNhấn. Đây là điểm mà hầu hết người dùng đều cảm thấy bối rối, vì các quy tắc phải được thiết lập khác nhau tùy thuộc vào hệ thống quản lý lưu trữ (nếu có) hoặc cấu hình máy chủ web.
Nếu bạn sử dụng HestiaCP, VestaCP hoặc MyVesta, tạo và chỉnh sửa tập tin /etc/fail2ban/jail.local
.
nano /etc/fail2ban/jail.local
Thêm các dòng dưới đây vào tệp này:
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/domains/*.log #or apache2.
maxretry = 5
findtime = 1800
bantime = 3600
action = hestia[name=WEB] #hestacp action.
Điều chỉnh các thông số trên theo nhu cầu của bạn. Trong cấu hình tôi đưa ra, nếu trong khoảng thời gian 1800 phút có 5 lần thử lặp lại từ cùng một IP, IP đó sẽ bị chặn trong 3600 phút khi sử dụng hành động HestiaCP cho web. (hestia[name=WEB]
). Ở đây bạn sẽ cần trợ giúp tùy thuộc vào hệ thống bạn có trên máy chủ.
Điều này cũng rất quan trọng để "logpath
". Từ các bản ghi này, dữ liệu về hành động sẽ được trích xuất. Hãy đảm bảo vị trí là chính xác.
Nếu bạn không cài đặt hệ thống quản lý, bạn sẽ cần chặn IP bằng fail2ban WordPress được thực hiện trực tiếp thông qua iptables
. Các bước hành động sẽ như sau:
action = iptables-multiport[name=wordpress, port="80,443", protocol=tcp]
Trong ngoặc đơn, thay vì /etc/fail2ban/jail.local
bạn cũng có thể sử dụng một tệp riêng để cấu hình, như: /etc/fail2ban/jail.d/wordpress.conf
.
Sau khi bạn đã thực hiện điều chỉnh, hãy áp dụng những thay đổi.
sudo systemctl restart fail2ban
4. Sau khi khởi động lại, hãy kiểm tra xem fail2ban có WordPress tác phẩm:
fail2ban-client status wordpress
Status for the jail: wordpress
|- Filter
| |- Currently failed: 355
| |- Total failed: 33873
| `- File list: (log files per domain)
- Actions
|- Currently banned: 127
|- Total banned: 680
`- Banned IP list:
Khi bạn tìm thấy các IP bị chặn trong danh sách này, hãy đảm bảo rằng chúng cũng bị chặn trong iptables
. Tôi gặp phải tình huống do cấu hình sai, trong fail2ban tôi thấy một IP bị chặn nhưng thực tế vẫn có thể truy cập được wp-login.php
hoặc xmlrpc.php
.
Để kiểm tra xem mọi thứ có hoạt động bình thường không, hãy chọn IP bị chặn từ danh sách fail2ban và tra cứu trong iptables.
Chạy dòng lệnh:
iptables -L -v -n --line-numbers
Nếu IP bị fail2ban chặn cũng có trong danh sách này, điều đó có nghĩa là bạn đã cấu hình fail2ban đúng cho IP đó. WordNhấn.
Đồng thời, chúng tôi khuyên bạn nên kiểm tra nhật ký bằng các hành động fail2ban:
sudo tail -f /var/log/fail2ban.log
Tuy nhiên, nếu bạn có bất kỳ câu hỏi nào hoặc cần trợ giúp, tôi có thể giúp bạn trong phần bình luận.