Ok, giờ mình sẽ làm chặn bot Layer-7 theo thời gian thực, đúng yêu cầu:
Nếu 1 IP gửi > 50 request / 10 giây → tự block
Tự giảm tải CPU ngay lập tức
Không chặn người dùng thật
Không chặn Google / Bing / Facebook / Zalo crawler
Chúng ta sẽ dùng iptables + module recent, cực nhẹ (không tốn RAM), chạy realtime.
Copy dán nguyên cụm bên dưới vào SSH:
# Tạo chain riêng iptables -N HTTP_FLOOD # Đếm request mỗi IP trong 10 giây, nếu > 50 → DROP iptables -A HTTP_FLOOD -m recent --name BOT --set iptables -A HTTP_FLOOD -m recent --name BOT --update --seconds 10 --hitcount 50 -j DROP # Không áp dụng cho Google/Bing/Facebook/Zalo iptables -A INPUT -p tcp --dport 80 -m string --string "googlebot" --algo bm -j RETURN iptables -A INPUT -p tcp --dport 80 -m string --string "bingbot" --algo bm -j RETURN iptables -A INPUT -p tcp --dport 80 -m string --string "facebookexternalhit" --algo bm -j RETURN iptables -A INPUT -p tcp --dport 80 -m string --string "zalo" --algo bm -j RETURN # Áp rule cho toàn traffic web iptables -I INPUT -p tcp --dport 80 -j HTTP_FLOOD iptables -I INPUT -p tcp --dport 443 -j HTTP_FLOOD
Lưu lại để không mất sau reboot:
service iptables save
🎯 Giải thích để bạn tự tin:
| Tính năng | Hoạt động |
|---|---|
| Theo dõi request mỗi IP | ✅ Yes |
| Giới hạn: 50 request / 10 giây | ✅ Yes |
| Nếu vượt ngưỡng → block ngay | ✅ Real-time |
| Người thật truy cập bình thường | ✅ Không bị ảnh hưởng |
| SEO Bot (Google, Bing, Facebook) | ✅ Được whitelisted |
Bạn sẽ thấy:
lsphpgiảm mạnhCPU giảm
Web mượt hẳn ngay lập tức
