28 10 2004 netfilter


Netfilter jako Ściana Ognia
Aukasz Klimek
Szczecińska Grupa Użytkowników Linuksa/Uniksa
www.SzLUUG.org
Plan wykładu

Wstęp

Rozwinięcie

Zakończenie
Podstawowe pojęcia

reguła (ang. rule)  zasada postępowania z
pakietami składająca się z:

testów (ang. match), które określają, których pakietów
dotyczy dana reguła

akcji (ang. action) która ma zostać wykonana

łańcuch (ang. chain)  zbiór reguł ułożonych w
określonej kolejności

tablica (ang. table) - zbiór łańcuchów
Przykładowa reguła

iptables -I INPUT -s 192.168.1.1 -j DROP -t filter

INPUT  łańcuch

-s 192.168.1.1  test  adres zródłowy

-j DROP  akcja  porzucenie pakietu

-t filter  tablica filter

Składnia polecenia iptables

iptables [-t tablica] komenda [testy] [cel]

tablica: filter | nat | mangle

komenda: -I n | -A | -D | -R | -L | -F | -Z | -N |
-X | -P | -E

testy: -p | -s | -d | -i | -o | ...

cel: -j ACCEPT | -j DENY | -j REJECT | -j DROP
| -j inny_lancuch
Tablica filter

domyślna tablica, jeśli nie podamy opcji -t

używana do filtrowania pakietów

główne cele:

LOG, DROP, ACCEPT

REJECT
--reject-with icmp-net-unreachable | icmp-host-unreachable
| icmp-port-unreachable | icmp-proto-unreachable
| icmp-net-prohibited | icmp-host-prohibited
| icmp-admin-prohibited
Tablica nat

służy do definiowania zasad działania NAT

trafiają do niej tylko pakiety otwierające nowe
połączenie

specjalne cele:

SNAT  Source NAT  zmiana adresu zródłowego

DNAT  Destanation NAT  zmiana adresu celu

MASQUERADE  wolniejszy SNAT; sprawdza za
każdym razem adres IP, wspiera dynamiczne IP

Tablica mangle

służy głównie do modyfikowania pakietów

specjalne cele:

TOS  zmiana flag Type Of Service

TTL  zmiana Time To Live  czasu życia pakietu

MARK  znakowanie pakietów
Droga przez mękę ;)
dest=localhost
mangle: nat:
Sieć routing
PREROUTING PREROUTING
Proces filter: mangle:
lokalny INPUT INPUT
Droga przez mękę ;)
src=localhost
Proces mangle:
nat:
routing
lokalny OUTPUT
OUTPUT
nat: mangle: filter:
POSTROUTING POSTROUTING OUTPUT
Sieć
Droga przez mękę ;)
forwarding
mangle: nat:
Sieć 1
routing
PREROUTING PREROUTING
mangle: filter: mangle:
POSTROUTING FORWARD FORWARD
nat:
Sieć 2
POSTROUTING
Dodawanie i usuwanie reguł

iptables -I INPUT -s 192.168.1.1 -j DROP -t filter
wstawienie reguły na początku łańcucha INPUT

iptables -A INPUT -s 192.168.1.1 -j DROP -t filter
wstawienie reguły na końcu łańcucha INPUT

iptables -I INPUT 5 -s 192.168.1.1 -j DROP -t filter
wstawienie reguły na pozycji piątej łańcucha INPUT

iptables -D INPUT 3
usunięcie reguły z pozycji 3 łańcucha INPUT

iptables -D INPUT -s 192.168.1.1 -j DROP -t filter
usunięcie pierwszej reguły identycznej z podaną
Wyświetlanie listy reguł

iptables -L INPUT -t filter

Chain INPUT (policy ACCEPT)

target prot opt source destination

DROP all -- 1.2.3.3 anywhere

DROP all -- 1.2.3.7 anywhere

DROP all -- 1.2.3.4 anywhere

DROP all -- 1.2.3.3 anywhere


Nie podanie nazwy łańcucha spowoduje wyświetlenie
reguł dla wszystkich łańcuchów w danej tabeli
Zastępowanie reguł

