Filtrowanie IP
Transkrypt
Filtrowanie IP
ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI FILTROWANIE I MASKOWANIE IP Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP mechanizm decydujący, które typy datagramów IP mają być odebrane, które odrzucone. Odrzucenie oznacza usunięcie, zignorowanie datagramów, tak jakby nie zostały w ogóle odebrane. funkcja warstwy sieciowej. Kryteria wybierania datagramów: - typ protokołu, np. TCP, UDP, ICMP, - numer gniazda (dla TCP i UDP), - typ datagramu, np. SYN / ACK, dane, ICMP Echo Request, - adres źródłowy datagramu, - adres docelowy datagramu. Reguły filtrowania IP składają się z kombinacji powyższych kryteriów. Firewall pod Linuksem Wersja jądra Narzędzie do 2.0 ipfwadm (IP Firewall Administration) 2.2.x ipchains (IP Chains) 2.3.15 i kolejne iptables netfilter (uniwersalne) 1 ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI FILTROWANIE I MASKOWANIE IP Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. Etapy przetwarzania datagramu IP pozostałe części jądra gniazda sieciowe inne protokoły 4 2 protokoły TCP / UDP oprogramowanie routujące IP ? 3 1 sterownik Ethernet ? 5 sterownik PPP inny sterownik ? – decyzje dotyczące rutingu Odbieranie: - pobranie datagramu (1), - analiza adresu przeznaczenia datagramu, - przetwarzanie datagramu przez lokalną maszynę (2), - poszukiwanie trasy w tablicy routingu, przekazanie datagramu do odpowiedniego interfejsu (3). Wysyłanie: - przesłanie z lokalnych procesów do oprogramowania routującego, przekazanie do odpowiednich interfejsów (4), - analiza adresu przeznaczenia, ustalenie trasy dla datagramu, - wysłanie datagramu (5). Analiza przepływów: 2 ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI FILTROWANIE I MASKOWANIE IP Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. 1 → 3 → 5 – maszyna routująca między hostem w sieci Ethernet a hostem osiągalnym przez łącze PPP. 1 → 2 i 4 → 5 – dane przychodzące i wychodzące z/do programu działającego na danym hoście lokalnym. 4 → 3 → 2 – przepływ danych przez połączenie pętli zwrotnej. REGUŁY pod netfilter wejściowa INPUT – dotyczy przepływu 2 na powyższym diagramie, przekazywania FORWARD – dotyczy przepływu 3, wyjściowa OUTPUT – dotyczy przepływu 4, Polityka domyślna – pierwsza reguła, która określa co zrobić z datagramami, które nie będą obsługiwane w żaden specjalny sposób. Reguły firewalla są dopasowywane kolejno. Polecenie iptables służy do konfigurowania firewalla oraz translacji adresów sieciowych (protokół Network Address Translation). Składnia iptables: iptables polecenie określenie_reguły rozszerzenia Polecenia: -A łańcuch dodanie jednej lub kilku reguł na koniec danego łańcucha -I łańcuch num_reguły wstawienie jednej lub kilku reguł na początku danego łańcucha -D łańcuch usunięcie jednej lub kilku reguł z danego łańcucha zawierającego takie reguły -D łańcuch num_reguły usunięcie reguły znajdującej się na pozycji num_reguły w danym łańcuchu -R łańcuch num_reguły 3 ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI FILTROWANIE I MASKOWANIE IP Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. zastąpienie reguły na pozycji num_reguły w danym łańcuchu regułą o podanej charakterystyce -C łańcuch sprawdzenie danym łańcuchem datagramu opisywanego przez regułę. Zwraca komunikat opisujący, w jaki sposób łańcuch przetworzył datagram – przydatne w testowaniu konfiguracji firewalla. -L [łańcuch] wylistowanie reguł z zdanego łańcucha lub ze wszystkich łańcuchów -F [łańcuch] usunięcie reguł z danego łańcucha lub ze wszystkich łańcuchów -Z [łańcuch] wyzerowanie liczników bajtów i datagramów w danym łańcuchu lub we wszystkich łańcuchach -N łańcuch utworzenie nowego łańcucha o danej nazwie – nie mogą istnieć łańcuchy o tej samej nazwie -X [łańcuch] usunięcie danego łańcucha zdefiniowanego przez użytkownika lub wszystkich takich łańcuchów -P łańcuch polityka ustawienie domyślnej polityki dla danego łańcucha. Dopuszczalne polityki to: ACCEPT – pozwala na przepuszczenie datagramu, DROP – datagram jest odrzucany, QUEUE – datagram jest przekazywany do przestrzeni użytkownika w celu dalszego przetwarzania, 4 ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI FILTROWANIE I MASKOWANIE IP Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. RETURN – kod firewalla IP wraca do łańcucha, który go wywołał i kontynuuje działanie od następnej reguły. Parametry definicji reguł: -p [!] protokół określa protokół datagramu, który ma pasować do tej reguły, np. tcp, udp, icmp (nazwy lub numery zgodnie z plikiem /etc/protocols); ! oznacza negację reguły, tzn. datagram będzie pasował do wszystkich protokołów poza wymienionymi -s [!] adres [/maska] adres źródłowy datagramu (w postaci nazwy hosta, adresu sieci lub adresu IP); maska może być podana tradycyjnie, np. 255.255.255.0 lub „współcześnie”, np. 24 maska sieci bity 255.0.0.0 8 255.255.0.0 16 255.255.255.0 24 255.255.255.128 25 255.255.255.192 26 255.255.255.224 27 255.255.255.240 28 255.255.255.248 29 255.255.255.252 30 -d [!] adres [/maska] adres docelowy datagramu (opis jak wyżej) -j cel jakie działania mają być podjęte, gdy reguła zostanie dopasowana. Dopuszczalny cel to ACCEPT, DROP, QUEUE, RETURN 5 ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI FILTROWANIE I MASKOWANIE IP Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. -i [!] nazwa_interfejsu określa interfejs przyjmujący datagram (! – negacja); nazwa interfejsu zakończona znakiem + oznacza każdy interfejs, którego nazwa rozpoczyna się od podanego ciągu. -o [!] nazwa_interfejsu określa interfejs, pod który datagram będzie przesłany [!]-f mówi, że dana reguła dotyczy tylko drugiego i dalszych fragmentów datagramu, nie dotyczy fragmentu pierwszego. Opcje: -v wyświetla „bogate” wyniki (więcej informacji) -n wyświetla adresy IP i numery portów jako liczby i inne. Rozszerzenia: Iptables jest narzędziem rozszerzalnym poprzez opcjonalne moduły bibliotek dzielonych. Aby z nich skorzystać ich nazwy muszą być poprzedzone argumentem –m nazwa. Przykład rozszerzenia dla TCP: -sport [!] [port[:port]] określa port, z którego musi pochodzić datagram, aby pasował do reguły; np. 20:25 oznacza porty od numeru 20 do25 włącznie. 6 ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI FILTROWANIE I MASKOWANIE IP Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. MASKOWANIE IP translacja adresów sieciowych (Network Address Translation – NAT): proces modyfikacji adresów sieciowych zawartych w nagłówkach datagramu, który zachodzi w czasie przesyłania, maskowanie IP (ang. IP masquerading), jedna z odmian translacji adresów, pozwala hostom z adresem sieci prywatnej przedstawić sie w Internecie pod jednym publicznym adresem IP. 192.168.1.0 / 255.255.255.0 i n t e r n e t eth1 150.254.173.3 eth0 router z maskowaniem 192.168.1.1 L A N 192.168.1.2 192.168.1.3 7 ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI FILTROWANIE I MASKOWANIE IP Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. przykład reguł filtrowania IP z pliku /etc/init.d/firewall #!/bin/bash # WYBRANE reguły firewalla # - różne dla każdej karty sieciowej # karta eth1 - Internet # karta eth0 - sieć wewnętrzna # Zmienne środowiskowe SCIEZKA=/sbin MOJ_IP=150.254.173.3 # Reguły startowe firewalla start () { echo "FIREWALL START... " # reset ustawień # INPUT $SCIEZKA/iptables -F INPUT $SCIEZKA/iptables -P INPUT ACCEPT # FORWARD $SCIEZKA/iptables -F FORWARD $SCIEZKA/iptables -P FORWARD ACCEPT # OUTPUT $SCIEZKA/iptables -F OUTPUT $SCIEZKA/iptables -P OUTPUT ACCEPT # Domyślna zasada postępowania (polityka) firewalla: odrzuć wszystko $SCIEZKA/iptables -P INPUT DROP # Akceptuj tylko wywołania z pętli zwrotnej # (loopback; lo; 127.0.0.1), resztę odrzucaj $SCIEZKA/iptables -A INPUT -i lo -j ACCEPT # Odrzucaj połączenia na kartę eth1 (Internet) # z adresów „nierutowalnych” i adresu # wewnętrznego(lo) $SCIEZKA/iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP clasa A $SCIEZKA/iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP clasa B # # 8 ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI FILTROWANIE I MASKOWANIE IP Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. $SCIEZKA/iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP # clasa C $SCIEZKA/iptables -A INPUT -i eth1 -s 224.0.0.0/4 -j DROP multicast # $SCIEZKA/iptables -A INPUT -i eth1 -s 240.0.0.0/5 -j DROP reserved # # Na eth0 nie może pojawić się żaden adres spoza puli 10.0.0.0/24 (oznaczający sieć lokalną) $SCIEZKA/iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP clasa B # $SCIEZKA/iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP # clasa C $SCIEZKA/iptables -A INPUT -i eth0 -s 224.0.0.0/4 -j DROP multicast # $SCIEZKA/iptables -A INPUT -i eth0 -s 240.0.0.0/5 -j DROP # reserved # Zezwalaj na wejście do wybranych serwisów dla # sieci wewnętrznej (eth0) # Strony www $SCIEZKA/iptables -A INPUT -i eth0 -s 10.0.0.0/0 -p tcp -dport http -m state --state NEW -j ACCEPT # Strony www + ssl $SCIEZKA/iptables -A INPUT -i eth0 -s 10.0.0.0/0 -p tcp -dport https -m state --state NEW -j ACCEPT # SSH $SCIEZKA/iptables -A INPUT -i eth0 -s 10.0.0.0/24 -p tcp -dport ssh -m state --state NEW -j ACCEPT # FTP $SCIEZKA/iptables -A INPUT -i eth0 -s 10.0.0.0/0 -p tcp -dport ftp -m state --state NEW -j ACCEPT $SCIEZKA/iptables -A INPUT -i eth0 -s 10.0.0.0/0 -p tcp -dport ftp-data -m state --state NEW -j ACCEPT # Proxy 9 ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI FILTROWANIE I MASKOWANIE IP Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. $SCIEZKA/iptables -A INPUT -i eth0 dport 8080 -m state --state NEW -j $SCIEZKA/iptables -A INPUT -i eth0 dport 8080 -m state --state NEW -j -s 10.0.0.0/0 -p tcp -ACCEPT -s 10.0.0.0/0 -p udp -ACCEPT # Poczta $SCIEZKA/iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 25 -m state --state NEW -j ACCEPT $SCIEZKA/iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 110 m state --state NEW -j ACCEPT (...) przykład reguł maskowania IP z pliku /etc/init.d/masquarada #!/bin/sh # WYBRANE reguły firewalla – MASKOWANIE ADRESÓW SCIEZKA=/sbin start () { echo "MASKOWANIE ADRESÓW START..." (...) # Włącz maskowanie adresów # SMTP $SCIEZKA/iptables -t nat -s 10.0.0.0/16 -A POSTROUTING -o eth1 -p tcp --dport 25 -j MASQUERADE # POP3 $SCIEZKA/iptables -t nat -s 10.0.0.0/16 -A POSTROUTING -o eth1 -p tcp --dport 110 -j MASQUERADE 10