Tôi nghĩ rằng tôi đã tìm thấy một giải pháp thông qua bài viết này và IPSet dường như là câu trả lời
Tóm lại:
Nếu bộ địa chỉ IP chứa hàng ngàn mục thì hiệu suất của iptables giảm (thực tế, hiệu suất của bộ lọc mạng, ngay khi iptables chỉ là một công cụ để quản lý tường lửa). Tải CPU của bạn cũng có thể tăng. May mắn thay, có một giải pháp hoàn hảo - ipsets
IPSet là công cụ hoàn hảo nếu bạn muốn:
- Lưu trữ nhiều địa chỉ IP hoặc số cổng và khớp với bộ sưu tập bằng iptables tại một swoop;
- Tự động cập nhật các quy tắc iptables đối với các địa chỉ IP hoặc cổng mà không bị phạt hiệu năng;
- Thể hiện các quy tắc dựa trên địa chỉ IP và cổng phức tạp với một quy tắc iptables duy nhất và hưởng lợi từ tốc độ của các bộ IP
Cài đặt ipset rất đơn giản sudo apt-get install ipset
Sau đó chạy như sau
ipset -N autoban iphash ––hashsize 4096 ––probes 2 ––resize 50
Thêm nó vào chuỗi iptables của bạn. Nó có thể khác nhau tùy thuộc vào cài đặt tường lửa của bạn. Ở đây chúng tôi sử dụng chuỗi ethin.
iptables -I ethin 2 -p tcp -m multiport ––dport 80,443 -m set ––match-set autoban src -j DROP
Bây giờ bạn có thể thêm tất cả IP xấu vào ipset của bạn. Chẳng hạn, bạn có tệp văn bản gọi là bot.txt với một IP trên mỗi dòng. Vì vậy, bạn có thể thêm chúng vào ipset bằng cách sử dụng tập lệnh bash đơn giản:
for i in $( cat /tmp/bots.txt ) ; do ipset -A autoban $i ; done
Để kiểm tra chạy:
ipset -L autoban