44
Pf e Netfilter, analisi dei firewall Open Source “Giovanni Bechis” <[email protected]>

Pf e netfilter, analisi dei firewall open source

Embed Size (px)

DESCRIPTION

Features of the best open source firewalls available.

Citation preview

Page 1: Pf e netfilter, analisi dei firewall open source

Pf e Netfilter,analisi dei firewall

Open Source“Giovanni Bechis” <[email protected]>

Page 2: Pf e netfilter, analisi dei firewall open source

I pr incipali firewall Open Source sono:Netfilter , il firewall di Linux ePf, il firewall dei sistemi *BSD.

Le differenze più evidenti fra i due firewall sono:

✔configurazione✔comportamento con protocolli complessi✔gestione dei log✔limitazione della banda

Page 3: Pf e netfilter, analisi dei firewall open source

La configurazione di Netfilter viene fatta utilizzando il comando iptables , quella di Pf modificando il file /etc/pf.conf.

Se non si necessita di caratter istiche avanzate si possono utilizzare anche delle interfaccie grafiche per la configurazione.

Page 4: Pf e netfilter, analisi dei firewall open source
Page 5: Pf e netfilter, analisi dei firewall open source

Per poter utilizzare le caratter istiche più avanzate dei due firewall occorre scr ivere la configurazione senza basarsi su interfaccie grafiche più semplici ma limitative.

In Pf anche le caratteristiche più avanzate sono già incluse, per quanto r iguarda Netfilter /Iptables occorre talvolta affidarsi a Patch-O-Matic.

Page 6: Pf e netfilter, analisi dei firewall open source

Patch-O-Matic è una serie di patch per il kernel Linux e per il comando iptables che aggiungono funzionalità al firewall.

Le funzionalità che vengono aggiunte vanno da un filtraggio dei pacchetti maggiormente granulare alla possibilità di salvare i log in un database e a tanto altro ancora.Molte di queste funzionalità sono già integrate nel firewall Pf.

Page 7: Pf e netfilter, analisi dei firewall open source

iplimit (limita il numero di connessioni su una determinata porta da un determinato host)

iptables -A INPUT -p tcp --syn --dport ssh -m \ iplim it --iplim it-above 10 -j REJECT

block quick inet proto tcp from <badhost> port \ sshpass in inet proto tcp from <badhost> port ssh \ flags S /SA keep state \ (m ax-src-conn 10, overload <badhost> flush)

Page 8: Pf e netfilter, analisi dei firewall open source

mport (Permette di fare il match di più porte in una sola regola)

iptables -A INPUT -p tcp -m m port --ports \ 20:23,80 -j DROP

block quick inet proto tcp from any port \ { 20:23, 80 }

Page 9: Pf e netfilter, analisi dei firewall open source

quota (Permette di bloccare i pacchetti una volta raggiunta una determinata quantità di traffico)

iptables -A INPUT -p tcp --dport 80 -m quota \ --quota 52428800 -j ACCEPTiptables -A INPUT -p tcp --dport 80 -j DROP

non è possibile in Pf se non utilizzando le apposite regole per limitare la banda

Page 10: Pf e netfilter, analisi dei firewall open source

random (Per bloccare un numero di pacchetti a caso)

iptables -A INPUT -p icm p --icm p-type \echo-request -m random --average 50 -j DROP

block in inet proto icm p all icm p-type \ { echoreq } probability 50%

Page 11: Pf e netfilter, analisi dei firewall open source

re ce nt (Limita il numero di connessioni da un determinato host)

iptables -A FORWARD -m recent --nam e \ badhost --rcheck --seconds 60 --hitcount 100 \ -j DROPiptables -A FORWARD -p tcp -i eth0 \--dport 139 -m recent --nam e badhost --set \-j DROP

block quick inet proto tcp from <badhost> \port 139pass in inet proto tcp from <badhost> port 139 \ flags S /SA keep state (m ax-src-conn-rate 60/100,\ overload <badhost> flush global)

