Я думаю, що я знайшов рішення через цю статтю, і IPSet, здається, є відповіддю
В підсумку:
Якщо набір IP-адрес містить тисячі елементів, продуктивність iptables знижується (фактично, продуктивність netfilter, як тільки iptables є лише інструментом для управління брандмауером). Навантаження вашого процесора також може збільшитися. На щастя, є ідеальне рішення - ipsets
IPSet - ідеальний інструмент, якщо ви хочете:
- Зберігайте декілька IP-адрес або номерів портів і порівнюйте їх з колекцією iptables одним махом;
- Динамічно оновлювати правила iptables проти IP-адрес або портів без штрафних санкцій;
- Висловіть складні IP-адреси та набори правил на основі портів з одним правилом iptables та скористайтеся швидкістю IP-наборів
Встановлення ipset прямо вперед sudo apt-get install ipset
Потім запустіть наступне
ipset -N autoban iphash ––hashsize 4096 ––probes 2 ––resize 50
Додайте його до своєї мережі iptables. Це може відрізнятися залежно від налаштувань вашого брандмауера. Тут ми використовуємо ланцюг етину.
iptables -I ethin 2 -p tcp -m multiport ––dport 80,443 -m set ––match-set autoban src -j DROP
Тепер ви можете додати всі погані IP-адреси до свого ipset. Наприклад, у вас є текстовий файл під назвою bots.txt з одним IP на рядок. Таким чином, ви можете додати їх до ipset, використовуючи простий скрипт bash:
for i in $( cat /tmp/bots.txt ) ; do ipset -A autoban $i ; done
Щоб перевірити запуск:
ipset -L autoban