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?
Odpowiedzi:
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:
Instalacja ipset jest prosta
sudo apt-get install ipset
Następnie uruchom następujące czynności
Dodaj go do łańcucha iptables. Może się różnić w zależności od ustawień zapory. Tutaj używamy łańcucha etyny.
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:
Aby sprawdzić uruchomienie:
źródło