Сколько инструкций можно вставить в iptables без потери работоспособности системы?


9

Скажем, кто-то хочет иметь список заблокированных IP-адресов.

Я видел следующий пример сценария:

BLOCKDB="/path/to/ip.blocked.file"
# omit comments lines
IPS=$(grep -Ev "^#" $BLOCKDB)
for i in $IPS
do
    iptables -A INPUT -s $i -j DROP
    iptables -A OUTPUT -d $i -j DROP
done

Является ли несколько тысяч строк, которые превращаются в несколько тысяч записей iptables, вменяемым?

Каков верхний предел, за пределами которого эффективность системы будет значительно затронута?


2
Похоже, что вы нашли ответ на свой вопрос. Если это так, вы должны убрать ответ из своего вопроса и использовать кнопку «Ответить на свой вопрос» и опубликовать ответ там. Тогда вы можете принять свой ответ, и все будет гораздо более хорошо организовано.
Скотт Северанс

@ScottSeverance сделано так, как вы предлагаете, однако, требуется 4 часа, чтобы принять сам ответ.
Цуры Бар Йохай

Ответы:


8

Я думаю, что нашел решение через эту статью, и IPSet, кажется, ответ

В сумме:

Если набор IP-адресов содержит тысячи элементов, производительность iptables снижается (на самом деле производительность netfilter, поскольку iptables становится просто инструментом для управления брандмауэром). Ваша загрузка процессора тоже может увеличиться. К счастью, есть идеальное решение - ипсец

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

Спасибо за ответ. Вот краткий учебник по ipset для тех , кто не знаком с ipset (как я 8-) - linuxjournal.com/content/advanced-firewall-configurations-ipset
Tzunghsing Дэвид Вонг
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.