Wykład 3 – Filtracja i modyfikacja pakietów za pomocą iptables.
Transkrypt
Wykład 3 – Filtracja i modyfikacja pakietów za pomocą iptables.
Wykład 3 – Filtracja i modyfikacja pakietów za pomocą iptables. ➔ mechanizm trawersacji pakietów w jądrze Linux ➔ części składowe iptables: reguły, łańcuchy, tablice ➔ kryteria dopasowania (ang. matching) pakietu, operacje na łańcuchach, decyzje. ➔ przykłady działania iptables ➔ firewalling – dobre praktyki (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej iptables/netfilter – co to takiego? Jądro Linuksa iptables netfilter Netfilter – ogólny szkielet operacji na pakietach zaimplementowany w jądrze Linuksa (od 2.4.x). Na podstawie wczytanych kryteriów sprawdza nagłówki (i ew. zawartość) pakietów decydując o ich dalszym losie (akceptacja, odrzucenie, modyfikacja). ● Iptables – narzędzie do manipulacji regułami w mechanizmie filtracji pakietów (netfiltrze) w jądrze. Dodaje reguły do netfiltra w oparciu o poprawną składnię przekazaną z linii poleceń. ● (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Firewalling – po co? ● ● ● Kontrola i bezpieczeństwo Modyfikacja danych na poziomie IP i TCP/UDP Optymalizacja ruchu (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Iptables – podstawowe pojęcia ● Reguła zestaw warunków determinujący dalszy los pakietu. ● Łańcuch zbiór reguł pod kątem których sprawdzany jest pakiet. ● Tablica zestaw łańcuchów zapewniający konkretną funkcjonalność systemu (filter, nat, mangle) (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Reguły, łańcuchy, tablice przykład Chain INPUT (policy DROP 301K packets, 24M pkts bytes target prot opt in out 7951 607K ACCEPT icmp -* * 4 196 ACCEPT all -lo * Chain FORWARD (policy DROP pkts bytes target prot 3850K 727M DROP all 4389K 3334M ACCEPT all 143K opt --- bytes) source 0.0.0.0/0 0.0.0.0/0 destination 0.0.0.0/0 0.0.0.0/0 reguła packets, 9024K bytes) in out source destination eth0 * 192.168.0.0/24 0.0.0.0/0 ppp0 * 0.0.0.0/0 0.0.0.0/0 łańcuch Chain OUTPUT (policy pkts bytes target 221K 31M DROP 2825K 3655M DROP ACCEPT 45M prot opt all -all -- packets, 43G in out * ppp0 * * bytes) source 0.0.0.0/0 0.0.0.0/0 destination 0.0.0.0/0 10.0.0.0/8 tablica (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Trawersacja pakietu przez mechanizm netfiltra PREROUTING POSTROUTING mangle nat (DNAT) mangle nat (SNAT) FORWARD DECYZJA RUTINGU filter mangle INPUT OUTPUT filter mangle filter mangle nat PROCES LOKALNY (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej iptables – ogólna składnia iptables komenda łańcuch kryteria -j cel,decyzja Przykłady: iptables iptables -A -I INPUT FORWARD -i eth0 -s 192.168.0.1 -p tcp -j DROP -j ACCEPT (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej iptables - Operacje na łańcuchach, spis komend (fragment) Komenda -A, --append -D, --delete -I, --instert -L, --list -F, --flush Opis Przykład Dodanie reguły do łańcucha (na końcu) Usunięcie podanej reguły z łańcucha Wstawienie reguły do łańcucha (na początek) Wypisanie wszystkich reguł w łańcuchu Opróżnienie łańcucha ze wszystkich reguł -P, --policy Ustawienie polityki dla łańcucha -Z, --zero -N, --new Zerowanie licznika łańcucha Tworzenie nowego łańcucha -A INPUT -i eth0 -j DROP -D INPUT -i eth0 -j DROP -D INPUT 1 -I INPUT -i eth0 -j DROP -L INPUT -F INPUT -P INPUT DROP -P OUTPUT ACCEPT -Z FORWARD -N test (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej iptables - Kryteria dopasowania pakietu (fragment) Kryterium Opis Przykład -p protokół -s Adres źródłowy -d Adres docelowy -i Interfejs przychodzący -o Interfejsc wychodzący --dport Port docelowy --sport --syn --tcp-flags --icmp-type --fragment Port źródłowy Pakiet rozpoczynający sesje TCP Rodzaj flag tcp Rodzaj komunikatu ICMP Pakiet fragmentu -p tcp -p ! icmp -s 192.168.0.5 -s ! 10.0.0.0/8 -d 192.168.14.1 -i eth0 -i ! ppp0 -o wlan0 --dport 80 --dport ! 22 --sport 5555 --tcp-flags SYN,ACK --icmp-type echo-reply (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej iptables - Kryteria rozszerzone (-m moduł) Kryterium --mac-source --limit --ttl-eq --uid-owner --days --src-cc --average Opis Przykład Adres sprzetowy MAC Limit predkości przesyłania pakietów Wartość pola TTL UID procesu do którego należy gniazdo Dzień tygodnia Kraj z którego pochodzi pakiet (baza GEOIP) Średnie prawdopodobieństwo --mac-source 00:60:08:91:cc:b7 --limit 1/s --limit 30/m --ttl-eq 64 --uid-owner 1001 --days mon,tue --src-cc pl,uk --average 33 (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej iptables - Decyzja (cel, 'target') Cel Opis -j ACCEPT -j DROP -j LOG -j REJECT -j RETURN -j MASQUARADE -j MIRROR -j QUEUE Akceptacja pakietu Odrzucenie pakietu Logowanie pakietu (bez podjęcia decyzji) Odrzucenie pakietu z wysłaniem informacji do nadawcy(ICMP) Brak podjęcia decyzji (przydatne jako funkcja licznika pakietów) Dokonanie operacji SNAT Zamiana adresu źródłowego z docelowym Kolejkowanie pakietu dla programu zewnętrznego (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej iptables – Inne tablice (-t nat) Tablica NAT Używana gdy istnieje potrzeba skorzystania z mechanizmu sieciowej translacji adresów iptables t nat A POSTROUTING o ppp0 j SNAT –tosource 1.2.3.4 iptables t nat A POSTROUTING o ppp0 j MASQUERADE iptables t nat A PREROUTING i ppp0 p tcp dport 46629 j DNAT \ to 192.168.0.9:46629 iptables t nat A PREROUTING i eth0 p tcp dport 80 j REDIRECT\ toport 8192 Tablica Mangle Używana gdy istnieje potrzeba zaawansowanej modyfikacji pakietów (np. pola TTL, TOS, mark,flag TCP, itp.) iptables t mangle A POSTROUTING p icmp j ROUTE oif eth1 iptables t mangle A POSTROUTING p icmp j TTL ttlinc 1 iptables t mangle A POSTROUTING p icmp j TOS settos 0x10 (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Trawersacja pakietu przez mechanizm netfiltra <-- tworzenie nowego łańcucha <-- skok do nowego łańcucha <-- wyświetlenie reguł we wszystkich łańcuchach iptables N test iptables A INPUT <kryteria> j test iptables nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT icmp 0.0.0.0/0 0.0.0.0/0 test tcp 0.0.0.0/0 0.0.0.0/0 ACCEPT udp 0.0.0.0/0 0.0.0.0/0 Chain test (1 references) target prot opt source destination DROP all 192.168.0.1 0.0.0.0/0 ACCEPT all 0.0.0.0/0 10.0.0.4 [1] [2] Pakiet TCP SRC=192.168.0.1 DST=123.45.67.89 [3] Koniec trawersacji! (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Trawersacja pakietu przez mechanizm netfiltra - c.d. <-- tworzenie nowego łańcucha <-- skok do nowego łańcucha <-- wyświetlenie reguł we wszystkich łańcuchach iptables N test iptables A INPUT <kryteria> j test iptables nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT icmp 0.0.0.0/0 0.0.0.0/0 test tcp 0.0.0.0/0 0.0.0.0/0 ACCEPT udp 0.0.0.0/0 0.0.0.0/0 Chain test (1 references) target prot opt source destination DROP all 192.168.0.1 0.0.0.0/0 ACCEPT all 0.0.0.0/0 10.0.0.4 [1] [2] [3] Pakiet UDP SRC=192.168.1.100 DST=10.1.13.4 Koniec trawersacji! (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Trawersacja pakietu przez mechanizm netfiltra - c.d. <-- tworzenie nowego łańcucha <-- skok do nowego łańcucha <-- wyświetlenie reguł we wszystkich łańcuchach iptables N test iptables A INPUT <kryteria> j test iptables nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT icmp 0.0.0.0/0 0.0.0.0/0 test tcp 0.0.0.0/0 0.0.0.0/0 ACCEPT udp 0.0.0.0/0 0.0.0.0/0 Chain test (1 references) target prot opt source destination DROP all 192.168.0.1 0.0.0.0/0 ACCEPT all 0.0.0.0/0 10.0.0.4 [6] [1] [2] Pakiet TCP SRC=192.168.1.100 DST=10.1.13.4 [3] [4] Koniec trawersacji! (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Firewalling – dobre praktyki ● ● ● ● ● Utrzymuj możliwie jak najmniejszą liczbę reguł Nie dubluj kryteriów w kolejnych regułach Nastawiaj reguły na odp. komputerach Reguły o największym prawdopodobieństwie trafienia ustawiaj najwcześniej Używaj własnych łańcuchów dla przejrzystości zapisu (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej Tematyka wykładu 3 – podsumowanie ➔ mechanizm trawersacji pakietów w jądrze Linux ➔ części składowe iptables: reguły, łańcuchy, tablice ➔ kryteria dopasowania (ang. matching) pakietu, operacje na łańcuchach, decyzje. ➔ przykłady działania iptables ➔ firewalling – dobre praktyki (c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej