iptables/netfilter – co to takiego?

Transkrypt

iptables/netfilter – co to takiego?
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)
●
Iptables –
narzędzie do manipulacji regułami w
mechanizmie filtracji pakietów (netfiltrze) w jądrze.
●
(c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej
Iptables – jak to działa?
Netfilter na podstawie wczytanych kryteriów
sprawdza nagłówki (i ew. zawartość) pakietów
decydując o ich dalszym losie (akceptacja,
odrzucenie, modyfikacja).
●
Iptables dodaje reguły do netfiltra w oparciu o
poprawną składnię przekazaną z linii poleceń.
●
(c) mgr inż. Adam Mencwal, Katedra Informatyki Stosowanej
Iptables/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 –to­source 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\
­­to­port 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 ­­ttl­inc 1
iptables ­t mangle ­A POSTROUTING ­p icmp ­j TOS ­­set­tos 0x10
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