Teletransmisja i sieci komputerowe 2



Podobne dokumenty
Systemy programowych zapór sieciowych (iptables)

Iptables. Krzysztof Rykaczewski. 15/11/06 1

iptables/netfilter co to takiego?

Wykład 3 Filtracja i modyfikacja pakietów za pomocą iptables.

Router programowy z firewallem oparty o iptables

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

Tomasz Greszata - Koszalin

Sieci komputerowe. Tadeusz Kobus, Maciej Kokociński Instytut Informatyki, Politechnika Poznańska

Instalacja i konfiguracja pakietu iptables

Pakiet Iptables. Filtrowanie pakietów i filtrowanie stanowe

Sieci komputerowe. Zajęcia 4 Bezpieczeństwo w sieciach komputerowych

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat zapory sieciowej (firewall) oraz oprogramowania iptables.

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Zapory sieciowe i techniki filtrowania danych

Najprostsza odpowiedź, jaka przychodzi mi do głowy to, z powodu bezpieczeństwa.

Sieci Komputerowe Translacja adresów sieciowych

Co to jest iptables?

Pakiet Iptables. Filtrowanie pakietów i filtrowanie stanowe

Sieci komputerowe. Tadeusz Kobus, Maciej Kokociński Instytut Informatyki, Politechnika Poznańska

Warsztaty z Sieci komputerowych Lista 9

Zarządzanie bezpieczeństwem w sieciach

Sieci komputerowe. Tadeusz Kobus, Maciej Kokociński Instytut Informatyki, Politechnika Poznańska

Zadanie1: Odszukaj w Wolnej Encyklopedii Wikipedii informacje na temat NAT (ang. Network Address Translation).

iptables -F -t nat iptables -X -t nat iptables -F -t filter iptables -X -t filter echo "1" > /proc/sys/net/ipv4/ip_forward

eth /30 eth1 eth /30 eth /30 Serwer IPERF

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat zapory sieciowej.

Iptables informacje ogólne

Wdrażanie i zarządzanie serwerami zabezpieczającymi Koncepcja ochrony sieci komputerowej

Zadania do wykonania Firewall skrypt iptables

Firewalle do zastosowań domowych

Bezpieczeństwo w M875

ZiMSK NAT, PAT, ACL 1

Warsztaty z Sieci komputerowych Lista 8

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Opracowany na podstawie

Wprowadzenie 5 Rozdział 1. Lokalna sieć komputerowa 7

Zarządzanie ruchem w sieci małego ISP Michał Prokopiuk

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

Kształtowanie ruch w sieciach Linux

Konfiguracja zapory sieciowej na routerze MikroTik

Linux. iptables, nmap, DMZ

NAT/NAPT/Multi-NAT. Przekierowywanie portów

ARP Address Resolution Protocol (RFC 826)

7. Konfiguracja zapory (firewall)

CONFidence 13/05/2006. Jarosław Sajko, PCSS

DHCP + udostępnienie Internetu

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

Instrukcje dotyczące funkcji zarządzania pasmem w urządzeniach serii ZyWALL.

Adresy w sieciach komputerowych

OBSŁUGA I KONFIGURACJA SIECI W WINDOWS

T: Konfiguracja interfejsu sieciowego. Odwzorowanie nazwy na adres.

Dlaczego? Mało adresów IPv4. Wprowadzenie ulepszeń względem IPv4 NAT CIDR

Systemy operacyjne i sieci komputerowe Szymon Wilk Adresowanie w sieciach Klasy adresów IP a) klasa A

Wykład Nr Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia

Opis ogólny ustawień NAT na podstawie Vigora serii 2700

Tomasz Greszata - Koszalin

Konfiguracja połączenia G.SHDSL punkt-punkt w trybie routing w oparciu o routery P-791R.

4. Podstawowa konfiguracja

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Sieci komputerowe - administracja

Przesyłania danych przez protokół TCP/IP

Przekierowanie portów w routerze - podstawy

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP. WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r.

Routing - wstęp... 2 Routing statyczny... 3 Konfiguracja routingu statycznego IPv Konfiguracja routingu statycznego IPv6...

Firewall bez adresu IP

Instrukcja dotycząca funkcji zarządzania pasmem w urządzeniach serii Prestige 660HW.

Warstwa sieciowa. Model OSI Model TCP/IP. Aplikacji. Aplikacji. Prezentacji. Sesji. Transportowa. Transportowa

Tworzenie maszyny wirtualnej

Konfiguracja zapory Firewall w systemie Debian.

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

