Ile instrukcji można włożyć do iptables bez utraty zdrowia psychicznego systemu?


9

Powiedzmy, że ktoś chce mieć listę zablokowanych adresów IP.

Widziałem następujący przykładowy skrypt:

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

Czy kilka tysięcy linii, które przekształcają się w kilka tysięcy wpisów w iptables, jest rozsądne?

Jaki jest górny limit, powyżej którego efektywność systemu ulegnie znacznemu pogorszeniu?


2
Wygląda na to, że znalazłeś odpowiedź na swoje pytanie. Jeśli tak, powinieneś przenieść odpowiedź z pytania i użyć przycisku „Odpowiedz na pytanie” i opublikować tam odpowiedź. Następnie możesz zaakceptować swoją odpowiedź, a wszystko będzie lepiej zorganizowane.
Scott Severance,

@ ScottSeverance zrobione zgodnie z twoimi sugestiami, jednak akceptacja odpowiedzi może zająć 4 godziny.
Tzury Bar Yochay

Odpowiedzi:


8

Myślę, że znalazłem rozwiązanie za pomocą tego artykułu i IPSet wydaje się być odpowiedzią

W sumie:

Jeśli zestaw adresów IP zawiera tysiące elementów, spada wydajność iptables (w rzeczywistości wydajność netfiltra, gdy tylko iptables jest tylko narzędziem do zarządzania zaporą ogniową). Twoje obciążenie procesora również może wzrosnąć. Na szczęście istnieje idealne rozwiązanie - ipsets

IPSet to idealne narzędzie, jeśli chcesz:

  • Przechowuj wiele adresów IP lub numerów portów i dopasuj do kolekcji według iptables za jednym zamachem;
  • Dynamicznie aktualizuj reguły iptables względem adresów IP lub portów bez obniżania wydajności;
  • Wyrażaj złożone adresy IP i zestawy reguł oparte na portach za pomocą jednej reguły iptables i korzystaj z prędkości zestawów IP

Instalacja ipset jest prosta sudo apt-get install ipset

Następnie uruchom następujące czynności

ipset -N autoban iphash ––hashsize 4096 ––probes 2 ––resize 50

Dodaj go do łańcucha iptables. Może się różnić w zależności od ustawień zapory. Tutaj używamy łańcucha etyny.

iptables -I ethin 2 -p tcp -m multiport ––dport 80,443 -m set ––match-set autoban src -j DROP

Teraz możesz dodać cały zły adres IP do swojego ipset. Na przykład masz plik tekstowy o nazwie bots.txt z jednym adresem IP na linię. Możesz więc dodać je do ipset za pomocą prostego skryptu bash:

for i in $( cat /tmp/bots.txt ) ; do ipset -A autoban $i ; done

Aby sprawdzić uruchomienie:

ipset -L autoban

Dziękuję za odpowiedź. Oto krótki samouczek na temat ipset dla tych, którzy nie są zaznajomieni z ipset (jak ja 8-) - linuxjournal.com/content/advanced-firewall-configurations-ipset
Tzunghsing David Wong
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.