22
Filtraggio del traffico IP in linux Corso di Amministrazione di Reti AA 2002/2003 Fabio Bucciarelli - DEIS Cos’è un firewall? n E’ un dispositivo hardware o software, che permette o nega la comunicazione fra 2 reti diverse (es. Internet – Lan aziendale). n E’ posizionato sulla frontiera fra le 2 reti e ha lo scopo di proteggere la rete interna consentendo le attività lecite

Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Filtraggio del traffico IP inlinux

Corso di Amministrazione di RetiAA 2002/2003

Fabio Bucciarelli - DEIS

Cos’è un firewall?

n E’ un dispositivo hardware o software,che permette o nega la comunicazionefra 2 reti diverse (es. Internet – Lanaziendale).

n E’ posizionato sulla frontiera fra le 2 retie ha lo scopo di proteggere la reteinterna consentendo le attività lecite

Page 2: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Packet filter firewall

Analizzano gli header dei pacchetti che vitransitano fino al livello di trasporto.

Discriminano in base a:• Livello fisico (es. interfaccia di rete)• Livello data link (es. mac sorgente o destinazione)• Livello rete (es. IP sorgente o destinazione)• Livello trasporto (es. porta sorgente o destinazione)

Proxy firewall

n Sono in grado di interpretare leinformazioni del pacchetto fino al livelloapplicativo

Es. firewall http inoltra o scarta pacchetti in funzionedell’URL

n Proxy generici (es. socks)n Proxy dedicati (es. squid)

Page 3: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Packet filter vs. Proxy firewall

Richiede hardware +veloce

Indipendente dalprotocollo applicativo

User spaceKernel space

+ potente+ veloce

Proxy firewallPacket filter

Firewall di linuxE’ di tipo packet filter

Fisico

Data link

Rete

Trasporto

Sessione

Presentazione

Applicazione

Fisico

Data link

Rete

Trasporto

Sessione

Presentazione

ApplicazioneFisicoFisico

Data linkData link

ReteRete

TrasportoTrasporto

FIREWALL

HOST A HOST B

Page 4: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Firewall di linux (2)

E’ integrato nel kernel di linux, quindirappresenta la soluzione più semplice eveloce. Il kernel deve essere predisposto infase di compilazione , oppure devono esserecaricati gli appositi moduli.

n Kernel 2.0.* -> ipfwadminn Kernel 2.2.* -> ipchainsn Kernel 2.4.* -> iptables

Firewall di linux (3)

n L’attraversamento dei pacchetti traun’interfaccia ed un’altra deve essereabilitata espressamente nel kernel,attraverso il comando:

# echo 1 > /proc/sys/net/ipv4/ip_forward

n Possibilità di estensioni (moduli), chepossono essere incluse o meno in fasedi compilazione

Page 5: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Iptables

n Si basa sui concetti di tabelle, catene eregole

n Una tabella è formata da catene (puntidi controllo) e una catena da regole

Tabelle

n Filtern NATn Mangle

Page 6: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Tabella filter

Contiene le regole di filtraggio vere eproprie dei pacchetti che il firewallorigina e riceve o che transitano dalfirewall

Tabella NAT

Consente di effettuare il NAT (NetworkingAddress Translation) degli indirizzi IP odel valore della porta sorgente o didestinazione

Page 7: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Tabella mangle

Usata per effettuare alterazioni particolaridell’header IP (TTL, TOS, MARK)

Particolarmente interessante è il targetMARK, che permette di marcare ilpacchetto, in modo da essere trattatodiversamente nei successivi punti dicontrollo o da altri programmi

Come i pacchetti attraversanoi filtri

RETE RETENat

PR

ER

OU

TIN

G

Na

tP

OS

TR

OU

TIN

G

RO

UT

ING

DE

CIS

ION

FilterFORWARDING

FilterINPUT

FilterOUTPUT

RO

UT

ING

DE

CIS

ION

LOCALPROCESS

MangleFORWARDING

MangleINPUT

MangleOUTPUT

Man

gle

PR

ER

OU

TIN

G

Man

gle

PO

ST

RO

UT

ING

ROUTINGDECISION

NatOUTPUT

Filtraggio deipacchetti che devono

essere inoltrati

Pacchetto che deveessere inoltrato