(źródło: pl.wikipedia.pl) (źródło:

ABA-X3 PXES v Podręczna instrukcja administratora. FUNKCJE SIECIOWE Licencja FDL (bez prawa wprowadzania zmian)

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

Zapora systemu Windows Vista

Uproszczony opis obsługi ruchu w węźle IP. Trasa routingu. Warunek:

SIECI KOMPUTEROWE Adresowanie IP

Kierunek: technik informatyk 312[01] Semestr: II Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

pasja-informatyki.pl

Translacja adresów - NAT (Network Address Translation)

Projektowanie bezpieczeństwa sieci i serwerów

Ćwiczenie 5a Sieć komputerowa z wykorzystaniem rutera.

Ćwiczenie Konfiguracja statycznych oraz domyślnych tras routingu IPv4

Strona1. Suse LINUX. Konfiguracja sieci

MODEL OSI A INTERNET

Protokoły sieciowe - TCP/IP

Sieci komputerowe. Tadeusz Kobus, Maciej Kokociński Instytut Informatyki, Politechnika Poznańska

Zarządzanie bezpieczeństwem w sieciach dr inż. Robert Banasiak, mgr inż. Rafał Jachowicz, Instytut Informatyki Stosowanej PŁ, 2013

Instrukcja oryginalna Urządzenie posiada oznaczenie MODUŁ KOMUNIKACYJNY CENTRAL WENTYLACYJNYCH. WebManipulator

ADRESY PRYWATNE W IPv4

Firewall'e. Cele firewalli

Sieci komputerowe - Wstęp do intersieci, protokół IPv4

Telefon AT 530 szybki start.

Zapory sieciowe i techniki filtrowania.

Warstwa sieciowa rutowanie

Sieci komputerowe i bazy danych

Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol)

Internet Protocol v6 - w czym tkwi problem?

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

WAŻNE: Słowo 'auto' oznacza, że konfigurujemy interfejs fizyczny. Wymienione po nim nazwy

System operacyjny Linux

Telefon IP 620 szybki start.

Transkrypt:

ZAKŁAD SYSTEMÓW KOMPUTEROWYCH Teletransmisja i sieci komputerowe 2 LABORATORIUM Tomasz Orczyk Bielsko-Biała 2012

Zajęcia 1 Konfiguracja wirtualnej maszyny z systemem Debian GNU Linux Lorem ipsum 1

Zajęcia 2 Wprowadzenie do IPTables Wprowadzenie Narzędzie IPTables stanowi interfejs użytkownika służący do konfigurowania filtra pakietów IPV4 wbudowanego w jądro systemu GNU/Linux. Moduł ten nosi nazwę netfilter. Konfiguracja Konfigurowanie filtracji polega na definiowaniu reguł, które tworzą łańcuchy, które z kolei zamknięte są w tabelach. Reguły przechowywane są w pamięci jądra, a do ich zapamiętywania i odtwarzania można wykorzystać skrypty iptables-save oraz iptables-restore. Każda reguła składa się z wzorca i akcji. Gdy pakiet poddawany jest analizie, najpierw dopasowywany jest do wzorca jeśli do niego pasuje, o dalszym losie wiadomości decyduje akcja reguły. Jeśli zaś dane w wiadomości nie pasują do wzorca danej reguły, pod uwagę brana jest kolejna reguła. Dla danego pakietu przeszukiwanie reguł trwa do momentu pierwszego dopasowania do wzorca lub (w przypadku braku dopasowania) do wyczerpania reguł. Reguły dzielą się na: reguły filtrujące, reguły translacji, reguły manipulacji. Wszystkie reguły tego samego typu zapamiętywane są w tablicach, istnieją trzy tablice wbudowane: filter nat mangle Analizowane pakiety IP dzielą się na następujące kategorie: pakiety dla których nasz host jest celem, pakiety których nasz host jest źródłem, pakiety dla których nasz host jest zarówno celem jak i źródłem, pakiety routowane. W zależności od rodzaju pakietu, jego przetwarzanie przebiega w kilku etapach. Na przykład dla pakietów routowanych etapy te w uproszczeniu wyglądają następująco: 1. pakiet dociera do interfejsu wejściowego, 2. zostaje wybrany dla niego właściwy interfejs wyjściowy, 3. pakiet opuszcza stację przez interfejs wyjściowy. 2

