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ć (iptables­save lub iptables­restore)
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 iptables­1.3.6.tar.gz # cd iptables­1.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 patch­o­matic­ng.
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 ftp­data 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 ­­connlimit­above 2 ­j REJECT ­­reject­with icmp­host­unreachable
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 ­­hashlimit­mode srcip ­­hashlimit­name 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