Скільки інструкцій можна вставити в 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 години, поки можна прийняти самовідповідь.
Tzury Bar Yochay

Відповіді:


8

Я думаю, що я знайшов рішення через цю статтю, і 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

дякую за відповідь. Ось короткий підручник з ipset для тих, хто не знайомий з ipset (як я 8-) - linuxjournal.com/content/advanced-firewall-configurations-ipset
Tzunghsing David Wong
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.