Na każdym etapie można stosować do pakietu różne typy reguł. Dlatego wewnątrz każdej tablicy reguły są dodatkowo grupowane ze względu na etap przetwarzania pakietu. Wobec tego różne tablice mogą zawierać grupy reguł związanych z tym samym etapem. Sekwencja reguł powstała przez połączenie tych grup nazywa się łańcuchem (ang. chain). Pakiet iptables zawiera pięć wbudowanych łańcuchów: INPUT (dla pakietów pierwszego rodzaju), OUTPUT (dla pakietów drugiego rodzaju), FORWARD (dla pakietów routowanych), PREROUTING, POSTROUTING. Dwa ostatnie łańcuchy zawarte są jedynie w tablicach nat i mangle. Składnia Ogólna postać reguły: iptables [ -t tablica ] komenda [wzorzec] [akcja] Komendy: -P łańcuch polityka - ustawienie domyślnej polityki dla łańcucha. Domyślna polityka stosowana jest dopiero wówczas, gdy pakiet nie pasuje do żadnej reguły łańcucha, -A łańcuch - dodanie reguły do określonego łańcucha, -I łańcuch [nr reguły] - wstawienie reguły do określonego łańcucha, jeśli zostanie podany nr reguły wtedy reguła zostanie wpisane w to miejsce zmieniając kolejność pozostałych, -L [łańcuch] - wyświetlenie wszystkich reguł łańcucha (lub wszystkich łańcuchów w danej tablicy); często używane z opcjami -n i -v, -F [łańcuch] - usunięcie wszystkich reguł łańcucha (lub ze wszystkich łańcuchów danej tablicy), -D łańcuch [nr reguły] - usunięcie konkretnej reguły w określonym łańcuchu, jeśli zostanie podany nr reguły wtedy zostanie usunięta reguła o tym numerze, -R łańcuch nr_reguły - zastąpienie reguły numer w określonym łańcuchu. -X [łańcuch] - usunięcie wszystkich pustych i niewbudowanych łańcuchów. Opcje wzorca: -s [!] ip[/netmask] - adres IP źródłowy (może być uogólniony do adresu sieci), -d [!] ip[/netmask] - adres IP docelowy (może być uogólniony do adresu sieci), -p [!] protokół - wybór protokołu: tcp, udp, icmp lub all (wszystkie protokoły stosu TCP/IP), -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, dzięki temu można wykorzystać kolejne opcje danego modułu. 3

Najważniejsze akcje: -j ACCEPT - przepuszczenie dopasowanych pakietów, -j DROP - usunięcie dopasowanych pakietów, -j REJECT - odrzucenie dopasowanych pakietów, -j LOG - logowanie dopasowanych pakietów, bez usunięcia ich z łańcucha, -j RETURN - usunięcie pakietu z łańcucha, pozwalając jednocześnie, aby dalej był pakiet 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, -j REDIRECT - przekierowanie pakietów do lokalnego systemu, -j MASQUERADE - translacja adresów źródłowych na adres dynamicznie przyznawany na interfejsie. Opis modułów Poniższy spis nie wyczerpuje listy dostępnych modułów ani nie opisuje ich użycia, w zależności od wersji i dystrybucji systemu zestaw dostępnych modułów może być różny. Aby zapoznać się ze szczegółami dotyczącymi stosowania poszczególnych modułów można skorzystać z wbudowanej pomocy: iptables -m <moduł> -h Dotyczące IPSec: ah - dopasowują się do pola "spi" w nagłówku AH pakietu, esp - dopasowują się do pola "spi" w nagłówku ESP pakietu, policy - dopasowują się do "policy" pakietu. Dopasowujące 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). Nadzorujące połączenia (stanowość): state - umożliwia zidentyfikowanie istniejących połączeń oraz nowych, conntrack - rozszerza możliwości modułu state, helper - pozwala określić "pomocnika" do przekazywania połączenia, np. standardowym pomocnikiem jest moduł pozwalający przekazywać połączenia ftp-data w trybie aktywnym. Określające typ pakietu: icmp - dopasowuje się do pakietów typu ICMP, tcp - dotyczy pakietów typu TCP, 4

udp - dotyczy pakietów typu UDP, unclean - dotyczy pakietów zniszczonych i niepoprawnych. Określające 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. 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, comment - umożliwia dopisanie komentarza do każdej reguły. 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 aplikacje 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 prawdopodobieństwem, np. 50% pakietów. Monitorujące: recent - tworzy listy adresów wykorzystają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 quota'ę dla określonych pakietów. Inne: 5

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 psd - pozwala wykryć skanowanie portów TCP i UDP. Opis 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ę dopuszczalnych celów, które również mogą być tworzone przez nas samych dla naszych potrzeb. Aby uzyskać bardziej szczegółowe informacje na temat konkretnego celu należy skorzystać z wbudowanej pomocy: iptables -j <cel> -h Zmiana adresów IP: BALANCE - podobne do DNAT, ale równomiernie rozkłada obciążenie na wiele adresów IP, DNAT - Destination NAT, MASQUERADE - ukrywanie źródłowych adresów IP, NETMAP - statyczna zamiana adresów całych podsieci, REDIRECT - przekierowanie ruchu na lokalny komputer, SAME - podobne do DNAT/SNAT, ale zawsze przydziela te same adresy IP konkretnym klientom, SNAT - Source NAT. Znakowanie pakietów: CONNMARK - znakuje połączenia, IPMARK - znakowanie pakietów na podstawie adresu IP, MARK - znakuje pakiety. 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. Śledzenie pakietów: NOTRACK - wyłącza śledzenie połączenia, TARPIT - przechwytuje połączenia i zawiesza je, w celu zabezpieczenie się przez skanowaniem typu Code Red i Nimda, TRACE - włącza śledzenie połączenia. Logowanie: LOG - logowanie pakietów, 6

