NFsec Logo

Rozszerzenie ipset dla iptables

08/11/2014 w Bezpieczeństwo Brak komentarzy.  (artykuł nr 464, ilość słów: 258)

P

rzez długi czas firewall w Linuksie oparty o iptables nie miał żadnego efektywnego sposobu, aby dopasowywać reguły do zbiorów adresów IP. Jeśli mieliśmy wiele adresów IP, aby dopasować do nich różne reguły (na przykład: setki lub tysiące adresów IP, które należało trzymać z daleka od portu SMTP) trzeba było tworzyć jeden wpis iptables dla każdego adresu IP, a następnie wprowadzać te wpisy sekwencyjnie. To wprowadzało wiele komplikacji w utrzymywanie takiego rozwiązania. Na szczęście w jądrach od serii 2.6.39 (Ubuntu 12.04, 14.04, Fedora 20, RHEL / CentOS 7) pojawiło się rozszerzenie ipset.

Ipset daje nam możliwość tworzenia zbiorów różnych rzeczy typu: portów TCP, adresów MAC, sieci IP (CIDR), pojedynczych adresów IP, interfejsów sieciowych itd. Pracę z tym narzędziem (iptables nie jest standardowo dostarczany z nim w zestawie) należy zacząć od zainstalowania pakietu o nazwie ipset. Podstawowe jego użycie sprowadza się do stworzenia zbioru, dodania do niego danych (określonego typu) i rozpoczęcia czynności dopasowywania. Przykład:

ipset create blocknets hash:net counters
ipset add blocknets 10.10.0.0/16
ipset add blocknets 192.168.0.0/24
iptables -A INPUT -p tcp --dport 25 -m set --match-set blocknets src -j DROP

Ważne, aby zbiór istniał zanim zostanie wykorzystany przez iptables. Oprócz prostoty zarządzania zbiorami danych – ipset daje systemowi coś więcej. W “standardowym” trybie użycia iptables, przy tysiącach wpisów czas połączenia (ms) na filtrowany port będzie się wydłużać podczas, gdy przy użyciu zbiorów ip pozostaje mniej więcej ten sam.

Więcej informacji: man ipset, Mass-blocking IP addresses with ipset, Ipset for heavy use

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , , , , , ,

Komentowanie tego wpisu jest zablokowane.