Effettua NAT dei pacchetti inuscita (tipicamente viene fatto il

mascheramento della soregente)

Effettua NAT(Network Address Translation)

dei pacchetti in ingresso

Filtraggio deipacchetti in

ingresso al firewall

Filtraggio deipacchetti in uscita

al firewall

Viene deciso se ilpacchetto èdestinato alocalhost o deveessere inoltrato

Viene decisal’interfaccia d’uscita

del pacchetto

Pacchetto originatodal localhost

Pacchetto destinatoa localhost

Page 8: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Catene della tabella filtern INPUT

operazioni di filtraggio di pacchetti appenagunti al firewall e diretti all’host

n FORWARDoperazioni di filtraggio di pacchetti chetransitano dal firewall

n OUTPUToperazioni di filtraggio di pacchetti generatilocalmente che stanno per uscire dal firewall

Catene della tabella NATn PREROUTING

operazioni di nat di pacchetti appena giunti alfirewall

n OUTPUToperazioni di nat di pacchetti generatilocalmente

n POSTROUTINGoperazioni di nat di pacchetti che stanno peruscire dal firewall

Page 9: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Catene della tabella mangle

n PREROUTINGn INPUTn FORWARDn OUTPUTn POSTROUTING

Le regolen Hanno la forma di ACLn Ogni catena ha una policy di defaultn L’elenco delle regole viene scorso dall’inizio

alla finen Al primo match si stabilisce cosa fare del

pacchetto e, salvo casi particolari siinterrompe l’analisi delle regole della catena

n Se per nessuna regola c’è il match, si eseguela policy di default

Page 10: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Come si costruisce una regola#iptables [table] command[match] [target]

n [table] selezione della tabellan [match] criteri per la selezione del

pacchetton [target] destino del pacchetto che

soddisfa il match

Comandi sulle catenen Creare una nuova catena (-N)n Cancellare una catena vuota (-X)n Cambiare lapolicy di default di una catena (-

P)n Elencare le regole presenti in una catena (-L)n Svuotare una catena delle sue regole (-F)n Azzerare i contatori

Page 11: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Comandi per manipolare leregole di una catenan Appendere una nuova regola alla catena (-A)n Inserire una regola in una determinata

posizione (-I)n Sostituzione di una regola presente in una

certa posizione (-R)n Cancellazione di una regola presente in una

certa posizione (-D)n Cancellazione della 1° regola di una catena (-

D)

I target (1)n ACCEPT

il pacchetto viene accettaton DROP

il pacchetto viene scartaton REJECT

stesso effetto di DROP, ma viene inviato inrisposta un messaggio di errore ICMP di tipo“port unreachable”

n Catena creata dall’utente

Page 12: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

I target (2)

n RETURNtermina la catena; se è una catenapredefinita, viene eseguita la tattica, seè definita dall’utente, esegue la regolasuccessiva sulla catena precedente

n QUEUEaccoda i pacchetti per elaborazioniuserspace

Esempi

Internet LANFIREWALL

eth01.2.3.4

eth1192.168.1.1

192.168.1.*

#iptables –A FORWARD –i eth1 –j DROP

Tutte le opzioni di match possono essere negateattraverso il simbolo !

Page 13: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Esempi

#iptables –A FORWARD –i eth1 –s192.168.1.0/24 –d 0/0 –j DROP

Internet LANFIREWALL

eth01.2.3.4

eth1192.168.1.1

192.168.1.*

Esempi

Internet LANFIREWALL

eth01.2.3.4

eth1192.168.1.1

192.168.1.*

#iptables –A INPUT –p tcp –s 1.2.3.5 –d1.2.3.4 –-dport 22 –j ACCEPT

#iptables –A INPUT –p tcp –s 0/0 –d 1.2.3.4 --dport 22 –j DROP

Page 14: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Esempi

Internet LANFIREWALL

eth01.2.3.4

eth1192.168.1.1

192.168.1.*

#iptables –A FORWARD –mac-source00:60.08:91:CC:B7 –s 192.168.1.5 –d 0/0 –jACCEPT

I frammenti IP (1)n A volte il pacchetto generato dall’host

mittente è troppo grande per attraversarealcune reti, viene quindi frammentato

n Il frammento contiene un sottoinsiemedell’header, non è quindi possibile verificare leintestazioni TCP, UDP e regole come –p tcp, --sport non possono essere verificate