ULOG - logowanie w przestrzeni użytkownika, Inne: REJECT - odrzuca pakiety wysyłając określony kod błędu do nadawcy, ROUTE - pozwala nadpisać wpisy tablicy tras, SET - dodaje/usuwa adresy z zakresów (polecenie ipset), XOR - pozwala zastosować proste zabezpieczenie danych pakietu, poprzez wykonanie funkcji XOR na danych i określonym haśle. Translacja adresów Technologia translacji adresów sieciowych (ang. Network Address Translation, w skrócie NAT) została po raz pierwszy zaproponowana przez firmę Cisco i w roku 1993 opisana w dokumencie RFC1631. Od końca lat 80-tych liczba komputerów dołączanych do sieci Internet wzrasta wykładniczo. To spowodowało, że przestrzeń adresów IP już w latach 90-tych się wyczerpywała. Zaobserwowano wówczas, że jeśli tempo zużycia przestrzeni IP się utrzyma, to w niedalekiej przyszłości (przewidywanej na lata 1994-95) zupełnie zabraknie publicznych adresów IP dla nowobudowanych sieci. Technologia NAT i leżące u jej podstaw nowe podejście do projektowania sieci IP, pozwoliły przedłużyć tę niedaleką przyszłość" co najmniej do dziś. Poniżej opisana została idea technologii NAT. Wiele dzisiejszych sieci IP nie opiera się już na publicznych adresach sieci, bo takich już brakuje. Zamiast tego stosowane są dla tych sieci adresy prywatne. Ponieważ adresy te nie są rejestrowane, może istnieć wiele sieci wykorzystujących tę samą pulę adresów prywatnych, a to czyni sieć Internet skalowalną. Ale z drugiej strony fakt, że adresy prywatne nie są unikalne, stwarza pewne ograniczenie. Otóż pakiety z takimi adresami nie mogą być przesyłane w Internecie, gdyż nie można określić dla nich trasy. I właśnie ten problem rozwiązuje technologia NAT. Dzięki niej do uzyskania łączności sieci prywatnej z Internetem wystarcza jeden adres publiczny IP - adres zewnętrznego interfejsu routera. Od strony Internetu cała sieć prywatna widziana jest pod tym jednym (lub kilkoma) adresem. Dalej opisano dwie główne odmiany NAT: translację adresów źródłowych SNAT (ang. Source NAT) i adresów docelowych DNAT (ang. Destination NAT). SNAT Translacja SNAT umożliwia komputerom w sieci prywatnej dostęp do Internetu, a dokładniej - do usług oferowanych przez różne serwery. Oznacza to, że pakiety, których źródłem są komputery sieci prywatnej, powinny docierać do tych serwerów, a odpowiedzi - wracać z powrotem. Proces translacji SNAT przebiega w dwóch krokach: gdy pakiet opuszcza sieć źródłową, router zamienia prywatny adres IP źródła na adres swojego publicznego interfejsu oraz numer portu źródłowego na inny, nie zajęty numer portu. Zapamiętuje tę zmianę w tablicy translacji w postaci odwzorowania oryginalny_adres_ip:oryginalny_port nowy_adres_ip:nowy_port. Dzięki zamianie adresu źródłowego na publiczny można dla pakietu z odpowiedzią jednoznacznie określić trasę. Nowy numer portu zaś pozwala dodatkowo rozróżniać poszczególne adresy prywatne, dzięki czemu z usług Internetu może jednocześnie korzystać wiele komputerów w sieci prywatnej. 7

gdy router otrzymuje pakiet-odpowiedź, publiczny adres docelowy (będący adresem źródłowym w poprzednim pakiecie) wraz z numerem portu docelowego są zamieniane z powrotem na oryginalne wartości zgodnie z zapamiętanym wcześniej odwzorowaniem. Dzięki temu odpowiedź dociera do właściwego procesu na właściwym komputerze. DNAT Translacja DNAT umożliwia komputerom z sieci publicznej dostęp do usług oferowanych przez serwery znajdujące się w sieci prywatnej. Oznacza to, że pakiety, których źródłem są komputery sieci publicznej, powinny docierać do tych serwerów, a odpowiedzi - wracać z powrotem. Usługi sieci prywatnej dostępne są dla sieci zewnętrznej pod publicznym adresem interfejsu routera. Translacja DNAT przebiega w dwóch krokach: gdy pakiet dociera do sieci prywatnej, jego adres IP docelowy jest ustawiony na publiczny adres zewnętrznego interfejsu routera; pod tym adresem bowiem usługa jest dostępna. Router zamienia ten adres na właściwy adres serwera w sieci lokalnej; w najprostszym przypadku numer portu docelowego nie ulega zmianie. gdy pakiet-odpowiedź wysłany z serwera w sieci lokalnej dociera do routera, z powrotem zamienia on prywatny adres źródłowy na adres publiczny swojego zewnętrznego interfejsu. Zbiory adresów IPSet Jest to narzędzie pozwalające użyć tablic (umiejscowionych w obszarze jądra) wypełnionych danymi z których można korzystać w regułach iptables. Narzędzie to nie jest standardowo dostępne w dystrybucji Debian/GNU Linux, a do działania, na chwilę obecną, wymaga zastosowania patcha na jądrze systemu i jego rekompilacji. Składnia ipset [ OPCJE ] POLECENIA [ OPCJE-POLECENIA ] POLECENIA := { create add del test destroy list save restore flush rename swap help version - } OPCJE := { -exist -output { plain save xml } -quiet -resolve - sorted } ipset create NAZWAZBIORU NAZWATYPU [ STWÓRZ-OPCJE ] ipset add NAZWAZBIORU DODAJ-WPIS [DODAJ-OPCJE ] ipset del NAZWAZBIORU USUŃ-WPIS [USUŃ-OPCJE ] ipset test NAZWAZBIORU SPRAWDŹ-WPIS [SPRAWDŹ-OPCJE ] ipset destroy [ NAZWAZBIORU ] ipset list [ NAZWAZBIORU ] ipset save [ NAZWAZBIORU ] ipset restore ipset flush [ NAZWAZBIORU ] ipset rename NAZWAZBIORU-Z NAZWAZBIORU-NA ipset swap NAZWAZBIORU-Z NAZWAZBIORU-NA ipset help [ NAZWATYPU ] 8

