Eclipse Project
Transkrypt
Eclipse Project
Iptables Krzysztof Rykaczewski [email protected] http://www.mat.uni.torun.pl/~mozgun/ 15/11/06 1 Co to takiego filtr pakietów? Co to takiego filtr pakietów Filtr pakietów to oprogramowanie, które sprawdza nagłówki (ang. header) pakietów w trakcie jak przechodzą przez maszynę na której działa i decyduje o ich losie. ■ Umożliwia on operowanie na pakietach przechodzących do systemu, z systemu i poprzez system. W Linuxie filtrowanie pakietów IP wbudowane jest w jądro systemu operacyjnego. Począwszy od wersji 2.3.15 jądra odpowiedzialny jest za to moduł o nazwie netfilter, oferujący niezależną filtrację pakietów przychodzących, 15/11/06 wychodzących i routowanych. 2 Czym więc jest iptables? ■ ■ ■ ■ ■ 15/11/06 Iptables to jedna z implementacji filtra pakietów, która dostarcza programistom i administratorom wygodniejsze interfejsy oraz duże możliwości Tak naprawdę jest to moduł dołączający się do netfiltera Służy do dynamicznego generowania reguł filtracji. Reguły te przechowywane są w pamięci jądra, ale można je zapisać (iptablessave lub iptablesrestore) Głównie używany jest jako firewall bądź router Ma wygodniejszą składnię i jest o wiele prostsze w obsłudze niż starsze ipfwadm i ipchains 3 Możliwości ■ ■ ■ ■ ■ 15/11/06 Iptables standardowo umożliwia jedynie proste filtrowanie na podstawie adresów IP oraz wykonywanie prostych akcji jak DROP, ACCEPT, SNAT czy DNAT. Ma ona jednak bardzo pożyteczną cechę (jest rozszerzalne), dzięki temu zostało napisanych wiele rozszerzeń, które umożliwiają filtrowanie według bardziej wyszukanych kryteriów czy też wykonywanie bardziej zaawansowanych akcji. Filtrowanie pakietów ze względu na adres i port: źródłowy i docelowy. Filtrowanie pakietów ze względu na typ pakietu: UDP, TCP, ICMP. Filtrowanie ze względu na wykorzystany protokół (IPv4, IPv6), czas życia... 4 Instalacja... ■ Jeśli jeszcze nie mamy zainstalowanego iptables: # tar xzvf iptables1.3.6.tar.gz # cd iptables1.3.6 # make # make install ■ Musimy upewnić się ze mamy wszystkie potrzebne funkcje wbudowane w nasz kernel # make menuconfig ■ ■ 15/11/06 CONFIG_NETFILTER (,,Network packet filtering (replaces ipchains)'') Dzięki uatkywnieniu wszystkich opcji będziemy mieli pełną funkcjonalność netfiltra 5 Instalacja (2) – Konfiguracja Kernela ■ Musimy teraz uaktywnić kilka opcji kernela z sekcji Network options: <*> Packet socket [*] Network packet filtering (replace ipchains) <*> Unix domain sockets [*] TCP/IP networking [*] IP: advanced router [*] IP: policy routing [*] IP: use netfilter MARK value as routing key [*] IP: fast network address translation [*] IP: use TOS value as routing key IP NETFILTER CONFIGURATION > 15/11/06 6 Instalacja (3) – Konfiguracja Kernela ■ Należy pamiętać jednocześnie aby nie zaznaczać opcji [ ] IP: TCP Explicit Congestion Notification support ■ Wtedy bowiem nasz system nie będzie mógł utrzymać łączności z 8% całego Internetu 15/11/06 7 Konfiguracja iptables ■ ■ ■ Konfiguracja polega na definiowaniu tzw. reguł (ang. rules) składających się z wzorca i akcji. Każda trafiająca wiadomość dopasowywana jest do wzorca; jeśli nie pasuje do wzorca pod uwagę brana jest kolejna reguła – gdy już ustali się ten do którego pasuje o dalszym losie wiadomości decyduje akcja reguły. Przeszukiwanie trwa do pierwszego dopasowania wzorca lub do wyczerpania reguł Wyróżnia się trzy typy reguł: – reguły filtrujące – reguły translacji NAT 15/11/06 – reguły do manipulowania zaawansowanymi opcjami protokołu IP 8 Konfiguracja iptables ■ Wszystkie reguły tego samego typu przechowywane są w strukturze zwanej tablicą (ang. table). Istnieją zatem trzy wbudowane tablice: – filter tablica na podstawie której odbywa się filtrowanie pakietów (dla reguł filtrujących) – nat tablica na podstawie której odbywa się translacja adresów (dla reguł translacji NAT) – mangle używana do zmiany informacji zawartych w pakiecie IP 15/11/06 9 Konfiguracja iptables ■ Sekwencja reguł powstała przez połączenie grup reguł nazywa się łańcuchem (ang. chain). Pakiet iptables posiada pięć wbudowanych łańcuchów: – INPUT – OUTPUT – FORWARD – PREROUTIONG tylko dla nat i mangle – POSTROUTING 15/11/06 10 Składania polecenia iptables Ogólna postać komendy: iptables [t tablica] komenda [wzorzec] akcja tablica: filter, nat, mangle komenda: I n|A|D|R|L|F|Z|N|X|P|E testy (akcje): s|d|p|i|o|... cel: j ACCEPT| j DENY| j REJECT| j DROP| ... 15/11/06 11 Składania polecenia iptables c.d. ■ Komendą może być jedna z poniższych: P łańcuch polityka – ustawienie domyślnej polityki; jest stosowana dopiero wowczas gdy pakiet nie pasuje do żadnej reguły A łańcuch [reguła] – dodanie reguły do określonego łańcucha I łańcuch [nr reguły] [reguła] – wstawianie reguły do określonego łańcucha; jeśli zostanie podany numer to reguła zostanie wpisana w to miejsce zmieniając kolejność pozostałych L łańcuch – wyświetlenie wszystkich reguł łańcucha (często z opcjami n lub v ) F łańcuch – wyczyszczenie reguł łańcucha lub wszytkich reguł z danej tablicy D łańcuch [nr_reguły] – usunięcie konkretnej reguły z określonego łańcucha 15/11/06 R łańcuch nr_reguły [reguła] – zastąpienie reguły w łańcuchu 12 Składania polecenia iptables c.d. ■ Wzorzec: s [!] ip/[netmask] – źródłowy adres IP (może być uogólniony do adresu sieci) d [!] ip/[netmask] – docelowy adres IP p protokół – wybór protokołu: tcp, udp, icmp i all (wszystkie prtokoły TCP) i [!] interfejs_wejściowy o [!] interfejs_wyjściowy sport [!] port[:port] – port źródłowy dport [!] port[:port] – port docelowy m moduł – załadowanie modułu rozszerzającego 15/11/06 13 Składania polecenia iptables c.d. ■ Najważniejsze akcje: j ACCEPT – oznacza przepuszczenie pasujących pakietów j DROP – odrzucenie dopasowanych pakietów (tak jakby w ogóle nie dotarły) j REJECT – odrzucenie pakietów z powiadomieniem j LOG – zalogowanie dopasowanych pakietów bez usuwania z łańcucha j RETURN – usunięcie pakietów z łańcucha pozwalając aby dalej był sprawdzany w kolejnych łańcuchach j SNAT – translacja adresów źródłowych j DNAT – translacja adresów docelowych j SAME – translacja adresów źródłowych i docelowych 15/11/06 14 Składania polecenia iptables c.d. ■ Najważniejsze akcje: j REDIRECT – przekierowanie do lokalnego systemu j MASQERADE – translacja adresów źródłowych na adresy dynamiczne przyznawana na interfejsie 15/11/06 15 Rozszerzenia iptables(1) ■ ■ Na bazie netfilter zostało zbudowanych wiele modułów, które dodają nowe możliwości do zarządzania pakietami. Rozszerzają one możliwości ściany ogniowej. Kilka z nich jest ustawionych domyślnie np.: tcp, udp. Większość dostępna jest w dodatku patchomaticng. KRÓTKIE OPISY MODUŁÓW Dotyczce IPSec: ah dopasowuj się do pola "spi" w nagłówku AH pakietu, esp dopasowuj się do pola "spi" w nagłówku ESP pakietu, policy dopasowuje się do "policy" pakietu. 15/11/06 16 Rozszerzenia iptables(2) ■ Dopasowujce się do nagłówka pakietu IP: dscp dopasowuje się do 6 bitów DSCP znajdujących się w polu ToS, ecn sprawdza bit ECN w nagłówku pakietu, ipv4options sprawdza różne opcje nagłówka pakietu, np. source routing, record route, tcpmss sprawdza pole MSS (Maximum Segment Size), tos pole ToS (Type of Service), ttl pole TTL (Time To Live). 15/11/06 17 Rozszerzenia iptables(3,4) ■ IPSec:Nadzorujące połączenia (stanowość): state umożliwia zidentyfikowanie istniejących połączeń oraz nowych, conntrack rozszerza możliwosci modulu state, helper pozwala określić "pomocnika" do przekazywania połączenia, np. standardowym pomocnikiem jest moduł pozwalający przekazywać połączenia ftpdata w trybie aktywnym. ■ Określające typ pakietu: icmp dopasowuje się do pakietów typu ICMP, tcp dotyczy pakietów typu TCP, 15/11/06 udp dotyczy pakietów typu UDP, unclean dotyczy pakietów zniszczonych i niepoprawnych. 18 Rozszerzenia iptables(5,6) ■ Określajce limity: connlimit umożliwia określenie maksymalnej liczby połączeń do konkretnego adresu IP z jednego adresu IP klienta, connrate umożliwia określenie maksymalnego/minimalnego transferu, hashlimit umożliwia określenie maksymalnego transferu do danej usługi/serwera. ■ Znakowanie pakietów: mark umożliwia znalezienie oznakowanego pakietu, connmark umożliwia znalezienie każdego pakietu związanego z oznakowanym połączeniem. 15/11/06 19 Rozszerzenia iptables(7) ■ Ułatwiające tworzenie reguł: iprange umożliwia wpisanie zakresu adresów IP, mac umożliwia sprawdzenie adresu sprzętowego karty sieciowej MAC, multiport umożliwia wpisanie zakresu portów, owner dla lokalnych połączeń umożliwia określenie który użytkownik wysłał dany pakiet, pkttype określa typ pakietu (unicast, multicast, broadcast) set wykorzystanie stworzonych zbiorów adresów (polecenie ipset), time określenie daty i/lub czasu, 15/11/06 comment umożliwia dopisanie komentarza do każdej reguły. 20 Rozszerzenia iptables(8,9) ■ Rozszerzone sprawdzanie pakietów: length sprawdzające wielkość pakietu, string dopasowujące się do zawartości pakietu w polu DATA, ipp2p dopasowujące się do ruchu generowanego przez aplikację typu P2P. ■ Określające częstość: limit określa jak często reguła będzie dopasowana, np. 3 razy na sekund 3/s, nth określa co jaką liczbę pakietów będzie dopasowana reguła, np. co 5 pakiet, random określa dopasowanie reguły do pakietu z zadanym prawdopodobiestwem, np. 50% pakietów. 15/11/06 21 Rozszerzenia iptables(10,11) ■ Monitorujce: recent tworzy listy adresów wykorzystujących łącze (przechodzących przez tę regułę),wyniki zapisywane są w katalogu /proc/net/ipt_recent/NAZWA, account zlicza ruch do określonych adresów, wyniki w katalogu /proc/net/ipt_account/NAZWA, quota określa quotę dla określonych pakietów. ■ Inne: condition pozwala warunkować stosowanie reguły, poprzez plik w katalogu /proc/net/ipt_condition/NAZWA osf odczytuje pasywnie "odcisk palca" (fingerprint) konkretnego adresu IP i zapisuje w pliku /proc/sys/net/ipv4/osf 15/11/06 psd pozwala wykryć skanowanie portów TCP i UDP. 22 Rozszerzenia celów ■ Cele określają co zostanie zrobione z danym pakietem, domyślnymi celami są akceptacja (ACCEPT) i odrzucenie (DROP) pakietu. Jednak twórcy zapory postanowili rozszerzyć listę dostępnych celów: 1. Zmiana adresów IP: BALANCE podobne do DNAT, ale równomiernie rozkłada obcienie na wiele adresów IP, DNAT Destination NAT, MASQUERADE ukrywanie źródlowych adresów IP, NETMAP statyczna zamiana adresów całych podsieci, 15/11/06 REDIRECT przekierowanie ruchu na lokalny komputer, SAME podobne do DNAT/SNAT, ale zawsze przydziela te same adresy IP konkretnym klientom, SNAT Source NAT. 23 Rozszerzenia celów(2) 2. Znakowanie pakietów: CONNMARK znakuje połączenia, IPMARK znakowanie pakietów na podstawie adresu IP, MARK znakuje pakiety. 3. Zmieniające nagłówek pakietu: DSCP umożliwia zmianę 6 bitów DSCP pola ToS, ECN umożliwia usunięcie bitu ECN, IPV4OPTSSTRIP usunięcie wszystkich opcji IP z nagłówka pakietu, TCPMSS ustawienie pola MSS, TOS ustawienie pola ToS, TTL ustawienie pola TTL. 15/11/06 24 Rozszerzenia celów(3) 4. Śledzenie pakietów: NOTRACK wyłącza śledzenie połączenia, TARPIT przechwytuje połaczenia i zawiesza je, w celu zabezpieczenie się przed skanowaniem typu Code Red i Nimda, TRACE włącza śledzenie połączenia. 5. Logowanie: LOG logowanie pakietów, ULOG logowanie w przestrzeni użytkownika. 6. Inne: REJECT odrzuca pakiety wysyłając okrelony kod błędu do nadawcy, ROUTE pozwala nadpisać wpisy tablicy tras, 15/11/06 SET dodaje/usuwa adresy z zakresów (polecenie ipset), XOR pozwala zastosowa proste zabezpieczenie danych pakietu, poprzez wykonanie funkcji XOR na danych i okrelonym haśle. 25 Pomoc ■ Żeby uzyskać informacje o module: iptables m <moduł> h ■ Uzyskanie pomocy o celu: iptables j <cel> h 15/11/06 26 Przykłady ■ Ustawienie domyślnej polityki łańcucha INPUT na DROP: iptables P INPUT DROP ■ Akceptacja pakietów o adresie źródłowym 158.73.2.230: iptables A INPUT s 158.75.2.230 j ACCEPT ■ ■ 15/11/06 Akceptacja pakietów ustanowionych i związanych z innymi połączeniami: iptables A INPUT m state state ESTABLISHED,RELATED j ACCEPT Blokada więcej niż 2 połączeń na port 23 iptables A INPUT p tcp syn dport 23 m connlimit connlimitabove 2 j REJECT rejectwith icmphostunreachable 27 Przykłady ■ Akceptacja 3 połączeń na minutę: iptables A INPUT m limit limit 3/min j ACCEPT ■ Umożliwienie tylko jednego na minutę połączenia z portem 22: iptables A INPUT p tcp dport 22 m hashlimit hashlimit 1/min hashlimitmode srcip hashlimitname ssh m state state NEW j ACCEPT 15/11/06 28 Bibliografia 15/11/06 ■ http://netfilter.samba.org ■ http://www.netfilter.org ■ http://www.netfilter.org/documentation/ ■ http://www.linode.com ■ http://debian.one.pl/howto/iptables/ ■ http://pl.wikipedia.org/wiki/Iptables ■ http://www.ia.pw.edu.pl/~tkruk/students/kmadej/mydocs/iptables/ 29