28 10 2004 netfilter

background image

Netfilter jako Ściana Ognia

Łukasz Klimek <

casa@szluug.org

>

Szczecińska Grupa Użytkowników Linuksa/Uniksa

www.SzLUUG.org

background image

Plan wykładu

Wstęp

Rozwinięcie

Zakończenie

background image

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

background image

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 źródłowy

-j DROP

– akcja – porzucenie pakietu

-t filter

– tablica filter

background image

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

background image

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

background image

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 źródłowego

DNAT – Destanation NAT – zmiana adresu celu

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

background image

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

background image

Droga przez mękę ;)

dest=localhost

mangle:

PREROUTING

nat:

PREROUTING

routing

mangle:

INPUT

filter:

INPUT

Proces

lokalny

Sieć

background image

Droga przez mękę ;)

src=localhost

routing

mangle:

OUTPUT

filter:

OUTPUT

Sieć

Proces

lokalny

nat:

OUTPUT

mangle:

POSTROUTING

nat:

POSTROUTING

background image

Droga przez mękę ;)

forwarding

mangle:

PREROUTING

nat:

PREROUTING

routing

mangle:

FORWARD

filter:

FORWARD

Sieć 2

Sieć 1

mangle:

POSTROUTING

nat:

POSTROUTING

background image

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ą

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Inne przydatne opcje

iptables

-n

– nie zamieniaj adresów IP na nazwy hostów

-v

– bądź 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

background image

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

źró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

background image

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

background image

Protokół TCP

--sport NNN

– port źró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

background image

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

background image

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?

background image

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

background image

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

background image

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).

background image

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

background image

loguj_odrzuc

Logowanie pakietu:

iptables -A loguj_odrzuc -j LOG

Odrzucanie pakietu:

iptables -A loguj_odrzuc -j REJECT

background image

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 ???

background image

Przepływ danych przez nasze tabele

Pakiet na port 80 (tcp)

INPUT:

1. -p tcp -j lancuch_tcp

lancuch_tcp:

1. --dport ! 80 -j DROP

TAK

lancuch_tcp:

2. koniec łańcucha

NIE

INPUT:

2. -p udp -j lancuch_udp

Powrót

INPUT:

3. -j loguj_odrzuc

loguj_odrzuc:

1. -j LOG

loguj_odrzuc:

2. -j REJECT

Pakiet

odrzucony

background image

SNAT i DNAT

SNAT – Source Network Address Translation –

technika pozwalająca na dynamiczną zamianę
adresu

źró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

background image

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

background image

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

background image

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.

background image

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.

background image

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

background image

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

background image

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

background image

Efekt podziału – pakiet odrzucony

Oszacowanie ilości porównań

N reguł

Przed podziałem

3 reguły

Po podziale

pakiet

pakiet

pakiet

odrzucony

pakiet

odrzucony

Jaki jest inny sposób minimalizacji ilości porównań w tym przypadku?

background image

Efekt podziału – pakiet przyjęty

Przypadek najgorszy

N-1 reguł

Przed podziałem
N-1 porównań

1-2 reguły

Po podziale – N/2 + ok. 1 reguły

pakiet

pakiet

pakiet

przyjęty

N/2 reguł

N/2 reguł

pakiet

przyjęty

background image

Efekt podziału – pakiet przyjęty

Przypadek średni

N/2 reguł

Przed podziałem
N/2 porównań

1 reguła

Po podziale – N/4 + 1 porównań

pakiet

pakiet

pakiet

przyjęty

N/4 reguł

N/4 reguł

pakiet

przyjęty

background image

Podział regułek - podsumowanie

Istnieje możliwość takiego skonstruowania reguł,

aby ilość porównań w najgorszym wypadku

wynosiła log

2

(N)

Jednak czy warto?

łańcuchy zajmują zasoby

przemieszczanie się między łańcuchami troszkę trwa

background image

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

background image

Literatura

man 8 iptables

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

http://iptables-tutorial.frozentux.net/iptables-
tutorial.html

background image

KONIEC

Dziękuję za uwagę


Wyszukiwarka

Podobne podstrony:
Kosci, kregoslup 28[1][1][1] 10 06 dla studentow
8.10.2004 MNI w, Studia, Pedagogika
28.10.2007, Kosmetologia, histologia
28 10 2011
Immunologia wykład III (28 10 13)
28 10
MiBM Sr14 28 10 2015
Materiały do wykładu 4 (28 10 2011)
chemia 28.10.2007, Chemia kosmetyczna
konspekt 28.10.2010, scenariusze
897480 1400SRM0499 (10 2004) UK EN
zadanie 28.10.2010 2, egzamin na rzeczoznawcę majątkowego, pazdziernik 2010
MEDYTACJA 8 10 2004
28.10.07 - wyklady prawoznawstwo, Administracja UŚ (licencjat), I semestr, Prawoznawstwo
diskugp 28.10.09, I semestr, DiSKUGP
DZIEJE MYŚLI O SZTUCE, DZIEJE MYŚLI O SZTUCE, WYKŁAD IV, 28.10.10
28.10.11, Wstęp do teorii komunikacji
28.10.11, Wstęp do teorii komunikacji

więcej podobnych podstron