ipset version Typy struktur i tablic w IPSet. ipmap przechowuje adresy IP (max 65535), tworząc podajemy klasę lub przedział adresów macimap przechowuje adresy IP + adresy MAC tworzymy tak jak ipmap portmap przechowujemy w niej porty bądź zestawy portów iphash przechowuje adresy IP, ale w odróżnieniu od ipmap jest to dynamiczna tablica hashowana nethash hash zawierający maski sieci (CIDR) ipporthash hash dla pary : adres IP + port ipportiphash hash dla tripletu: adres IP + port + adres IP ipportnethash hash dla tripletu: adres IP + port + maska sieci (CIDR) iptree drzewo adresów IP (opcjonalnie możemy podać czas przechowywania wpisu w drzewie) iptreemap podobnie do iptree używa drzew do przechowywania jednak ostatni oktet adresu zapisany jest za pomocą mapy bitowej setlist lista w której trzymamy inne zestawy Zbiory IPSet mogą być używane w IPTables do opisu wzorców (set) oraz celów (SET), w pierwszym przypadku możliwe jest ich użycie zarówno jako źródła jak i celu, w zależności od przełącznika (src, dst) np.: iptables -A INPUT -m set --set blacklist src -j DROP 9

Zajęcia 3 Konfiguracja zapory sieciowej w oparciu o IPTables Wprowadzenie Programowe zapory sieciowe (ang. firewall) wykorzystywane mogą być do różnych celów w zależności od ich złożoności. Zapora sieciowa ma za zadanie filtrować ruch przychodzący, wychodzący oraz przechodzący przez dane urządzenie sieciowe (na przykład komputera). Dzięki filtrowaniu ruchu możemy poprawić bezpieczeństwo sieciowe urządzenia, należy jednak pamiętać, iż nigdy nie zapewnimy całkowitego bezpieczeństwa sieciowego, chyba że odłączymy komputer od sieci. Implementacja Jako, że konfiguracja IPTables nie jest trwale zapamiętywana, należy stworzyć skrypt uruchamiający firewall. Jako root tworzymy plik firewall w katalogu /etc/init.d: touch /etc/init.d/firewall chmod +x /etc/init.d/firewall nano -w /etc/init.d/firewall Następnie wypełniamy go niżej przedstawioną treścią, stanowiącą szkielet skryptu (UWAGA wywołanie skryptu w takiej postaci odetnie komputer od dostępu do Internetu): #!/bin/bash if [ "$1" = "start" ]; then echo "Uruchamiam firewall..." # czyszczenie reguł i łańcuchów iptables -F iptables X # ustalanie polityki domyślnej iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT # reguły filtrowania ruchu #... elif [ "$1" = "stop" ]; then echo "Zatrzymuję firewall..." # czyszczenie reguł i łańcuchów iptables -F iptables X # przywrócenie standardowej polityki domyślnej iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT fi Od tego momentu możliwe jest uruchamianie i zatrzymywanie firewalla poleceniem /etc/init.d/firewall z parametrem start lub stop. Aby reguły filtrowania były stosowane automatycznie po uruchomieniu systemu konieczne jest dopisanie w/w skryptu do skryptu startowego systemu, możemy tego dokonać wydając polecenie: update-rc.d firewall defaults 90 10