iptables -R INPUT 3 -s 127.0.0.1 -j ACCEPT -t filter

Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 1.2.3.3 anywhere
DROP all -- 1.2.3.7 anywhere
ACCEPT all -- localhost anywhere
DROP all -- 1.2.3.3 anywhere
Zarządzanie łańcuchami

iptables -N nazwałańcucha -t filter

dodanie nowego łańcucha o nazwie nazwałańcucha

iptables -F nazwałańcucha -t filter

usunięcie wszystkich reguł z łańcucha nazwałańcucha

iptables -X nazwałańcucha -t filter

usunięcie łańcucha nazwałańcucha; nie może on
zawierać żadnych reguł

iptables -Z nazwałańcucha -t filter
wyzerowanie liczników dla danego łańcucha
Liczniki

każda reguła posiada licznik trafień

ilość pakietów

ilość bajtów

przykład:
iptables -I OUTPUT -d 81.210.40.2 -p icmp
zauważmy brak celu! dzięki temu zliczamy pakiety

iptables -v -L ...

Chain OUTPUT (policy ACCEPT 130 packets, 9161 bytes)
pkts bytes target prot opt in out source destination
26 2184 icmp -- * * 0.0.0.0/0 81.210.40.2
Zarządzanie łańcuchami - c.d.

iptables -P nazwałańcucha cel -t filter

ustalenie domyślnego celu dla łańcucha; łańcuch musi
być jednym z łańcuchów wbudowanych (INPUT,
FORWARD, OUTPUT, PREROUTING,
POSTROUTING), a cel to DROP lub ACCEPT

iptables -E staranazwa nowanazwa -t filter

zmiana nazwy łańcucha
Inne przydatne opcje

iptables

-n  nie zamieniaj adresów IP na nazwy hostów

-v  bądz głośny  podawaj więcej informacji
wartości liczbowe będą podawane z przyrostkami krotności
(M,G,...) chyba, że podamy argument -x

--line-numbers  pokazuj numery reguł

-c  użyte przy wstawianiu ustawia liczniki na podane
wartości, np. -c 20 4000
Podstawowe testy

iptables -I łańcuch -t tablica -p protokół

wybór protokołu, którego ma dotyczyć reguła;
najczęściej używane to tcp, udp i icmp oraz ALL;
pełna lista protokołów dostępna jest w pliku
/etc/protocols

iptables -I łańcuch -t tablica -s 192.168.1.234

zródłowy adres ip pakietu którego dotyczy reguła

iptables -I łańcuch -t tablica -d 192.168.1.234

docelowy adres ip pakietu którego dotyczy reguła
Podstawowe testy(2)

iptables -I łańcuch -t tablica -i eth0

wybór interfejsu (karty sieciowej) przez który wchodzą
pakiety

iptables -I łańcuch -t tablica -o eth0

wybór interfejsu (karty sieciowej) przez który
wychodzą pakiety
Protokół TCP

--sport NNN  port zródłowy pakietu

--dport NNN  port docelowy pakietu

--tcp-flags SYN, ACK, FIN, RST, URG, PSH |
ALL | NONE

flagi nagłówka TCP

--syn = --tcp-flags SYN,RST,ACK SYN

oznacza pakiet nawiązujący połączenie

--tcp-option N  sprawdza czy w nagłówku
ustawiona jest dana opcja
UDP i ICMP

UDP:

--sport, --dport

ICMP:

--icmp-type (patrz: iptables -p icmp -h)


modyfikator !

zanegowanie wartości znajdującej się za znakiem !

dotyczy większości testów
Przykłady

Zablokowanie wychodzących pakietów tcp
otwierających połączenie ze stroną www.wp.pl
iptables -A OUTPUT -d www.wp.pl -p tcp --dport 80 \
--syn -j DROP

wersja 2:
iptables -A OUTPUT -d www.wp.pl -p tcp --dport 80 \
--syn -j REJECT --reject-with icmp-admin-prohibited

Na czym (w praktyce) polega różnica?
Przykłady(2).

Wyłączenie odpowiadania na ping:

iptables -I INPUT -p icmp --icmp-type echo-request -j DROP

Reguły zabezpieczające sieć lokalną

Załóżmy, że mamy 2 karty sieciowe: eth0  wyjście do
Internetu, eth1  sieć lokalna 1.2.3.0/24....
iptables -I FORWARD -s 1.2.3.0/24 -i eth1 -j ACCEPT
iptables -I FORWARD -d 1.2.3.0/24 -o eth1 -j ACCEPT
iptables -P FORWARD DROP
Przykłady - c.d.

