Filtrowanie IP

Transkrypt

Filtrowanie IP
ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI
FILTROWANIE I MASKOWANIE IP
Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa.
FILTROWANIE IP
mechanizm decydujący, które typy datagramów IP mają być odebrane, które
odrzucone.
Odrzucenie oznacza usunięcie, zignorowanie datagramów, tak jakby nie zostały w ogóle
odebrane.
funkcja warstwy sieciowej.
Kryteria wybierania datagramów:
-
typ protokołu, np. TCP, UDP, ICMP,
-
numer gniazda (dla TCP i UDP),
-
typ datagramu, np. SYN / ACK, dane, ICMP Echo Request,
-
adres źródłowy datagramu,
-
adres docelowy datagramu.
Reguły filtrowania IP składają się z kombinacji powyższych kryteriów.
Firewall pod Linuksem
Wersja jądra
Narzędzie
do 2.0
ipfwadm
(IP Firewall Administration)
2.2.x
ipchains
(IP Chains)
2.3.15 i kolejne
iptables
netfilter (uniwersalne)
1
ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI
FILTROWANIE I MASKOWANIE IP
Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa.
Etapy przetwarzania datagramu IP
pozostałe części jądra
gniazda sieciowe
inne protokoły
4
2
protokoły TCP / UDP
oprogramowanie routujące IP
?
3
1 sterownik Ethernet
?
5
sterownik PPP
inny sterownik
? – decyzje dotyczące rutingu
Odbieranie:
-
pobranie datagramu (1),
-
analiza adresu przeznaczenia datagramu,
-
przetwarzanie datagramu przez lokalną maszynę (2),
-
poszukiwanie trasy w tablicy routingu, przekazanie datagramu do odpowiedniego
interfejsu (3).
Wysyłanie:
-
przesłanie z lokalnych procesów do oprogramowania routującego, przekazanie do
odpowiednich interfejsów (4),
-
analiza adresu przeznaczenia, ustalenie trasy dla datagramu,
-
wysłanie datagramu (5).
Analiza przepływów:
2
ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI
FILTROWANIE I MASKOWANIE IP
Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa.
1 → 3 → 5 – maszyna routująca między hostem w sieci Ethernet a hostem osiągalnym przez
łącze PPP.
1 → 2 i 4 → 5 – dane przychodzące i wychodzące z/do programu działającego na danym
hoście lokalnym.
4 → 3 → 2 – przepływ danych przez połączenie pętli zwrotnej.
REGUŁY pod netfilter
wejściowa INPUT – dotyczy przepływu 2 na powyższym diagramie,
przekazywania FORWARD – dotyczy przepływu 3,
wyjściowa OUTPUT – dotyczy przepływu 4,
Polityka domyślna – pierwsza reguła, która określa co zrobić z datagramami, które nie
będą obsługiwane w żaden specjalny sposób.
Reguły firewalla są dopasowywane kolejno.
Polecenie iptables służy do konfigurowania firewalla oraz translacji adresów
sieciowych (protokół Network Address Translation).
Składnia iptables:
iptables polecenie określenie_reguły rozszerzenia
Polecenia:
-A łańcuch
dodanie jednej lub kilku reguł na koniec danego łańcucha
-I łańcuch num_reguły
wstawienie jednej lub kilku reguł na początku danego łańcucha
-D łańcuch
usunięcie jednej lub kilku reguł z danego łańcucha zawierającego takie reguły
-D łańcuch num_reguły
usunięcie reguły znajdującej się na pozycji num_reguły w danym łańcuchu
-R łańcuch num_reguły
3
ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI
FILTROWANIE I MASKOWANIE IP
Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa.
zastąpienie reguły na pozycji num_reguły w danym łańcuchu regułą o podanej
charakterystyce
-C łańcuch
sprawdzenie danym łańcuchem datagramu opisywanego przez regułę. Zwraca
komunikat opisujący, w jaki sposób łańcuch przetworzył datagram – przydatne
w testowaniu konfiguracji firewalla.
-L [łańcuch]
wylistowanie reguł z zdanego łańcucha lub ze wszystkich łańcuchów
-F [łańcuch]
usunięcie reguł z danego łańcucha lub ze wszystkich łańcuchów
-Z [łańcuch]
wyzerowanie liczników bajtów i datagramów w danym łańcuchu lub we
wszystkich łańcuchach
-N łańcuch
utworzenie nowego łańcucha o danej nazwie – nie mogą istnieć łańcuchy o tej
samej nazwie
-X [łańcuch]
usunięcie danego łańcucha zdefiniowanego przez użytkownika lub wszystkich
takich łańcuchów
-P łańcuch polityka
ustawienie domyślnej polityki dla danego łańcucha. Dopuszczalne polityki to:
ACCEPT – pozwala na przepuszczenie datagramu,
DROP – datagram jest odrzucany,
QUEUE – datagram jest przekazywany do przestrzeni użytkownika w celu
dalszego przetwarzania,
4
ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI
FILTROWANIE I MASKOWANIE IP
Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa.
RETURN – kod firewalla IP wraca do łańcucha, który go wywołał i
kontynuuje działanie od następnej reguły.
Parametry definicji reguł:
-p [!] protokół
określa protokół datagramu, który ma pasować do tej reguły, np. tcp, udp, icmp
(nazwy lub numery zgodnie z plikiem /etc/protocols);
! oznacza negację reguły, tzn. datagram będzie pasował do wszystkich
protokołów poza wymienionymi
-s [!] adres [/maska]
adres źródłowy datagramu (w postaci nazwy hosta, adresu sieci lub adresu IP);
maska może być podana tradycyjnie, np. 255.255.255.0 lub „współcześnie”,
np. 24
maska sieci
bity
255.0.0.0
8
255.255.0.0
16
255.255.255.0
24
255.255.255.128
25
255.255.255.192
26
255.255.255.224
27
255.255.255.240
28
255.255.255.248
29
255.255.255.252
30
-d [!] adres [/maska]
adres docelowy datagramu (opis jak wyżej)
-j cel
jakie działania mają być podjęte, gdy reguła zostanie dopasowana.
Dopuszczalny cel to ACCEPT, DROP, QUEUE, RETURN
5
ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI
FILTROWANIE I MASKOWANIE IP
Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa.
-i [!] nazwa_interfejsu
określa interfejs przyjmujący datagram (! – negacja); nazwa interfejsu
zakończona znakiem + oznacza każdy interfejs, którego nazwa rozpoczyna się
od podanego ciągu.
-o [!] nazwa_interfejsu
określa interfejs, pod który datagram będzie przesłany
[!]-f
mówi, że dana reguła dotyczy tylko drugiego i dalszych fragmentów
datagramu, nie dotyczy fragmentu pierwszego.
Opcje:
-v
wyświetla „bogate” wyniki (więcej informacji)
-n
wyświetla adresy IP i numery portów jako liczby
i inne.
Rozszerzenia:
Iptables jest narzędziem rozszerzalnym poprzez opcjonalne moduły bibliotek dzielonych. Aby
z nich skorzystać ich nazwy muszą być poprzedzone argumentem –m nazwa.
Przykład rozszerzenia dla TCP:
-sport [!] [port[:port]]
określa port, z którego musi pochodzić datagram, aby pasował do reguły; np.
20:25 oznacza porty od numeru 20 do25 włącznie.
6
ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI
FILTROWANIE I MASKOWANIE IP
Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa.
MASKOWANIE IP
translacja adresów sieciowych (Network Address Translation – NAT):
proces modyfikacji adresów sieciowych zawartych w nagłówkach datagramu, który
zachodzi w czasie przesyłania,
maskowanie IP (ang. IP masquerading), jedna z odmian translacji adresów, pozwala
hostom z adresem sieci prywatnej przedstawić sie w Internecie pod jednym publicznym
adresem IP.
192.168.1.0 / 255.255.255.0
i
n
t
e
r
n
e
t
eth1
150.254.173.3
eth0
router z
maskowaniem
192.168.1.1
L
A
N
192.168.1.2
192.168.1.3
7
ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI
FILTROWANIE I MASKOWANIE IP
Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa.
przykład reguł filtrowania IP z pliku /etc/init.d/firewall
#!/bin/bash
# WYBRANE reguły firewalla
# - różne dla każdej karty sieciowej
#
karta eth1 - Internet
#
karta eth0 - sieć wewnętrzna
# Zmienne środowiskowe
SCIEZKA=/sbin
MOJ_IP=150.254.173.3
# Reguły startowe firewalla
start () {
echo "FIREWALL START... "
# reset ustawień
# INPUT
$SCIEZKA/iptables -F INPUT
$SCIEZKA/iptables -P INPUT ACCEPT
# FORWARD
$SCIEZKA/iptables -F FORWARD
$SCIEZKA/iptables -P FORWARD ACCEPT
# OUTPUT
$SCIEZKA/iptables -F OUTPUT
$SCIEZKA/iptables -P OUTPUT ACCEPT
# Domyślna zasada postępowania (polityka) firewalla: odrzuć
wszystko
$SCIEZKA/iptables -P INPUT DROP
# Akceptuj tylko wywołania z pętli zwrotnej
# (loopback; lo; 127.0.0.1), resztę odrzucaj
$SCIEZKA/iptables -A INPUT -i lo -j ACCEPT
# Odrzucaj połączenia na kartę eth1 (Internet)
# z adresów „nierutowalnych” i adresu
# wewnętrznego(lo)
$SCIEZKA/iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
clasa A
$SCIEZKA/iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
clasa B
#
#
8
ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI
FILTROWANIE I MASKOWANIE IP
Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa.
$SCIEZKA/iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP #
clasa C
$SCIEZKA/iptables -A INPUT -i eth1 -s 224.0.0.0/4 -j DROP
multicast
#
$SCIEZKA/iptables -A INPUT -i eth1 -s 240.0.0.0/5 -j DROP
reserved
#
# Na eth0 nie może pojawić się żaden adres spoza puli
10.0.0.0/24 (oznaczający sieć lokalną)
$SCIEZKA/iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
clasa B
#
$SCIEZKA/iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP #
clasa C
$SCIEZKA/iptables -A INPUT -i eth0 -s 224.0.0.0/4 -j DROP
multicast
#
$SCIEZKA/iptables -A INPUT -i eth0 -s 240.0.0.0/5 -j DROP # reserved
# Zezwalaj na wejście do wybranych serwisów dla
# sieci wewnętrznej (eth0)
# Strony www
$SCIEZKA/iptables -A INPUT -i eth0 -s 10.0.0.0/0 -p tcp -dport http -m state --state NEW -j ACCEPT
# Strony www + ssl
$SCIEZKA/iptables -A INPUT -i eth0 -s 10.0.0.0/0 -p tcp -dport https -m state --state NEW -j ACCEPT
# SSH
$SCIEZKA/iptables -A INPUT -i eth0 -s 10.0.0.0/24 -p tcp -dport ssh -m state --state NEW -j ACCEPT
# FTP
$SCIEZKA/iptables -A INPUT -i eth0 -s 10.0.0.0/0 -p tcp -dport ftp -m state --state NEW -j ACCEPT
$SCIEZKA/iptables -A INPUT -i eth0 -s 10.0.0.0/0 -p tcp -dport ftp-data -m state --state NEW -j ACCEPT
# Proxy
9
ZARZĄDZANIE LOKALNYMI SIECIAMI KOMPUTEROWYMI
FILTROWANIE I MASKOWANIE IP
Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa.
$SCIEZKA/iptables -A INPUT -i eth0
dport 8080 -m state --state NEW -j
$SCIEZKA/iptables -A INPUT -i eth0
dport 8080 -m state --state NEW -j
-s 10.0.0.0/0 -p tcp -ACCEPT
-s 10.0.0.0/0 -p udp -ACCEPT
# Poczta
$SCIEZKA/iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 25 -m
state --state NEW -j ACCEPT
$SCIEZKA/iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 110 m state --state NEW -j ACCEPT
(...)
przykład reguł maskowania IP z pliku /etc/init.d/masquarada
#!/bin/sh
# WYBRANE reguły firewalla – MASKOWANIE ADRESÓW
SCIEZKA=/sbin
start () {
echo "MASKOWANIE ADRESÓW START..."
(...)
# Włącz maskowanie adresów
# SMTP
$SCIEZKA/iptables -t nat -s 10.0.0.0/16 -A POSTROUTING -o eth1
-p tcp --dport 25 -j MASQUERADE
# POP3
$SCIEZKA/iptables -t nat -s 10.0.0.0/16 -A POSTROUTING -o eth1
-p tcp --dport 110 -j MASQUERADE
10

Podobne dokumenty