Reguły zapory sieciowej, czyli inaczej filtra pakietów, umieszczane są w tablicy filter, jest to tablica domyślna i nie trzeba jej jawnie wskazywać przy definiowaniu reguł. Jak wcześniej wspomniano reguły mogą dotyczyć pakietów przychodzących, wychodzących oraz przechodzących przez hosta na którym są zdefiniowane. Ważne jest aby konfigurując filtr pakietów w zdalnej sesji, zmieniając politykę domyślną na odrzucanie pakietów, pamiętać o wprowadzeniu reguł umożliwiających dostęp do konfigurowanego hosta przez SSH lub telnet przed zmianą polityki domyślnej. Z uwagi na fakt iż pakiety są dopasowywane do reguł z zachowaniem ich kolejności, zamiast polityki domyślnej, na końcu łańcucha, można dodać regułę bez wzorca, pełniącą funkcję polityki domyślnej. Zaporę można projektować według zasady przepuszczaj wszystko co nie jest zabronione lub odrzucaj wszystko co nie jest dozwolone. Bezpieczniejszym wariantem jest ten drugi i aby go osiągnąć należy zmodyfikować politykę domyślną łańcucha INPUT (oraz FORWARD), dla pakietów wychodzących zazwyczaj wystarczające jest wybiórcze blokowanie: iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP Najprostszym wariantem zapory jest zapora bezstanowa jej reguły zawierają wzorce oparte jedynie o adresy, protokoły i usługi (porty), np. aby zaakceptować odpowiedzi z serwera DNS oraz WWW należy dodać następujące reguły: iptables -A INPUT -p udp sport 53 j ACCEPT iptables -A INPUT -p tcp sport 80 j ACCEPT Nieco bardziej rozbudowanym wariantem jest zapora stanowa uwzględniająca dodatkowo stan połączenia, w tym przypadku, nie jest konieczne definiowanie usług od których odpowiedzi mają być przepuszczane przez zaporę, istnieje możliwość dopuszczenia całego ruchu zwrotnego (odpowiedzi ze zdalnych serwerów na żądania zainicjowane przez hosty w sieci lokalnej): iptables -A INPUT -d 192.168.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT 11

