Hướng Dẫn Giới Hạn Request admin-ajax & wp-login Bằng iptables (Chống Spam Bot WordPress)

Website WordPress hiện nay thường xuyên trở thành mục tiêu của các bot tự động chuyên spam request, brute-force đăng nhập hoặc khai thác lỗ hổng thông qua các tập tin quan trọng như admin-ajax.php, wp-login.php hay xmlrpc.php.

Khi bị tấn công, server sẽ tăng tải CPU đột ngột, tiêu tốn tài nguyên, làm chậm website và thậm chí gây treo VPS. Đặc biệt với các website sử dụng WooCommerce, bot thường lợi dụng cơ chế AJAX để gửi hàng chục đến hàng trăm request mỗi giây, khiến hệ thống xử lý liên tục và nhanh chóng quá tải.

Thay vì cài đặt nhiều plugin bảo mật nặng nề làm ảnh hưởng hiệu năng, chúng ta có thể xử lý trực tiếp ở tầng firewall bằng iptables. Việc giới hạn số request và số lần truy cập vào các tập tin nhạy cảm giúp chặn bot ngay từ lớp mạng, giảm tải cho web server và PHP.

Bài viết này sẽ hướng dẫn cách cấu hình iptables để giới hạn truy cập vào admin-ajax.phpwp-login.php, từ đó tăng cường bảo mật, giảm spam và tối ưu hiệu suất cho server WordPress một cách hiệu quả và nhẹ nhàng.

I. Giới Hạn Request vào admin-ajax.php

Bot thường spam:

POST /wp-admin/admin-ajax.php
wc-ajax=get_refreshed_fragments

 

🎯 Mục tiêu

  • Nếu 1 IP gọi quá 20 lần trong 10 giây → DROP

  • Không ảnh hưởng user bình thường

✅ Thêm rule cho HTTP (port 80)

iptables -I INPUT -p tcp --dport 80 -m string --string "admin-ajax.php" --algo bm -m recent --set --name AJAX

iptables -I INPUT -p tcp --dport 80 -m string --string "admin-ajax.php" --algo bm -m recent --update --seconds 10 --hitcount 20 --name AJAX -j DROP

 

✅ Thêm rule cho HTTPS (port 443)

iptables -I INPUT -p tcp --dport 443 -m string --string "admin-ajax.php" --algo bm -m recent --set --name AJAX

iptables -I INPUT -p tcp --dport 443 -m string --string "admin-ajax.php" --algo bm -m recent --update --seconds 10 --hitcount 20 --name AJAX -j DROP

 

II. Giới Hạn Truy Cập wp-login.php (Chống Brute Force)

Bot sẽ spam login liên tục để dò mật khẩu.

🎯 Mục tiêu

  • Nếu 1 IP login quá 5 lần trong 60 giây → block

✅ Thêm rule

HTTP:

iptables -I INPUT -p tcp --dport 80 -m string --string "wp-login.php" --algo bm -m recent --set --name LOGIN

iptables -I INPUT -p tcp --dport 80 -m string --string "wp-login.php" --algo bm -m recent --update --seconds 60 --hitcount 5 --name LOGIN -j DROP

 

HTTPS:

iptables -I INPUT -p tcp --dport 443 -m string --string "wp-login.php" --algo bm -m recent --set --name LOGIN

iptables -I INPUT -p tcp --dport 443 -m string --string "wp-login.php" --algo bm -m recent --update --seconds 60 --hitcount 5 --name LOGIN -j DROP

 

III. Giới Hạn Số Connection Đồng Thời (Chống Bot Mở Nhiều Kết Nối)

iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
iptables -I INPUT -p tcp --dport 443 -m connlimit --connlimit-above 50 -j DROP

 

IV. Lưu Rule

service iptables save

 

🔥 Kết Luận

Sau khi áp dụng:

  • Bot spam admin-ajax bị chặn

  • Bot brute-force wp-login bị chặn

  • Server giảm load rõ rệt

  • Không cần cài plugin bảo mật nặng

 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận