Filtraggio del traffico di rete Firewall • Il termine firewall usato nell

Transcript

Filtraggio del traffico di rete Firewall • Il termine firewall usato nell
Laboratorio di Amministrazione di Sistemi L-A
Filtraggio del traffico di rete
Si ringraziano sentitamente:
Angelo Neri (CINECA) per il materiale sulla classificazione, le
architetture ed i principi di funzionamento dei firewall
Fabio Bucciarelli (DEIS – Università di Bologna) per il materiale
sulla struttura e la configurazione del packet filter di Linux
Firewall
• Una immagine che rispecchia meglio la realtà del
firewall è la cinta muraria di una città medievale.
Naturalmente una città non può non avere contatti con
l'esterno e la cinta muraria è fornita di porte con
guardie che verificano se chi prova ad entrare o ad
uscire è autorizzato oppure no.
• Il firewall può quindi essere una buona difesa contro
una banda di briganti che provano ad entrare
palesemente armati in città ma non può nulla contro i
furti effettuati dagli abitanti stessi della città se non al
più controllare che nessuno esca col maltolto (se le
guardie sono state istruite in tal modo e sono più abili
nel perquisire i passanti di quanto questi siano capaci di
nascondere la refurtiva).
Firewall
Firewall
• Il termine firewall usato
nell'informatica non deriva da
"muro di fuoco" ma da "muro
antincendio". Il suo scopo è quindi
impedire che un incendio si
propaghi da una parte all'altra del
muro.
• Il firewall è quindi l'insieme delle
difese perimetrali, siano esse
realizzate in hardware od in
software, con uno o più dispositivi.
Packet filters
Classificazione dei firewall
• Un packet filter può essere stateful o stateless ma
praticamente tutte le implementazioni di packet filters
stateful offrono anche un qualche tipo di protocol
inspection per cui sono dei multilayer stateful firewall.
Per questo motivo col termine "packet filter" ci si
riferisce di solito a stateless packet filter.
• Un packet filter stateless prende le decisioni pacchetto
per pacchetto analizzando solo le info contenute nel
pacchetto stesso
• Un packet filter statefull utilizza anche informazioni di
stato della “connessione” o comunque comunicazione di
cui il pacchetto fa parte
Packet filters
Packet filters
• Un packet filter è un programma od un
dispositivo che controlla gli accessi ad una rete
analizzando i pacchetti in ingresso ed in uscita
e scegliendo quali bloccare e quali far passare
in base agli indirizzi IP di provenienza e di
destinazione. Nel contesto di una rete TCP/IP
vengono controllati anche le porte tcp/udp ed i
vari flag SYN, FYN, ACK, ecc.
• Altro parametro importante su cui si basano le
decisioni di un packet filter e’ l’ interfaccia sui
cui il pacchetto transita e la direzione
(ingresso o uscita)
• Il vantaggio principale del packet filtering
rispetto alle altre tecniche di filtraggio è che
questa è la tecnica più semplice da
implementare, richiede meno risorse hardware
ed è quindi la tecnica più economica e per
questo motivo è anche la più diffusa.
• Si può fare con praticamente qualunque router
e con la maggior parte dei sistemi operativi:
ƒ Linux
ƒ Windows da NT in poi
ƒ Macintosh da OS X
Packet filters
• Un packet filter analizza di ogni
pacchetto che passa:
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
ƒ
Interfaccia su cui passano i pacchetti.
Protocollo IP. Per esempio TCP, UDP, ICMP, ESP.
Indirizzo sorgente.
Indirizzo di destinazione.
Porta sorgente. Solo per i pacchetti TCP o UDP.
Porta di destinazione.
Flag di connessione. Per esempio SYN, ACK, RST,
FYN, ecc
Packet filters
• La regola d'oro per la
configurazione di un filtro è
permettere ciò che deve
passare e negare tutto il resto.
Purtroppo nella vita reale non
sempre è facile capire cosa si deve
permettere e cosa negare.
ƒ Direzione
Packet filters
• Un packet filter compara il valore dei campi IP
con quelli delle regole con cui e' stato
configurato ed in base a queste il pacchetto
passa oppure no.
• La configurazione del packet filter è
quindi fondamentale.
• Comunque anche con la migliore
configurazione il packet filter non verifica il
contenuto dei pacchetti per cui non può
bloccare virus ed ha problemi con protocolli
che negoziano le porte, come ad esempio FTP
attivo.
Packet filters: cosa filtrare
• Nella RFC2827 ci sono dei consigli
interessanti, in particolare:
ƒ Traffico in ingresso:
9 Bloccare i pacchetti destinati a servizi che non si vogliono
offrire su internet.
9 Bloccare gli indirizzi con source address illegali, di
broadcast, di loopback e riservati.
9 Se non si utilizza il multicast bloccare gli indirizzi
multicast (224.0.0.0/4)
9 Bloccare ICMP broadcast.
9 Bloccare echo UDP.
9 Bloccare i pacchetti provenienti dall'esterno con indirizzo
sorgente appartenente alla nostra rete.
Packet filters: cosa filtrare
• I source address da bloccare sono
quelli:
ƒ illegali (es. 0.0.0.0/8)
ƒ di broadcast (p.e. 255.255.255.255/32)
ƒ riservati; almeno quelli della rfc1918:
910.0.0.0/8
9172.16.0.0/12
9192.168.0.0/16
ƒ di loopback: 127.0.0.0/8
Packet filters: cosa filtrare
• Traffico in uscita:
• Bloccare il traffico con un source
address invalido. E' facile se la
nostra rete è una foglia,
praticamente impossibile
altrimenti.
Packet filters
• Caratteristiche e problemi di un packet filter stateless
ƒ Per permettere una comunicazione vanno esplicitamente permessi
i pacchetti in entrambe le direzioni
ƒ Ad es. dal mio PC voglio poter accedere a servizi esterni (ad
esempio navigare su Web) ma in generale NON voglio che
dall’esterno si possa accedere ad alcunchè sul mio PC (sono solo
“cliente” della rete). Posso lasciar passare tutti i pacchetti in uscita
e bloccare tutti pacchetti in ingresso tranne le risposte alle mie
richieste ma .. Come distinguere le risposte a richieste mie da
tentativi di accesso esterno al mio PC ?
9 Sui servizio TCP based ci possiamo basare sui Flag TCP: per iniziare
una connessione viene inviato un pacchetto con SYN=1 ma ACK=0,
posso bloccare tutti questi e ammettere ogni altra combinazione
(SYN=0 oppure SYN=1 e ACK<>0). Tali combinazioni vengono spesso
indicate con “established”. E’ chiaramente una approssimazione che
però normalmente funzione nel senso che non consente dall’esterno di
stabilire una valida connessione TCP
9 Sui servizi UDP non ho modo di
Packet filters
9 Sui servizi UDP non ho modo di distinguerlo, se devo usare dei servizi
UDP oltre il packet filter devo sostanzialmente accettare qualunque
pacchetto UDP di risposta almeno dagli host (IP) e servizi (port) che
voglio utilizzare
™ Ad esempio per utilizare un server DNS (server A porta 53) devo
consentire tutti i pacchetti UDP in ingresso che hanno come from
(server A, porta 53). Il problema e’ che e’ abbastanza facile
“spoofare” l’indirizzo from ..
9 Un esempio con ACL Cisco, gli host sulla vlan206 sono “client”
interface Vlan206
ip address 10.0.84.254 255.255.255.192
ip access-group 2256 in
ip access-group 2206 out
! Solo le sesssioni tcp e il DNS
access-list 2206 permit tcp any any established
access-list 2206 permit udp host 10.0.1.53 eq domain any
access-list 2206 deny ip any any log
! Anti spoof
access-list 2256 permit ip 10.0.84.192 0.0.0.63 any
access-list 2256 deny ip any any log
Packet filters
9 Un esempio con ACL Cisco, gli host sulla vlan206 sono “client”, l’host
10.0.84.250 è anche un web server
interface Vlan206
ip address 10.0.84.254 255.255.255.192
ip access-group 2256 in
ip access-group 2206 out
! Solo le sesssioni tcp e il DNS
access-list 2206 permit tcp any any established
access-list 2206 permit udp host 10.0.1.53 eq domain any
access-list 2206 permit tcp any host 130.186.84.250 eq www
access-list 2206 deny ip any any log
! Anti spoof
access-list 2256 permit ip 130.186.84.192 0.0.0.63 any
access-list 2256 deny ip any any log
Packet filters
•
•
In generale e ‘ difficile far passare i servizi che “negoziano” le porte di
comunicazione o che prevedono “call back” (come l’ FTP)
Il problema dell’ FTP: In una normale sessione FTP tra il client A e il
server S avviene:
ƒ
TCP open
(C,>1023) Æ (S,21)
Control Channel
Sul control channel si scambiano i comandi: es GET filename
Il trasferimento avviene sul Data Channel
Il Client sceglie una porta alta sulla quale si mette in ascolto e la comunica al server
con il comando “PORT” es: PORT 1234
ƒ
TCP open (S,20) -> (C,1234)
<- Data Channel
Su questo canale il file viene effettivamente trasferito ma il client deve accettare
connessioni su porte alte ..
•
FTP prevede una modalità passiva che “scarica” il problema sul server
ƒ
TCP open
(C,>1023) Æ (S,21)
Control Channel
Sul control channel si scambiano i comandi: es GET filename
Il Client chiede la modalità passiva (PASV) e il server si mette in ascolto su una porat
alta es:3456
ƒ
TCP open (C,>1023) -> (S,> 1023)
<- Data Channel
Su questo canale il file viene effettivamente trasferito ma il server deve accettare
connessioni su porte alte ..
Stateful packet filter
• La differenza sostanziale è che il firewall mantiene
traccia delle “sessioni” e quindi è in grado di riconoscere
automaticamente le risposte. Di solito esistono sintassi
facilitate (o è addirittura automatico) per dire al firewall
“fai passare le risposte”
• In più possono analizzare il traffico a livello più alto per
interpretare i protocolli sovrastanti e aprire
dinamicamente le porte necessarie (vedi ad esempio il
protocollo FTP)
Application level firewall
• Al massimo un network level firewall (un
firewall che lavora ai livelli OSI 3/4, ad
esempio un packet filter) può bloccare
pacchetti che vengono da IP non validi o che
provano connessioni a servizi non autorizzati.
• Fatica a gestire protocolli come FTP attivo ed
ancor più protocolli complessi come ad
esempio H.323 (VOIP) o SQL*Net (Oracle).
Questi problemi possono essere risolti solo a
livelli più alti della pila OSI.
Application level firewall
• Un modo è usare un application
gateway o proxy applicativo cioè
un software specifico per un
determinato protocollo che fa
contemporaneamente da server
per chi deve navigare e da client
verso internet.
Application level firewall
• Faccio un esempio pratico per chiarire il
concetto: con il mio pc (192.0.34.129) voglio
collegarmi a google.
• Non posso però farlo direttamente perchè sulla
rete è stato proibito (con un qualche tipo di
network firewall) il routing diretto e solo una
singola macchina può accedere ad internet e
su questa è ospitato il proxy web. Mi devo
perciò collegare al proxy e chiederle la pagina
di google. Il proxy in questo caso è un web
server che riceve la mia richiesta, la
interpreta, chiede la pagina a google (fa da
client) e poi me la fornisce.
Application level firewall
• Sono anche possibili (e diffusi) caching
proxy in cui le pagine più richieste
vengono tenute in una cache locale in
modo da evitare da dover scaricare più
volte la stessa pagina e quindi
velocizzare la navigazione per gli utenti
e diminuire l'impiego di banda. I proxy
possono poi anche essere trasparenti in
modo da evitare di dover fare della
configurazione sui client.
Application level firewall
• Un proxy, essendo contemporaneamente server e client, può
bloccare gli attacchi basati sulla non conformità dei dati al
protocollo. Per fare un esempio pratico (CVE-2001-0241) le
estensioni Internet printing ISAPI di Windows 2000
permettevano di eseguire codice arbitrario a chi avesse fatto
una richiesta con 420 byte nel campo 'Host' e caratteri
particolari. Un web proxy avrebbe potuto bloccare un attacco
di questo tipo ma non blocca attacchi in cui il protocollo è
rispettato e sono i dati ad essere pericolosi (come un virus per
email).
• Un proxy è un “Man in the Middle” buono …
• Un'altra cosa che un application gateway è in grado di fare è
permettere solo alcuni comandi. Un proxy smtp potrebbe
bloccare i comandi VRFY ed EXPN, utili una volta ma oramai
usati solo dagli spammer, oppure alterare I banner
• Gli application level gateway eccellono nella capacità di
scrivere log particolarmente significativi perchè comprendono
perfettamente il protocollo applicativo.
Stateful multilayer protocol
inspection firewalls
• Uno stateful multilayer firewall è un firewall che lavora
su vari livelli OSI, tiene traccia dello stato delle
connessioni e di almeno un protocollo applicativo.
Necessita di risorse hardware decisamente superiore a
quelle di un packet filter ed ha prestazioni di poco
inferiori.
• Per decidere se un pacchetto può o non può passare
non guarda al singolo pacchetto ma alla storia della
connessione tcp od udp (a rigore la connessione udp
non esiste ma per quanto riguarda il firewall una
connessione udp è uno scambio di pacchetti).
Stateful multilayer firewalls
• Un application gateway conosce un
protocollo applicativo e si mette
fisicamente in mezzo tra client e server
evitando che i due si parlino
direttamente. Un protocol inspection
firewall invece permette che il client ed
il server dialoghino ma verifica la
correttezza formale dei protocolli usati e
nel caso non venga rispettata tronca la
comunicazione.
Stateful multilayer firewalls
Stateful multilayer firewalls
• Ogni volta che viene stabilita una
connessione il firewall si segna in una
tabella le informazioni sulla
connessione. Queste sono: indirizzo
sorgente e destinazione, porta sorgente
e destinazione, i fari flag tcp, in
particolare il sequence number. Quando
arriva un pacchetto di ritorno viene
accettato solo dopo aver verificato nella
tabella delle connessioni che tutti i
parametri corrispondano.
• Purtroppo (o per fortuna) la rete è in
continua evoluzione e ci sono protocolli
oramai consolidati come HTTP ed FTP
ma ne vengono creati continuamente di
nuovi ed anche quelli esistenti vengono
modificati. Non è praticamente possibile
trovare un firewall che sia in grado di
capire e filtrare in maniera corretta tutti
i protocolli che ci possono interessare.
Personal firewall
Personal firewall
• I personal firewall (o host firewall)
sono un tipo di firewall che devono
essere usati sulla macchina da
proteggere, non verificano solo il
traffico di rete ma anche quale
processo sta accedendo alla rete.
Questo permette una precisione
enorme nel controllo.
• I personal firewall sono poi spesso
progettati per mandare più alert
del necessario e raramente
forniscono tutti i dati sui pacchetti
bloccati o ricevuti per cui è difficile
capire cosa effettivamente
facciano.
Personal firewall
Tabella riassuntiva sui firewall
• I personal firewall vanno
configurati individualmente sui vari
host e raramente questo può
essere fatto in maniera accurata
per cui solitamente si perde il
vantaggio della granularità del
controllo.
Packet
Application level
filter
firewall
Economici Non molto costosi
Multilayer stateful
firewall
Costosi
Veloci
Solitamente lenti
Abbastanza veloci
Filtraggio
grezzo
Massima granularità
Filtraggio molto
nel filtraggio e nei log preciso
Serve un gateway per
ogni protocollo
Come progettare una rete
• Per ora abbiamo visto una
classificazione dei firewall,
vediamo ora come va progettata
una rete in modo da renderla
sicura.
Come progettare una rete
• La prima idea che viene è:
Come progettare una rete
• Questa soluzione è valida ma solo nel caso che
non vengano offerti servizi. Le macchine che
offrono servizi sono generalmente attaccabili
molto più facilmente di quelle che non offrono
servizi e vanno perciò messe in una rete a
parte chiamata DMZ (DeMilitarized Zone) in
modo da evitare che un attaccante si
impossessi di una macchina aperta in qualche
modo all'esterno e da questa possa attaccare
le macchine interne (generalmente
considerate più preziose) senza dover passare
dal firewall.
Come progettare una rete
Firewall 1
Internet
Internet
DMZ
Firewall
Rete locale
Rete interna
Firewall 2
Come progettare una rete
Come progettare una rete
• In realtà non si perde quasi nulla a
riunire “firewall 1” e “firewall 2”
Internet
Rete interna
Firewall
DMZ
Come progettare una rete
Come progettare una rete
E' naturalmente possibile usare più DMZ per separare
reti con dati di sensibilità differente:
Internet
Firewall
DMZ 2
Rete interna
DMZ 1
• E' fondamentale che non sia possibile
raggiungere la rete interna dalla DMZ e
tantomeno dall'esterno. Come faccio
allora ad accedere alla rete interna da
internet (per manutenzione o
quant'altro)? Sono possibili due
soluzioni:
• usare un bastion host.
• Usare una VPN.
• Un bastion host è una macchina
esposta ad internet, posizionata
nella DMZ o meglio ancora in una
propria DMZ. Il suo scopo è
concentrare in un unico punto tutti
i modi di accedere alla rete interna
in modo da poter concentrare in un
solo punto la maggior parte degli
sforzi per rendere sicura la rete.
Come progettare una rete
Come progettare una rete
• In queste slides ci siamo sempre
riferiti al firewall come ad un unico
oggetto. Vediamo ora come viene
di solito realizzato il sistema
Firewall
• Abbiamo visto che packet filter, application
level firewall e multilayer stateful firewall
hanno punti di forza e di debolezza per cui
vale la pena sfruttare le caratteristiche di ogni
sistema.
• Ogni router è un packet filter a costo zero
(abbiamo già pagato per avere il router).
• E' vero che tutto quello che fa un packet filter
lo puo' fare il firewall stateful ma "sgrossando"
il traffico con i packet filter si diminuisce il
carico sulla macchina più costosa aumentando
però la complessità dell’ambiente.
Come progettare una rete
Come progettare una rete
Router esterno
Stateful
multilayer
Firewall
Internet
Router DMZ
Router interno
Proxy
Proxy
Rete interna
DMZ
• I router vanno quindi configurati in questo
modo:
• Traffico in ingresso:
ƒ Bloccare i pacchetti destinati a servizi che non si
vogliono offrire su internet.
ƒ Bloccare gli indirizzi con source address invalidi.
ƒ Bloccare i pacchetti con protocolli non utilizzati.
ƒ Bloccare i pacchetti provenienti dall'esterno con
indirizzo sorgente appartenente alla nostra rete.
ƒ Permettere tutto il traffico di protocolli permessi e
complessi (FTP, H323, ecc). Questi pacchetti
verranno analizzati dal multilayer stateful firewall
Come progettare una rete
Firewall di linux
• Traffico in uscita:
ƒ bloccare il traffico con un source
address invalido.
Come progettare una rete
• È bene inoltre usare un application
gateway almeno per il web visto
che il protocollo HTTP è oramai
statico, è possibile trovare ottimo
software free (p.e. squid) ed
usando un caching proxy è pure
possibile aumentare la velocità
della navigazione e risparmiare
banda.
E’ integrato nel kernel di linux, quindi
rappresenta la soluzione più semplice e
veloce. Il kernel deve essere predisposto in
fase di compilazione , oppure devono essere
caricati gli appositi moduli.
n Kernel 2.0.* -> ipfwadmin
n Kernel 2.2.* -> ipchains
n Kernel 2.4.* -> iptables
Firewall di linux
n
L’attraversamento dei pacchetti tra
un’interfaccia ed un’altra deve essere
abilitata espressamente nel kernel,
attraverso il comando:
# echo 1 > /proc/sys/net/ipv4/ip_forward
n
Possibilità di estensioni (moduli), che
possono essere incluse o meno in fase
di compilazione
Iptables
n
n
Si basa sui concetti di tabelle, catene e
regole
Una tabella è formata da catene (punti
di controllo) e una catena da regole
Tabella filter
Contiene le regole di filtraggio vere e
proprie dei pacchetti che il firewall
origina e riceve o che transitano dal
firewall
Tabelle
Tabella NAT
Filter
n NAT
n Mangle
Consente di effettuare il NAT (Networking
Address Translation) degli indirizzi IP o
del valore della porta sorgente o di
destinazione
n
Tabella mangle
Catene della tabella filter
Usata per effettuare alterazioni particolari
dell’header IP (TTL, TOS, MARK)
Particolarmente interessante è il target
MARK, che permette di marcare il
pacchetto, in modo da essere trattato
diversamente nei successivi punti di
controllo o da altri programmi
n
Come i pacchetti attraversano
i filtri
Filtraggio dei
pacchetti che devono
essere inoltrati
Pacchetto che deve
essere inoltrato
Mangle
INPUT
Pacchetto destinato
a localhost
Filter
INPUT
Nat
POSTROUTING
Mangle
Viene decisa
l’interfaccia d’uscita
del pacchetto
ROUTING
DECISION
ROUTING
DECISION
Nat
PREROUTING
Mangle
PREROUTING
Viene deciso se il
pacchetto è
destinato a
localhost o deve
essere inoltrato
RETE
Filtraggio dei
pacchetti in
ingresso al firewall
ROUTING
DECISION
Mangle
OUTPUT
Filtraggio dei
pacchetti in uscita
al firewall
Nat
OUTPUT
n
n
Filter
OUTPUT
LOCAL
PROCESS
Catene della tabella NAT
Effettua NAT dei pacchetti in
uscita (tipicamente viene fatto il
mascheramento della soregente)
Effettua NAT
(Network Address Translation)
dei pacchetti in ingresso
RETE
n
n
Filter
FORWARDING
POSTROUTING
Mangle
FORWARDING
n
Pacchetto originato
dal localhost
INPUT
operazioni di filtraggio di pacchetti appena
gunti al firewall e diretti all’host
FORWARD
operazioni di filtraggio di pacchetti che
transitano dal firewall
OUTPUT
operazioni di filtraggio di pacchetti generati
localmente che stanno per uscire dal firewall
PREROUTING
operazioni di nat di pacchetti appena giunti al
firewall
OUTPUT
operazioni di nat di pacchetti generati
localmente
POSTROUTING
operazioni di nat di pacchetti che stanno per
uscire dal firewall
Catene della tabella mangle
n
n
n
n
n
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
Come si costruisce una regola
#iptables [table] command
[match] [target]
n
n
n
Le regole
n
n
n
n
n
Hanno la forma di ACL
Ogni catena ha una policy di default
L’elenco delle regole viene scorso dall’inizio
alla fine
Al primo match si stabilisce cosa fare del
pacchetto e, salvo casi particolari si
interrompe l’analisi delle regole della catena
Se per nessuna regola c’è il match, si esegue
la policy di default
[table] selezione della tabella
[match] criteri per la selezione del
pacchetto
[target] destino del pacchetto che
soddisfa il match
Comandi sulle catene
n
n
n
n
n
n
Creare una nuova catena (-N)
Cancellare una catena vuota (-X)
Cambiare lapolicy di default di una catena (P)
Elencare le regole presenti in una catena (-L)
Svuotare una catena delle sue regole (-F)
Azzerare i contatori
Comandi per manipolare le
regole di una catena
n
n
n
n
n
Appendere una nuova regola alla catena (-A)
Inserire una regola in una determinata
posizione (-I)
Sostituzione di una regola presente in una
certa posizione (-R)
Cancellazione di una regola presente in una
certa posizione (-D)
Cancellazione della 1° regola di una catena (D)
I target (1)
n
n
n
n
ACCEPT
il pacchetto viene accettato
DROP
il pacchetto viene scartato
REJECT
stesso effetto di DROP, ma viene inviato in
risposta un messaggio di errore ICMP di tipo
“port unreachable”
Catena creata dall’utente
I target (2)
n
n
RETURN
termina la catena; se è una catena
predefinita, viene eseguita la tattica, se
è definita dall’utente, esegue la regola
successiva sulla catena precedente
QUEUE
accoda i pacchetti per elaborazioni
userspace
Esempi
eth0
1.2.3.4
Internet
eth1
192.168.1.1
LAN
FIREWALL
192.168.1.*
#iptables –A FORWARD –i eth1 –j DROP
Tutte le opzioni di match possono essere negate
attraverso il simbolo !
Esempi
Esempi
eth0
1.2.3.4
Internet
eth1
192.168.1.1
eth0
1.2.3.4
LAN
FIREWALL
Internet
eth1
192.168.1.1
192.168.1.*
192.168.1.*
#iptables –A FORWARD –i eth1 –s
192.168.1.0/24 –d 0/0 –j DROP
#iptables –A FORWARD –mac-source
00:60.08:91:CC:B7 –s 192.168.1.5 –d 0/0 –j
ACCEPT
Esempi
I frammenti IP (1)
eth0
1.2.3.4
Internet
LAN
FIREWALL
n
eth1
192.168.1.1
LAN
FIREWALL
n
192.168.1.*
#iptables –A INPUT –p tcp –s 1.2.3.5 –d
1.2.3.4 –-dport 22 –j ACCEPT
#iptables –A INPUT –p tcp –s 0/0 –d 1.2.3.4 -dport 22 –j DROP
A volte il pacchetto generato dall’host
mittente è troppo grande per attraversare
alcune reti, viene quindi frammentato
Il frammento contiene un sottoinsieme
dell’header, non è quindi possibile verificare le
intestazioni TCP, UDP e regole come –p tcp, -sport non possono essere verificate
I frammenti IP (2)
n
n
C’è la possibilità di dare una regola
specifica per i frammenti, attraverso
l’opzione –f
Esempio:
#iptables –A OUTPUT –f –d 192.168.1.69
–j DROP
I flag TCP
n
n
Si possono filtrare i pacchetti attraverso
i flag specifici di TCP
--tcp-flags seguita da 2 stringhe di flag:
la prima stringa è la maschera:lista di flag
che si vogliono esaminare
la seconda indica quali flag devono essere
impostati
I flag TCP (esempio)
Voglio fare il log di tutte le connessioni
TCP che passano dal firewall
#iptables –A FORWARD –p tcp –tcp-flags
ALL SYN,FIN –j LOG
--syn è un’abbreviazione di –tcp-flags
SYN,RST,ACK SYN
Connection tracking (1)
Capacità per un firewall di mantenere
memoria dello stato delle connessioni.
Si usa l’opzione --state seguita da una
lista di stati da confrontare.
Connection tracking (2)
Connection tracking (esempi)
Questi stati sono:
n NEW
un pacchetto che crea una nuova
connessione
n ESTABLISHED
un pacchetto che appartiene a una
connessione esistente
#iptables – A FORWARD –d 192.168.0.0/16
–m state –-state ESTABLISHED, RELATED
–j ACCEPT
Connection tracking (3)
n
n
RELATED
pacchetto relativo a una connessione
esistente di cui non fa parte (es. errore
ICMP, FTP data)
INVALID
pacchetto che non può essere
identificato (in genere va scartato)
Consente il transito verso 192.168.* per
connessioni già realizzate o correlate a
connessioni precedenti
#iptables – A FORWARD –d 192.168.0.0/16
–m state –-state INVALID –j DROP
Elimina i pacchetti non identificabili
Network Address Translation
(NAT)
n
n
Tecnica descritta nell’RFC 1631, con la quale
un nodo di rete speciale acquista funzionalità
simili a quelle di un router, allo scopo di
sostituire indirizzi IP reali con altri indirizzi più
convenienti
E’ possibile riutilizzare dinamicamente gli
indirizzi IP privati, permettendo a tali reti di
accedere all’esterno, pur non essendo questi
univoci a livello globale
NAT
SNAT
192.168.1.*
eth0
1.2.3.4
Internet
eth0
1.2.3.4
LAN
NAT
Host
n
Normalmente gli indirizzi IP 192.168.1.* non
hanno la possibilità di essere riconosciuti
univocamente all’interno della rete globale,
pertanto non è possibile accedere all’esterno. Si
può ottenere attraverso il NAT
Destination NAT (DNAT)
si ha quando si altera l’indirizzo di destinazione,
ossia si cambia dove la connessione è diretta.
Si effettua in fase di pre-routing
LAN
NAT
Host
Host
#iptable –t nat –A POSTROUTING –o eth0 –j
SNAT –to-source 1.2.3.4
SNAT (mascheramento)
Souce NAT (SNAT)
si ha quando si altera l’indirizzo sorgente del
pacchetto. E’ effettuata in fase di post-routing
n
Internet
eth1
192.168.1.1
Host
NAT
n
192.168.1.*
eth0
192.168.1.1
192.168.1.*
Indirizzamento
IP
dinamico
Internet
eth0
192.168.1.1
LAN
NAT
Host
Host
#iptables –t nat –A POSTROUTING –o ppp0
–j MASQUERADE
DNAT
Bibliografia
n
Internet
http://www.netfilter.org/documentation/HOWTO/packet-filteringHOWTO.html
NAT
1.2.3.4:80
Rete locale
n
#iptables –t nat –A PREROUTING –p tcp –dport 80 –i eth0 –j DNAT –todestination 192.168.1.2
DNAT (redirect)
Internet
eth1
192.168.1.1
LAN
Proxy trasparente
192.168.1.*
Si vuole che tutte le richieste di servizi HTTP, da
parte della rete locale, siano dirottati verso il
proxy, sullo stesso computer che ospita il NAT,
alla porta 8080
#iptables –t nat –A PREROUTING –p tcp
–dport 80 –i eth1 –j REDIRECT –to-port
8080
Rusty Russel, Linux 2.4 NAT HOWTO
http://www.netfilter.org/documentation/HOWTO/NATHOWTO.html
Server
HTTP reale
192.168.1.2:80
eth0
1.2.3.4
Rusty Russel, Linux 2.4 Packet filtering
HOWTO
n
Oskar Andreasson, Iptables tutorial
http://iptables-tutorial.frozentux.net/
n
Manpage di iptables