Zajęcia 4 Konfiguracja udostępniania dostępu do Internetu w oparciu o IPTables Wprowadzenie Mechanizm NAT, zwany również maskaradą stworzono aby umożliwić dostęp do Internetu komputerom w sieciach lokalnych. Pierwotnie, kiedy problem ograniczonej liczby adresów IP v4 jeszcze nie istniał, mechanizm ten służył głównie jako zabezpieczenie sieci przed dostępem z zewnątrz i do ukrywania struktury wewnętrznej sieci (stąd nazwa maskarada). Obecnie pełni nie tylko funkcję podnoszącą bezpieczeństwo ale również pozwala oszczędzać publiczne adresy IP. Mechanizm ten polega na translacji adresów (źródłowych bądź docelowych), tak aby cały ruch pomiędzy siecią lokalną, a Internetem mógł się odbywać z wykorzystaniem pojedynczego (lub kilku) publicznego adresu IP. Translacja adresów źródłowych (Source NAT) służy zapewnieniu dostępu do zasobów Internetu komputerom w sieci lokalnej, natomiast translacja adresów docelowych (Destination NAT) służy udostępnieniu usług działających na komputerach w sieci lokalnej do Internetu. Implementacja Konfigurację NATu można dopisać do skryptu firewalla bądź stworzyć osobny skrypt, gdyż podobnie jak w przypadku zapory sieciowej wszelkie ustawienia IPTables zostaną utracone po restarcie komputera. Internet 155.158.112.112 eth1 Linux Box 192.168.1.1 eth0 192.168.1.2 eth0 Host A 192.168.1.3 eth0 Host B Przed przystąpieniem do konfiguracji maskarady konieczne jest ustawienie flagi zezwalającej na przekazywanie pakietów (pomiędzy interfejsami sieciowymi), wpis ten należy umieścić na początku skryptu: echo 1 > /proc/sys/net/ipv4/ip_forward oraz statycznego adresu IP dla interfejsu pełniącego funkcję bramy dla sieci lokalnej (zwyczajowo przyjmuje się, że jest to pierwszy, rzadziej ostatni, adres w tej sieci: ifconfig eth0 192.168.1.1/24 up Następnie można przystąpić do konfiguracji maskarady. W IPTables istnieją dwa cele służące do translacji adresów źródłowych SNAT i MASQUERADE. Zasadnicza różnica pomiędzy nimi polega na tym, że w przypadku SNAT należy określić adres na jaki ma być dokonywana translacja, konieczne jest 12

więc posiadanie statycznego adresu IP na interfejsie sieciowym do Internetu. W przypadku celu MASQUERADE adres ten jest określany dynamicznie i może się zmieniać w trakcie działania. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE lub iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT 155.158.112.112 To w zasadzie cała konfiguracja, w bardziej złożonych konfiguracjach można dodatkowo określić interfejs sieciowy (lub jego adres) dla którego reguła ma działać. Oczywiście w tym najprostszym przypadku konfiguracja komputerów w sieci lokalnej musi zostać przeprowadzona ręcznie konieczne jest nadanie adresów IP ich interfejsom sieciowym, wprowadzenie adresu bramy oraz adresów serwerów DNS: ifconfig eth0 192.168.1.100/24 up route add default gw 192.168.1.1 vi /etc/resolv.conf Ostatnie polecenie otwiera w edytorze plik resolv.conf, w którym istnieje możliwość dodania maksymalnie trzech wpisów nameserver: nameserver 8.8.8.8 nameserver 8.8.4.4 Konfiguracja translacji adresów docelowych, zwana też przekserowaniem portów, wygląda analogicznie: iptables -t nat -I PREROUTING -p tcp -dport 8080 -j DNAT --to-destination 192.168.1.100:80 Jeśli dodatkowo aktywna jest zapora sieciowa, konieczne jest dodanie reguły przepuszczającej pakiety przychodzące na przekierowany port (tzw. odblokowanie lub otwarcie portu): iptables -A FORWARD -p tcp -d 192.168.1.100 -dport 80 -j ACCEPT jeśli korzystamy z zapory stanowej mającej wpis pozwalający na utrzymanie nawiązanych połączeń: iptables -A FORWARD -d 192.168.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT możemy użyć następującej składni: iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 80 -m state --state NEW -j ACCEPT 13

Zajęcia 5 Konfiguracja podziału pasma w oparciu o HTB Wprowadzenie HTB (Hierarchical Token Bucket) jest algorytmem pozwalającym na zarządzanie przepływem pakietów przez interfejs sieciowy. W oparciu o ten mechanizm możliwa jest realizacja tzw. zarządzania pasmem (Bandwidth Management). Ograniczeniem HTB jest możliwość sterownia jedynie ruchem wychodzącym z interfejsu, co w praktyce oznacza, że w przypadku sieci wykorzystującej maskaradę w prosty sposób można zarządzać jedynie ruchem przychodzącym (downlink). Implementacja Podobnie jak w przypadku IPTABLES, również HTB nie posiada mechanizmu zapamiętywania ustawień, konieczne jest więc stworzenie skryptu. Jako root tworzymy plik bandmgmt w katalogu /etc/init.d: touch /etc/init.d/bandmgmt chmod +x /etc/init.d/bandmgmt nano -w /etc/init.d/bandmgmt Następnie wypełniamy go niżej przedstawioną treścią, stanowiącą szkielet: #!/bin/bash if [ "$1" = "start" ]; then echo "Uruchamiam HTB..." # czyszczenie reguł tc qdisc del root dev eth0 # definicje reguł tc qdisc add dev eth0 root handle 1:0 htb # definicje klas tc class add dev eth0 parent 1:0 classid 1:1 htb rate 10000kbit ceil 10000kbit # # definicje filtrów # elif [ "$1" = "stop" ]; then echo "Zatrzymuję HTB..." # czyszczenie reguł tc qdisc del root dev eth0 fi W zamieszczonych tu przykładach, przyjęto że łącze jakim dysponujemy ma przepustowość 10Mbps, a interfejs do którego jest podłączona sieć LAN to eth0. W poniższym przykładzie dokonamy podziału pasma dla dwóch klientów A i B, zapewniając im pasmo gwarantowane 2Mbps z możliwością wykorzystania do 5Mbps. Należy też pamiętać aby do klasy głównej nie przypisywać maksymalnej przepustowości łącza, tak aby mieć pewność, że kolejkowanie pakietów będzie się odbywać na naszym hoście, a nie po stronie dostawcy usług internetowych (ISP) stąd 10000kbps, a nie 10Mbps (10240kbps). 14

Dla każdego z klientów definiujemy klasy pochodne od klasy głównej, gdyż pakiety przypisane do danej klasy współdzielą jej limit: tc class add dev eth0 parent 1:1 classid 1:2 htb rate 2mbit ceil 5mbit tc class add dev eth0 parent 1:1 classid 1:3 htb rate 2mbit ceil 5mbit Następnie tworzymy filtry przypisujące pakiety do wybranych klas na podstawie ich docelowych adresów IP (możliwe jest przypisanie różnych pakietów do jednej klasy): tc filter add dev eth0 protocol ip parent 1: u32 match ip dst 192.168.1.2/24 flowid 1:2 tc filter add dev eth0 protocol ip parent 1: u32 match ip dst 192.168.1.3/24 flowid 1:3 Możemy jeszcze określić inną niż domyślna (FIFO) metodę kolejkowania pakietów tutaj użyjemy SFQ który pomoże zapobiec zatkaniu łącza np. przez program typu p2p: tc qdisc add dev eth0 parent 1:2 handle 2:0 sfq perturb 10 tc qdisc add dev eth0 parent 1:3 handle 3:0 sfq perturb 10 Jeśli potrzebny jest bardziej szczegółowy podział, z rozbiciem na usługi, zachodzi potrzeba zdefiniowania odrębnej klasy dla każdej usługi na każdym z hostów: Internet eth1 Linux Box 192.168.1.1 eth0 192.168.1.2 host A (2Mbps) telnet (128kbps) www (512kbps) reszta (896kbps) 192.168.1.3 host B (2Mbps) tc class add dev eth0 parent 1:2 classid 1:21 htb rate 128kbit ceil 5mbit tc class add dev eth0 parent 1:2 classid 1:22 htb rate 512kbit ceil 5mbit tc class add dev eth0 parent 1:2 classid 1:23 htb rate 896kbit ceil 5mbit tc class add dev eth0 parent 1:3 classid 1:31 htb rate 128kbit ceil 5mbit tc class add dev eth0 parent 1:3 classid 1:32 htb rate 512kbit ceil 5mbit tc class add dev eth0 parent 1:3 classid 1:33 htb rate 896kbit ceil 5mbit Wtedy reguły filtra dotyczą klas pochodnych (128kbps na Telnet, 512kbps na WWW i pozostałe): tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.2/24 match ip sport 23 0xffff flowid 1:21 tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.2/24 match ip sport 80 0xffff flowid 1:22 tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.2/24 flowid 1:23 tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.3/24 match ip sport 23 0xffff flowid 1:31 15 telnet (128kbps) www (512kbps) reszta (896kbps)

tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.3/24 match ip sport 80 0xffff flowid 1:32 tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 192.168.1.3/24 flowid 1:33 W tym przypadku nie ma konieczności wykorzystania SFQ: tc qdisc add dev eth0 parent 1:21 handle 210:0 pfifo limit 10 tc qdisc add dev eth0 parent 1:22 handle 220:0 pfifo limit 10 tc qdisc add dev eth0 parent 1:23 handle 230:0 pfifo limit 10 tc qdisc add dev eth0 parent 1:31 handle 310:0 pfifo limit 10 tc qdisc add dev eth0 parent 1:32 handle 320:0 pfifo limit 10 tc qdisc add dev eth0 parent 1:33 handle 330:0 pfifo limit 10 Z filtrów można korzystać wspólnie z IPTables poprzez markowaniem pakietów. Cel MARK jest tzw. celem niekończącym, to znaczy, że po dopasowaniu do niego pakietu pozostaje on w łańcuchu: iptables -t mangle -A POSTROUTING -s 192.168.1.2 -o eth0 -p tcp sport 23 -j MARK set-mark 0 21 iptables -t mangle -A POSTROUTING -s 192.168.1.2 -o eth0 -p tcp sport 23 -j RETURN iptables -t mangle -A POSTROUTING -s 192.168.1.2 -o eth0 -p tcp sport 80 -j MARK set-mark 0 22 iptables -t mangle -A POSTROUTING -s 192.168.1.2 -o eth0 -p tcp sport 80 -j RETURN tc filter add dev eth2 protocol ip parent 1:0 handle 21 fw flowid 1:21 tc filter add dev eth2 protocol ip parent 1:0 handle 22 fw flowid 1:22 bądź całkowicie wyeliminować filtry przy pomocy celu CLASSIFY, który podobnie jak MARK jest celem niekończącym: iptables -t mangle -A POSTROUTING -s 192.168.1.2 -o eth0 -p tcp sport 23 -j CLASIFY --set-class 1:21 iptables -t mangle -A POSTROUTING -s 192.168.1.2 -o eth0 -p tcp sport 23 -j RETURN iptables -t mangle -A POSTROUTING -s 192.168.1.2 -o eth0 -p tcp sport 80 -j CLASSIFY --set-class 1:22 iptables -t mangle -A POSTROUTING -s 192.168.1.2 -o eth0 -p tcp sport 80 -j RETURN 16

Źródła http://zsk.wsti.pl/publikacje/iptables_przystepnie.htm http://www.netfilter.org/ http://www.physd.amu.edu.pl/~m_jurga/pld/firewall/ http://iptables.ovh.org/ http://wazniak.mimuw.edu.pl/index.php?title=bezpiecze%c5%84stwo_system%c3%b3w_komputer owych_-_laboratorium_12:systemy_programowych_zap%c3%b3r_sieciowych http://ipset.netfilter.org/ http://www.varlog.pl/2010/03/ipset-znany-i-nieznany/ http://opalsoft.net/qos/ds.htm http://luxik.cdi.cz/~devik/qos/ http://robert.nowotniak.com/en/security/htb/ http://stary.dug.net.pl/texty/htb.pdf 17

Spis treści Zajęcia 1... 1 Konfiguracja wirtualnej maszyny z systemem Debian GNU Linux... 1 Zajęcia 2... 2 Wprowadzenie do IPTables... 2 Wprowadzenie... 2 Konfiguracja... 2 Składnia... 3 Opis modułów... 4 Opis celów... 6 Zbiory adresów IPSet... 8 Składnia... 8 Zajęcia 3... 10 Konfiguracja zapory sieciowej w oparciu o IPTables... 10 Wprowadzenie... 10 Implementacja... 10 Zajęcia 4... 12 Konfiguracja udostępniania dostępu do Internetu w oparciu o IPTables... 12 Zajęcia 5... 14 Konfiguracja podziału pasma w oparciu o HTB... 14 Wprowadzenie... 14 Implementacja... 14 Źródła... 17 18