Firewall na serwerze DNS

iptables -A INPUT -p tcp --dport ! 53 -j DROP
iptables -A INPUT -p udp --dport ! 53 -j DROP

wersja 2:

iptables -P INPUT DROP
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
Bardziej skomplikowane zadanie

Stwórzmy 3 łańcuchy:

lancuch_tcp i lancuch_udp, zawierający dozwolone
porty odpowiednio dla protokołu TCP i UDP

łańcuch loguj_odrzuc, który zapisze informacje z
przechodzących przez niego pakietów do logów, a
następnie odrzuci je

Będziemy akceptować pakiety wychodzące na port
80 (tcp) i 53 (udp).
Bardziej skomplikowane zadanie(2)

iptables -N lancuch_tcp
iptables -N lancuch_udp
iptables -N loguj_odrzuc
iptables -A OUTPUT -p tcp -j lancuch_tcp
iptables -A OUTPUT -p udp -j lancuch_udp
iptables -A OUTPUT -j loguj_odrzuc
loguj_odrzuc

Logowanie pakietu:

iptables -A loguj_odrzuc -j LOG

Odrzucanie pakietu:

iptables -A loguj_odrzuc -j REJECT
lancuch_tcp, podejście 1

iptables -I lancuch_tcp -p tcp --dport ! 80 -j DROP
Efekt: pakiety wysyłane na port 80 także są odrzucane.
DLACZEGO ???
Przepływ danych przez nasze tabele
Pakiet na port 80 (tcp)
INPUT: TAK lancuch_tcp:
1. -p tcp -j lancuch_tcp 1. --dport ! 80 -j DROP
NIE
INPUT: Powrót lancuch_tcp:
2. koniec łańcucha
2. -p udp -j lancuch_udp
INPUT: loguj_odrzuc:
3. -j loguj_odrzuc 1. -j LOG
Pakiet loguj_odrzuc:
odrzucony 2. -j REJECT
SNAT i DNAT

SNAT  Source Network Address Translation 
technika pozwalająca na dynamiczną zamianę
adresu zródłowego w przechodzących przez daną
maszynę pakietach

DNAT  Destanation Network Address
Translation  technika pozwalająca na dynamiczną
zamianę adresu docelowego w przechodzących
przez daną maszynę pakietach
Prosty SNAT

SNAT może być używany do korzystania z Internetu
przez wiele maszyn z użyciem tylko 1 rzeczywistego
adresu IP.

Załóżmy, że posiadamy sieć lokalną 10.0.0.0/8 i
rzeczywisty (zewnętrzny) adres IP 1.2.3.4.

Najprostsza forma SNAT:

iptables -A POSTROUTING -t nat -s 10.0.0.0/8 \
-j SNAT --to 1.2.3.4

Pytanie: jaki teraz będzie efekt regułki:

iptables -I FORWARD -s 1.2.3.4 -j DROP
DNAT

NAT może być m.in. wykorzystane do prostego
load balancingu.

Załóżmy, że mamy klaster 2 serwerów www:
1.2.3.2 i 1.2.3.3. Z Internetem łączy je router
1.2.3.1 operujący na Linuksie. Niech
www.serwer.com wskazuje na host 1.2.3.1.

iptables -I PREROUTING -d 1.2.3.1 -p tcp \
--dport 80 -j DNAT --to 1.2.3.2 --to 1.2.3.3 -t nat

Regułka ta powoduje, że połowa żądań będzie
wysłana do serwera 1.2.3.2 a reszta do 1.2.3.3
Adres MAC

Czasem chcemy, aby użytkownicy mogli uzyskać
dostęp do Sieci tylko z określonych adresów mac

Służy to tego polecenie

iptables .... -m mac --mac 12:34:56:78:90:ab

Opcja -m pozwala skorzystać z dodatkowych, nie
uwzględnianych domyślnie, testów.
Adres MAC - przykład

Chcemy zablokować możliwość wysyłania
pakietów do użytkownika o adresie MAC
12:34:56:78:90:ab