Page 15: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

I frammenti IP (2)n C’è la possibilità di dare una regola

specifica per i frammenti, attraversol’opzione –f

n Esempio:

#iptables –A OUTPUT –f –d 192.168.1.69–j DROP

I flag TCP

n Si possono filtrare i pacchetti attraversoi flag specifici di TCP

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

Page 16: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

I flag TCP (esempio)

Voglio fare il log di tutte le connessioniTCP che passano dal firewall

#iptables –A FORWARD –p tcp –tcp-flagsALL SYN,FIN –j LOG

--syn è un’abbreviazione di –tcp-flagsSYN,RST,ACK SYN

Connection tracking (1)

Capacità per un firewall di mantenerememoria dello stato delle connessioni.

Si usa l’opzione --state seguita da unalista di stati da confrontare.

Page 17: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Connection tracking (2)

Questi stati sono:n NEW

un pacchetto che crea una nuovaconnessione

n ESTABLISHEDun pacchetto che appartiene a unaconnessione esistente

Connection tracking (3)

n RELATEDpacchetto relativo a una connessioneesistente di cui non fa parte (es. erroreICMP, FTP data)

n INVALIDpacchetto che non può essereidentificato (in genere va scartato)

Page 18: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Connection tracking (esempi)#iptables – A FORWARD –d 192.168.0.0/16–m state –-state ESTABLISHED, RELATED–j ACCEPT

Consente il transito verso 192.168.* perconnessioni già realizzate o correlate aconnessioni 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 Tecnica descritta nell’RFC 1631, con la quale

un nodo di rete speciale acquista funzionalitàsimili a quelle di un router, allo scopo disostituire indirizzi IP reali con altri indirizzi piùconvenienti

n E’ possibile riutilizzare dinamicamente gliindirizzi IP privati, permettendo a tali reti diaccedere all’esterno, pur non essendo questiunivoci a livello globale

Page 19: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

NAT

n Normalmente gli indirizzi IP 192.168.1.* nonhanno la possibilità di essere riconosciutiunivocamente all’interno della rete globale,pertanto non è possibile accedere all’esterno. Sipuò ottenere attraverso il NAT

Internet LANNAT

eth01.2.3.4

eth0192.168.1.1

Host Host

192.168.1.*

NATn Souce NAT (SNAT)

si ha quando si altera l’indirizzo sorgente delpacchetto. E’ effettuata in fase di post-routing

n 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

Page 20: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

SNAT

#iptable –t nat –A POSTROUTING –o eth0 –jSNAT –to-source 1.2.3.4

Internet LANNAT

eth01.2.3.4

eth1192.168.1.1

Host Host

192.168.1.*

SNAT (mascheramento)

#iptables –t nat –A POSTROUTING –o ppp0–j MASQUERADE

Internet LANNAT

IndirizzamentoIP

dinamico

eth0192.168.1.1

Host Host

192.168.1.*

Page 21: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

DNAT

#iptables –t nat –A PREROUTING –p tcp –-dport 80 –i eth0 –j DNAT –to-destination 192.168.1.2

Internet NAT

Rete locale

ServerHTTP reale

1.2.3.4:80

192.168.1.2:80

DNAT (redirect)

Si vuole che tutte le richieste di servizi HTTP, daparte della rete locale, siano dirottati verso ilproxy, sullo stesso computer che ospita il NAT,alla porta 8080

#iptables –t nat –A PREROUTING –p tcp–dport 80 –i eth1 –j REDIRECT –to-port8080

Internet LANProxy trasparente

eth01.2.3.4

eth1192.168.1.1

192.168.1.*

Page 22: Filtraggio del traffico IP in linux - unibo.itlia.disi.unibo.it/Courses/AmmReti0405/linux-packet...Proxy firewall n Sono in grado di interpretare le informazioni del pacchetto fino

Bibliografian Rusty Russel, Linux 2.4 Packet filtering

HOWTOhttp://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO.html

n Rusty Russel, Linux 2.4 NAT HOWTOhttp://www.netfilter.org/documentation/HOWTO/NAT-HOWTO.html

n Oskar Andreasson, Iptables tutorialhttp://iptables-tutorial.frozentux.net/

n Manpage di iptables