Page 12: Pf e netfilter, analisi dei firewall open source

s tring (per bloccare i pacchetti che contengono una determinata str inga)

iptables -A INPUT -m str ing --str ing 'cmd.exe' \-j DROP

Non esiste un equivalente in Pf; l'utilizzo di un Ids al posto di questo tipo di regole evita molti falsi positivi.

Page 13: Pf e netfilter, analisi dei firewall open source

time (Per accettare un pacchetto in base all'orario)

iptables -A INPUT -m tim e --tim estart 8:00 \--tim estop 18:00 --days Mon,Tue,Wed,Thu,Fri \-j ACCEPT

Con Pf occorre utilizzare due configurazioni differenti del firewall o utilizzare un proxy quando possibile.

Page 14: Pf e netfilter, analisi dei firewall open source

tcp-mss (limita la dimensione massima del pacchetto, utile se si hanno problemi con router/firewall che bloccano alcuni pacchetti frammentati)

iptables -A FORWARD -p tcp --tcp-flags \SYN,RST SYN -j TCPMSS --set-m ss 1460

scrub in on $ext_if m ax-m ss 1460

Page 15: Pf e netfilter, analisi dei firewall open source

ttl (per modificare il valore del ttl (in base al time-to-live si può r isalire al sistema operativo di un computer))

iptables -t m angle -A OUTPUT -j TTL --ttl-set 126

scrub in on $ext_if m in-ttl 126

Page 16: Pf e netfilter, analisi dei firewall open source

Per gestire protocolli complessi come ftp e h323 dietro un firewall, Pf utilizza degli applicativi esterni come ftp-proxy o siproxd .

Grazie a P-o-m con Netfilter si possono gestire semplicemente protocolli come ftp, h323, snmp e pptp.

Page 17: Pf e netfilter, analisi dei firewall open source

Dec 18 14:30:59 fw kernel: FW - TCP Rejected IN= eth1 OUT= MAC= 00:10:a7:08:9c:65:00:00:0c:3e:36:47:08:00 SRC= 192.168.0.1 DST= 192.168.1.10 LEN= 48 TOS= 0x00 PREC= 0x00 TTL= 124 ID= 11585 DF PROTO= TCP SPT= 1803 DPT= 80 WINDOW= 32768 RES= 0x00 SYN URGP= 0

Aug 10 12:21:17.976796 rule 1/(match) [uid 0, pid 18979] block out on r l0: 192.168.0.1.26562 > 192.168.1.10.80: S 1230309818:1230309818(0) win 16384 < mss 1460,nop,nop,sackOK,nop,wscale 0,[|tcp]> (DF) (ttl 64, id 48127, len 64)

Page 18: Pf e netfilter, analisi dei firewall open source

Per semplificare l'analisi dei log Iptables permette attraverso Ulogd il salvataggio dei log in un database, ciò permette la creazione di grafici in maniera semplice.

Anche se Pf salva le informazioni in formato binario esistono comunque dei software per analizzare i log.

Page 19: Pf e netfilter, analisi dei firewall open source

Tramite Nulog e Ulogd è possibile controllareda una semplice interfaccia web i log del firewall

Page 20: Pf e netfilter, analisi dei firewall open source
Page 21: Pf e netfilter, analisi dei firewall open source
Page 22: Pf e netfilter, analisi dei firewall open source
Page 23: Pf e netfilter, analisi dei firewall open source

Symon permette un controllo generale del firewall

Page 24: Pf e netfilter, analisi dei firewall open source

Con Pfstat si realizzano grafici per analizzarequanti pacchetti sono stati bloccati dal firewall

Page 25: Pf e netfilter, analisi dei firewall open source

Per un controllo in tempo reale del firewall *BSDsi può utilizzare pftop , se si utilizza Linux si puòanalizzare il file /proc/net/ip_conntrack .

Page 26: Pf e netfilter, analisi dei firewall open source

Un attacco Syn-Flood letteralmente significa"inondazione di pacchetti di tipo Syn".

Tutte le volte che un utente fa click su di un link di una pagina web r ichiede l'apertura di una connessione (di tipo TCP) verso quel sito;questo avviene seguendo una serie di passi, il pr imo dei quali consiste nell'invio di un pacchettoTCP che r ichiede l'apertura di una connessione.Le regole di funzionamento del protocollo TCP esigono che il sistema r isponda allocando alcune r isorse per la connessione.

Page 27: Pf e netfilter, analisi dei firewall open source

Se si programma opportunamente un semplice PC, è possibile r ichiedere l'apertura di diverse migliaia di connessioni al secondo, che "inondando" il server,ne consumano rapidamente tutta la memoria, bloccandolo o mandandolo in crash.

GNU/Linux e OpenBSD “affrontano” questo problema in maniera del tutto differente utilizzando uno i syncookies e l'altro il synproxy.

Page 28: Pf e netfilter, analisi dei firewall open source

Netfilter utilizza il sistema dei syncookies , r ispondendo con dei pacchetti validi agli attacchidi tipo syn flood (DoS ), in questo modola connessione non viene interrotta e la coda dei pacchetti che bloccherebbero il server viene svuotata più velocemente e senza provocare il blocco del sistema.

Page 29: Pf e netfilter, analisi dei firewall open source

Pf utilizza invece il synproxy;ogni volta che avviene una connessione fra un host esterno alla lan e un client è il firewall stessoche stabilisce la connessione; una volta che il collegamento tcp è avvenuto lo scambio dei pacchetti avviene fra cliente host esterno.In questo modo si previene qualsiasi tipo di problema derivante da attacchi di questo genere anche se diretti ad un server protetto dal firewalle non al firewall stesso.

Page 30: Pf e netfilter, analisi dei firewall open source

Alcune particolatità del firewall Pf che non sonopresenti nel firewall GNU/Linux sono la normalizzazione del traffico tcp e il fingerprinting.

Page 31: Pf e netfilter, analisi dei firewall open source

La direttiva scrub serve per normalizzare il traffico tcp da e verso la lan protetta dal firewall.alcuni utili parametr i della direttiva scrub sono:

no-df -> vengono scartati dei pacchetti non corretti, in particolare i pacchetti frammentati con il bit "don't fragment"

settato (alcune implementazioni di NFSgenerano questi tipi di pacchettiscorretti)

Page 32: Pf e netfilter, analisi dei firewall open source

random -id -> sostituisce il numero identificativo

nell'intestazionedel pacchetto ip con un

numerocasuale rendendo più

difficile l'identificazione del

sistema operativo che sta

generando il traffico ip.

Page 33: Pf e netfilter, analisi dei firewall open source

reassem ble tcp -> normalizza il traffico tcp

attraverso queste operazioni:

ttl : non permette a nessuna delle 2 parti della comunicazione tcp di

diminuire il valore del ttl per prevenire attacchi di tipo DoS al firewall stesso.

Page 34: Pf e netfilter, analisi dei firewall open source

tim estam p m odulation : viene sostituito il timestamp dell'intestazione del

pacchetto tcp con un numero casuale;dal timestamp si può r isalire a

quando è stato acceso il computer che sta generando il traffico tcp e può essere utilizzato per inserire pacchetti contraffatti all'interno della

comunicazione tcp in atto.

Page 35: Pf e netfilter, analisi dei firewall open source

Un'altra interessante caratter istica di Pf è il fingerprinting; all'interno delle regole del firewall è possibile infatti specificare anche il sistema operativo dell'host.Il fingerprinting si basa sul fatto che ogni sistema operativo ha un'implementazione diversa dello stack tcp/ip, analizzando quindi il traffico di rete si può stabilire quali sono i sistemi operativi che lo generano.

block in proto tcp from any port 25 os "Windows 95"

Page 36: Pf e netfilter, analisi dei firewall open source

Sia con Netfilter che con Pf è possibile limitare il traffico peer-to-peer tramite l'analisi del traffico tcp.L'operazione è dispendiosa a livello di cpu in quanto va scomposto tutto il traffico tcp, analizzato e poi r icomposto.Per fare questa operazione vengono utilizzati strumenti come gli IDS; esistono delle patch a iptables/netfilter (ipp2p, l7filter) che permettono l'analisi del traffico p2p.

Page 37: Pf e netfilter, analisi dei firewall open source

Tramite questi moduli è possibile creare nel firewall regole come:iptables -A FORWARD -m ipp2p --kazaa -j DROPper eliminare il traffico prodotto da Kazaa. Esistono parametri appositi anche per edonkey, winmx e altr i.

Un approccio con minor r ischio di falsi positivi e implementabile sia su Linux che su OpenBSD è quello dell'integrazione del firewall con un IDS.

Page 38: Pf e netfilter, analisi dei firewall open source

Uno dei più noti IDS è Snort , questo software analizza il traffico tcp a livello 7 (livello applicazione nella pila ISO/OSI) e esegue dei comandi in occasione di determinati eventi.

E' possibile integrare questo Intrusion Detection System con il firewall mediante l'uso di Snortsam che permette a Snort di bloccare gli host attaccanti interagendo con il firewall.Snortsam supporta vari firewall fra i quali iptables ,Pf, Checkpoint Firewall-1 , Cisco Pix e Microsoft Isa server.

Page 39: Pf e netfilter, analisi dei firewall open source

Una semplice e comoda configurazione del traffic shape r è quella dell'aumento della priorità dei pacchetti ACK.In presenza di una connessione adsl (asincrona quindi) quando si genera molto traffico in upload cala anche la velocità di download.Questo avviene perchè il traffico che viene generato è sempre nei due sensi e quindi se viene saturata la banda in upstream si r iduce anche la velocità del traffico in downstream.

Page 40: Pf e netfilter, analisi dei firewall open source

Per sopperire a questo problema è possibile dare maggiore priorità al download.

In questo caso viene considerata una banda reale in upstream di 100kb (128kb m eno l'overhead del pppoe)

tc qdisc add dev ppp0 root tbf rate 100kbit \latency 50ms burst 1540

Page 41: Pf e netfilter, analisi dei firewall open source

altq on $ext_if pr iq bandwidth 100Kb queue \ { q_pri, q_def }queue q_pri pr iority 7queue q_def priority 1 priq(default)

pass out on $ext_if proto tcp from $ext_if to any \ flags S/SA keep state queue (q_def, q_pri)pass in on $ext_if proto tcp from any to $ext_if \ flags S/SA keep state queue (q_def, q_pri)

Page 42: Pf e netfilter, analisi dei firewall open source

Aumentando la priorità dei pacchetti con il flag ACKsi velocizza il download

Page 43: Pf e netfilter, analisi dei firewall open source

Le principali regole da seguire nella scelta del firewallpiù adatto alle esigenze della lan da proteggere sono:

●Utilizzare un sistema operativo e un firewall che siconosce.●Analizzare bene tutte le esigenze della lan che siandrà a proteggere e le applicazioni che verrannoutilizzate dai computer della lan.●Valutare bene le caratteristiche e le potenzialitàdel firewall che si intende utilizzare.●Tener presente che per proteggere una rete non bastaun buon firewall, occorre anche un antivirus installatonei computer e, possibilmente, un proxy.

Page 44: Pf e netfilter, analisi dei firewall open source

Riferimenti & risorse

“Giovanni Bechis” <[email protected]>

http://www.snb.it/smau2006

http://www.benzedrine.cx/pf.html

http://www.undeadly.org

http://www.netfilter.org