[root@Coth: casa]# iptables -I OUTPUT -m mac \
--mac 12:34:56:78:90:ab -j DROP
iptables: Target problem

Wniosek: dopasowanie match może być używane
tylko tablicach wejściowych (PREROUTING,
INPUT, FORWARD), gdzie znany jest mac
nadawcy pakietu.
Adres MAC  przykład 2

Nadajemy użytkownikom dostęp do Sieci tylko
wtedy gdy ich adres IP pasuje do adresu MAC

# iptables -A FORWARD -m mac \
--mac 12:34:56:78:90:ab -s 1.2.3.4 -j ACCEPT
...
# iptables -A FORWARD -d 1.2.3.4 -j ACCEPT
# iptables -P FORWARD DROP
Problem: dużo reguł

Jeśli mamy dużo reguł podanych na poprzedniej
stronie i duży ruch, będą one spowalniały
działanie naszej sieci. Każdy pakiet będzie
bowiem musiał przejść (w najgorszym
przypadku) przez wszystkie reguły.

Obejście  podział na łańcuchy
Podział na łańcuchy

Przykład: sieć 1.2.3.0/24 dzielimy na 2 łańcuchy
# iptables -N siec1; iptables -N siec2; iptables -P FORWARD DROP
# iptables -A FORWARD -s 1.2.3.0/25 -j siec1
# iptables -A FORWARD -s 1.2.3.128/25 -j siec2
# iptables -A FORWARD -d 1.2.3.0/24 -j ACCEPT
# iptables -A siec1 -s 1.2.3.1 -m mac .... -j ACCEPT
...
# iptables -A siec1 -s 1.2.3.127 -m mac .... -j ACCEPT
# iptables -A siec1 -s 1.2.3.128 -m mac .... -j ACCEPT
...
# iptables -A siec1 -s 1.2.3.254 -m mac .... -j ACCEPT
Efekt podziału  pakiet odrzucony
Oszacowanie ilości porównań
pakiet
pakiet
N reguł
3 reguły
pakiet
pakiet
odrzucony
odrzucony
Przed podziałem
Po podziale
Jaki jest inny sposób minimalizacji ilości porównań w tym przypadku?
Efekt podziału  pakiet przyjęty
Przypadek najgorszy
pakiet
pakiet
N-1 reguł
1-2 reguły
pakiet
N/2 reguł
N/2 reguł
przyjęty
pakiet
przyjęty
Przed podziałem
N-1 porównań
Po podziale  N/2 + ok. 1 reguły
Efekt podziału  pakiet przyjęty
Przypadek średni
pakiet
pakiet
N/2 reguł
1 reguła
pakiet
N/4 reguł
N/4 reguł
przyjęty
pakiet
przyjęty
Przed podziałem
N/2 porównań
Po podziale  N/4 + 1 porównań
Podział regułek - podsumowanie

Istnieje możliwość takiego skonstruowania reguł,
aby ilość porównań w najgorszym wypadku
wynosiła log2(N)

Jednak czy warto?

łańcuchy zajmują zasoby

przemieszczanie się między łańcuchami troszkę trwa
Patch-o-matic

Patch-o-matic to zbiór dodatkowych dopasowań i
celów dla iptables.

Przykład  test limit:

iptables -A INPUT -p tcp --dport 80 -m limit --limit
5/min -j LOG

Przykład  test multiport

iptables -A INPUT -p tcp -m multiport --dports
80,81,82 -m limit --limit 5/min -j LOG
Literatura

man 8 iptables

http://www.netfilter.org/documentation/

http://iptables-tutorial.frozentux.net/iptables-
tutorial.html
KONIEC
Dziękuję za uwagę


Wyszukiwarka

Podobne podstrony:
E marketing PoĹĽegnanie z banerem 10 2004
wrozka 10 2004
wykład psb 28 10 2014
04 28 10
Głosowanie nad nowym prawem wyborczym w czwartek (28 10 2009)
28 10 2011 expression écrit
Prawne aspekty etosu zawodowego pracownikow administracji publicznej 28 10 2015 (1)
Materiały do wykładu 4 (28 10 2011)
FM wyklad 4 28 10 2010
MN 28 10 09 Kamil Ostaszewski sprawozdanie
Analiza Wykład 4 (28 10 10) ogarnijtemat com

więcej podobnych podstron