SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
Pf e Netfilter,
analisi dei firewall
  Open Source
  “Giovanni Bechis” <g.bechis@snb.it>
I principali firewall Open Source sono:
Netfilter, il firewall di Linux e
Pf, 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
La configurazione di Netfilter viene fatta
utilizzando il comando iptables, quella di Pf
modificando il file /etc/pf.conf.

Se non si necessita di caratteristiche
avanzate si possono utilizzare anche delle
interfaccie grafiche per la configurazione.
Per poter utilizzare le caratteristiche più
avanzate dei due firewall occorre scrivere
la configurazione senza basarsi su
interfaccie grafiche più semplici ma
limitative.

In Pf anche le caratteristiche più avanzate
sono già incluse, per quanto riguarda
Netfilter/Iptables occorre talvolta affidarsi
a Patch-O-Matic.
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.
iplim it (limita il numero di connessioni su una
determinata porta da un determinato host)

iptables -A IN PUT -p tcp --syn --dport ssh
-m  iplim it --iplim it-above 10 -j REJECT

block quick inet proto tcp from <badhost>
port  ssh
pass in inet proto tcp from <badhost> port
ssh  flags S /S A keep state 
   (m ax-src-conn 10, overload <badhost>
flush)
m port (Permette di fare il match di più
porte in una sola regola)

iptables -A IN PUT -p tcp -m m port --ports 
20:23,80 -j DROP

block quick inet proto tcp from any port 
{ 20:23, 80 }
quota (Permette di bloccare i pacchetti una
volta raggiunta una determinata quantità di
traffico)

iptables -A IN PUT -p tcp --dport 80 -m
quota 
--quota 52428800 -j ACCEPT
iptables -A IN PUT -p tcp --dport 80 -j DROP

non è possibile in Pf se non utilizzando le
apposite regole per limitare la banda
random (Per bloccare un numero di
pacchetti a caso)

iptables -A IN PUT -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%
re c e nt (Limita il numero di connessioni da un
determinato host)

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

block quick inet proto tcp from <badhost> 
port 139
pass in inet proto tcp from <badhost> port 139 
flags S /S A k eep state (m ax-src-conn-rate 60/100,
overload <badhost> flush global)
s tring (per bloccare i pacchetti che
contengono una determinata stringa)

iptables -A INPUT -m string --string
'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.
tim e (Per accettare un pacchetto in base
all'orario)

iptables -A IN PUT -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.
tc p-m s s (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 
S YN ,RS T S YN -j TCPMS S --set-m ss 1460

scrub in on $ext_if m ax-m ss 1460
ttl (per modificare il valore del ttl (in base al
time-to-live si può risalire 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
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 N etfilter si possono
gestire semplicemente protocolli come ftp,
h323, snmp e pptp.
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 rl0:
192.168.0.1.26562 > 192.168.1.10.80: S
1230309818:1230309818(0) win 16384
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.
Tramite Nulog e Ulogd è possibile controllare
da una semplice interfaccia web i log del firewa
Symon permette un controllo generale del firew
Con Pfstat si realizzano grafici per analizzare
quanti pacchetti sono stati bloccati dal firewa
Per un controllo in tempo reale del firewall *B
si può utilizzare pftop, se si utilizza Linux si pu
analizzare il file /proc/net/ip_conntrack .
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 richiede l'apertura di una
connessione (di tipo TCP) verso quel sito;
questo avviene seguendo una serie di passi,
il primo dei quali consiste nell'invio di un pacch
TCP che richiede l'apertura di una connessione.
Le regole di funzionamento del protocollo TCP
esigono che il sistema risponda allocando
alcune risorse per la connessione.
Se si programma opportunamente un semplice P
è possibile richiedere l'apertura di diverse migli
di connessioni al secondo, che "inondando" il se
ne consumano rapidamente tutta la memoria,
bloccandolo o mandandolo in crash.

GNU/Linux e OpenBSD “affrontano” questo
problema in maniera del tutto differente utilizza
uno i syncookies e l'altro il synproxy.
N etfilter utilizza il sistema dei syncookies,
rispondendo con dei pacchetti validi agli attacc
di tipo syn flood (DoS ), in questo modo
la connessione non viene interrotta e la coda
dei pacchetti che bloccherebbero il server
viene svuotata più velocemente e senza provoc
il blocco del sistema.
Pf utilizza invece il synproxy;
ogni volta che avviene una connessione fra
un host esterno alla lan e un client è il firewall
che stabilisce la connessione;
una volta che il collegamento tcp è avvenuto
lo scambio dei pacchetti avviene fra client
e host esterno.
In questo modo si previene qualsiasi tipo
di problema derivante da attacchi di questo ge
anche se diretti ad un server protetto dal firew
e non al firewall stesso.
Alcune particolatità del firewall Pf che non son
presenti nel firewall GNU/Linux sono la
normalizzazione del traffico tcp e il fingerprint
La direttiva scrub serve per normalizzare
il traffico tcp da e verso la lan protetta dal firew
alcuni utili parametri della direttiva scrub sono

no-df ->     vengono scartati dei pacchetti non
           corretti, in particolare i pacchetti
           frammentati con il bit "don't fragme
           settato (alcune implementazioni di N
           generano questi tipi di pacchetti
           scorretti)
random -id   ->       sostituisce il numero
                    identificativo
nell'intestazione
                    del pacchetto ip con un
numero
                    casuale rendendo più
difficile
                     l'identificazione del
sistema
                    operativo che sta
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.
tim estam p m odulation: viene sostituito il
              timestamp dell'intestazione del
pacchetto           tcp con un numero casuale;
         dal timestamp si può risalire 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.
Un'altra interessante caratteristica 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 tr affico di rete
si può stabilire quali sono i sistemi operativi che lo
generano.

block in proto tcp from any port 25 os "Window s
95"
Sia con N etfilter 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 ricomposto.
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.
Tramite questi moduli è possibile creare nel
firewall regole come:
iptables -A FORWARD -m ipp2p --kazaa -j
DROP
per eliminare il traffico prodotto da Kazaa.
Esistono parametri appositi anche per
edonkey, winmx e altri.

Un approccio con minor rischio di falsi
positivi e implementabile sia su Linux che su
OpenBSD è quello dell'integrazione del
Uno dei più noti IDS è S nort, 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 S nortsam
che permette a S nort di bloccare gli host
attaccanti interagendo con il firewall.
S nortsam supporta vari firewall fra i quali
iptables,
Pf, Check point Firew all-1, Cisco Pix e Microsoft
Isa server.
Una semplice e comoda configurazione del
traffic s hape 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 riduce
anche la velocità del traffico in downstream.
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
altq on $ext_if priq bandwidth 100Kb queue 
{ q_pri, q_def }
queue q_pri priority 7
queue 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,
Aumentando la priorità dei pacchetti con il flag
si velocizza il download
Le principali regole da seguire nella scelta del f
più adatto alle esigenze della lan da proteggere

●Utilizzare un sistema operativo e un firewall ch
conosce.
●Analizzare bene tutte le esigenze della lan che


andrà a proteggere e le applicazioni che verrann
utilizzate dai computer della lan.
●Valutare bene le caratteristiche e le potenzialit


del firewall che si intende utilizzare.
●Tener presente che per proteggere una rete no


un buon firewall, occorre anche un antivirus ins
nei computer e, possibilmente, un proxy.
Riferimenti & risorse

“Giovanni Bechis” <g.bechis@snb.it>

    http://www.snb.it/smau2006

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

       http://www.undeadly.org

       http://www.netfilter.org

Contenu connexe

Tendances

Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"Camelug Fava
 
Cross compiler per uso domestico
Cross compiler per uso domesticoCross compiler per uso domestico
Cross compiler per uso domesticoBabel
 
Introduzione all'Information Gathering
Introduzione all'Information GatheringIntroduzione all'Information Gathering
Introduzione all'Information GatheringSalvatore Lentini
 
Marco Signorelli 19 09 2008 Ordine Degli Avvocati Di Bergamo
Marco Signorelli   19 09 2008 Ordine Degli Avvocati Di BergamoMarco Signorelli   19 09 2008 Ordine Degli Avvocati Di Bergamo
Marco Signorelli 19 09 2008 Ordine Degli Avvocati Di BergamoAndrea Rossetti
 
Gnutella Italian Printable
Gnutella Italian PrintableGnutella Italian Printable
Gnutella Italian PrintableAlberto Minetti
 
Data hiding - metodologie e strumenti open source
Data hiding - metodologie e strumenti open sourceData hiding - metodologie e strumenti open source
Data hiding - metodologie e strumenti open sourceMarco Ferrigno
 
Digital Forensics: metodologie analisi multipiattaforma
Digital Forensics: metodologie analisi multipiattaformaDigital Forensics: metodologie analisi multipiattaforma
Digital Forensics: metodologie analisi multipiattaformaMarco Ferrigno
 
Clink
ClinkClink
Clinkh4f
 
10 Reti Accesso
10 Reti Accesso10 Reti Accesso
10 Reti Accessoacapone
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceMario Rossano
 
3 Livello Trasporto
3 Livello Trasporto3 Livello Trasporto
3 Livello Trasportoacapone
 
Prot09 Rtp Rtcp Rtsp Tognana Denis
Prot09 Rtp Rtcp Rtsp Tognana DenisProt09 Rtp Rtcp Rtsp Tognana Denis
Prot09 Rtp Rtcp Rtsp Tognana Denisguest93a145
 
Multithreading, multiprocessing e Asincronia
Multithreading, multiprocessing e AsincroniaMultithreading, multiprocessing e Asincronia
Multithreading, multiprocessing e AsincroniaSebastiano Merlino (eTr)
 

Tendances (20)

Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
Snort React per Webfiltering : "Soluzioni per le Leggi-Lista"
 
Cross compiler per uso domestico
Cross compiler per uso domesticoCross compiler per uso domestico
Cross compiler per uso domestico
 
Heartbleed - OpenSSL Bug
Heartbleed - OpenSSL BugHeartbleed - OpenSSL Bug
Heartbleed - OpenSSL Bug
 
Introduzione all'Information Gathering
Introduzione all'Information GatheringIntroduzione all'Information Gathering
Introduzione all'Information Gathering
 
Marco Signorelli 19 09 2008 Ordine Degli Avvocati Di Bergamo
Marco Signorelli   19 09 2008 Ordine Degli Avvocati Di BergamoMarco Signorelli   19 09 2008 Ordine Degli Avvocati Di Bergamo
Marco Signorelli 19 09 2008 Ordine Degli Avvocati Di Bergamo
 
Gnutella Italian Printable
Gnutella Italian PrintableGnutella Italian Printable
Gnutella Italian Printable
 
Cuda 16 12 09
Cuda 16 12 09Cuda 16 12 09
Cuda 16 12 09
 
Data hiding - metodologie e strumenti open source
Data hiding - metodologie e strumenti open sourceData hiding - metodologie e strumenti open source
Data hiding - metodologie e strumenti open source
 
Digital Forensics: metodologie analisi multipiattaforma
Digital Forensics: metodologie analisi multipiattaformaDigital Forensics: metodologie analisi multipiattaforma
Digital Forensics: metodologie analisi multipiattaforma
 
Assembly2
Assembly2Assembly2
Assembly2
 
Multicast IPv6
Multicast IPv6Multicast IPv6
Multicast IPv6
 
Clink
ClinkClink
Clink
 
10 Reti Accesso
10 Reti Accesso10 Reti Accesso
10 Reti Accesso
 
Prot-09 pchar
Prot-09 pcharProt-09 pchar
Prot-09 pchar
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
 
Protocollo ssh
Protocollo sshProtocollo ssh
Protocollo ssh
 
3 Livello Trasporto
3 Livello Trasporto3 Livello Trasporto
3 Livello Trasporto
 
Prot09 Rtp Rtcp Rtsp Tognana Denis
Prot09 Rtp Rtcp Rtsp Tognana DenisProt09 Rtp Rtcp Rtsp Tognana Denis
Prot09 Rtp Rtcp Rtsp Tognana Denis
 
Multithreading, multiprocessing e Asincronia
Multithreading, multiprocessing e AsincroniaMultithreading, multiprocessing e Asincronia
Multithreading, multiprocessing e Asincronia
 
Openmoko
OpenmokoOpenmoko
Openmoko
 

Similaire à Pf e netfilter, analisi dei firewall open source

Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su LinuxMajong DevJfu
 
13 Linux Network Comandi
13 Linux Network Comandi13 Linux Network Comandi
13 Linux Network ComandiMauro Ferrigno
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoBabel
 
TOR - The Onion Router
TOR - The Onion Router TOR - The Onion Router
TOR - The Onion Router Marcello Viti
 
Sistemi e reti : Il livello di trasporto
Sistemi e reti : Il livello di trasportoSistemi e reti : Il livello di trasporto
Sistemi e reti : Il livello di trasportoStefano Scarpellini
 
Soluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDNSoluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDNMatteo D'Amore
 
9 Intranetting
9 Intranetting9 Intranetting
9 Intranettingacapone
 
From Scratch To Network - User mode linux
From Scratch To Network - User mode linuxFrom Scratch To Network - User mode linux
From Scratch To Network - User mode linuxMajong DevJfu
 
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19
Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19Ionela
 
4 Protocollo Ip
4 Protocollo Ip4 Protocollo Ip
4 Protocollo Ipacapone
 
Firewall and Proxy Server
Firewall and Proxy ServerFirewall and Proxy Server
Firewall and Proxy ServerStefano Sasso
 
Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip
Lumit.Basic.Knowledge.Training.Introduzione.Tcp IpLumit.Basic.Knowledge.Training.Introduzione.Tcp Ip
Lumit.Basic.Knowledge.Training.Introduzione.Tcp IpLuca Astori
 
Nagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceNagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceBabel
 
Network configuration - IPTables firewall
 Network configuration - IPTables firewall Network configuration - IPTables firewall
Network configuration - IPTables firewallFulvio Corno
 
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...gammsystem
 

Similaire à Pf e netfilter, analisi dei firewall open source (20)

Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su Linux
 
Progetto Netkit
Progetto NetkitProgetto Netkit
Progetto Netkit
 
13 Linux Network Comandi
13 Linux Network Comandi13 Linux Network Comandi
13 Linux Network Comandi
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimento
 
TCP IP
TCP IPTCP IP
TCP IP
 
TOR - The Onion Router
TOR - The Onion Router TOR - The Onion Router
TOR - The Onion Router
 
RPSL e rpsltool
RPSL e rpsltoolRPSL e rpsltool
RPSL e rpsltool
 
Sistemi e reti : Il livello di trasporto
Sistemi e reti : Il livello di trasportoSistemi e reti : Il livello di trasporto
Sistemi e reti : Il livello di trasporto
 
Soluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDNSoluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDN
 
9 Intranetting
9 Intranetting9 Intranetting
9 Intranetting
 
From Scratch To Network - User mode linux
From Scratch To Network - User mode linuxFrom Scratch To Network - User mode linux
From Scratch To Network - User mode linux
 
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19
Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19
 
Oltre I firewall
Oltre I firewallOltre I firewall
Oltre I firewall
 
4 Protocollo Ip
4 Protocollo Ip4 Protocollo Ip
4 Protocollo Ip
 
Iperf
IperfIperf
Iperf
 
Firewall and Proxy Server
Firewall and Proxy ServerFirewall and Proxy Server
Firewall and Proxy Server
 
Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip
Lumit.Basic.Knowledge.Training.Introduzione.Tcp IpLumit.Basic.Knowledge.Training.Introduzione.Tcp Ip
Lumit.Basic.Knowledge.Training.Introduzione.Tcp Ip
 
Nagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceNagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open source
 
Network configuration - IPTables firewall
 Network configuration - IPTables firewall Network configuration - IPTables firewall
Network configuration - IPTables firewall
 
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
 

Plus de Giovanni Bechis

SpamAssassin 4.0 new features
SpamAssassin 4.0 new featuresSpamAssassin 4.0 new features
SpamAssassin 4.0 new featuresGiovanni Bechis
 
ACME and mod_md: tls certificates made easy
ACME and mod_md: tls certificates made easyACME and mod_md: tls certificates made easy
ACME and mod_md: tls certificates made easyGiovanni Bechis
 
Scaling antispam solutions with Puppet
Scaling antispam solutions with PuppetScaling antispam solutions with Puppet
Scaling antispam solutions with PuppetGiovanni Bechis
 
What's new in SpamAssassin 3.4.3
What's new in SpamAssassin 3.4.3What's new in SpamAssassin 3.4.3
What's new in SpamAssassin 3.4.3Giovanni Bechis
 
Fighting Spam for fun and profit
Fighting Spam for fun and profitFighting Spam for fun and profit
Fighting Spam for fun and profitGiovanni Bechis
 
Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)Giovanni Bechis
 
Pf: the OpenBSD packet filter
Pf: the OpenBSD packet filterPf: the OpenBSD packet filter
Pf: the OpenBSD packet filterGiovanni Bechis
 
ELK: a log management framework
ELK: a log management frameworkELK: a log management framework
ELK: a log management frameworkGiovanni Bechis
 
OpenSSH: keep your secrets safe
OpenSSH: keep your secrets safeOpenSSH: keep your secrets safe
OpenSSH: keep your secrets safeGiovanni Bechis
 
OpenSMTPD: we deliver !!
OpenSMTPD: we deliver !!OpenSMTPD: we deliver !!
OpenSMTPD: we deliver !!Giovanni Bechis
 
LibreSSL, one year later
LibreSSL, one year laterLibreSSL, one year later
LibreSSL, one year laterGiovanni Bechis
 
SOGo: sostituire Microsoft Exchange con software Open Source
SOGo: sostituire Microsoft Exchange con software Open SourceSOGo: sostituire Microsoft Exchange con software Open Source
SOGo: sostituire Microsoft Exchange con software Open SourceGiovanni Bechis
 
Cloud storage, i tuoi files, ovunque con te
Cloud storage, i tuoi files, ovunque con teCloud storage, i tuoi files, ovunque con te
Cloud storage, i tuoi files, ovunque con teGiovanni Bechis
 
Npppd: easy vpn with OpenBSD
Npppd: easy vpn with OpenBSDNpppd: easy vpn with OpenBSD
Npppd: easy vpn with OpenBSDGiovanni Bechis
 
Openssh: comunicare in sicurezza
Openssh: comunicare in sicurezzaOpenssh: comunicare in sicurezza
Openssh: comunicare in sicurezzaGiovanni Bechis
 
Ipv6: il futuro di internet
Ipv6: il futuro di internetIpv6: il futuro di internet
Ipv6: il futuro di internetGiovanni Bechis
 
L'ABC della crittografia
L'ABC della crittografiaL'ABC della crittografia
L'ABC della crittografiaGiovanni Bechis
 

Plus de Giovanni Bechis (20)

the Apache way
the Apache waythe Apache way
the Apache way
 
SpamAssassin 4.0 new features
SpamAssassin 4.0 new featuresSpamAssassin 4.0 new features
SpamAssassin 4.0 new features
 
ACME and mod_md: tls certificates made easy
ACME and mod_md: tls certificates made easyACME and mod_md: tls certificates made easy
ACME and mod_md: tls certificates made easy
 
Scaling antispam solutions with Puppet
Scaling antispam solutions with PuppetScaling antispam solutions with Puppet
Scaling antispam solutions with Puppet
 
What's new in SpamAssassin 3.4.3
What's new in SpamAssassin 3.4.3What's new in SpamAssassin 3.4.3
What's new in SpamAssassin 3.4.3
 
Fighting Spam for fun and profit
Fighting Spam for fun and profitFighting Spam for fun and profit
Fighting Spam for fun and profit
 
Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)Linux seccomp(2) vs OpenBSD pledge(2)
Linux seccomp(2) vs OpenBSD pledge(2)
 
Pledge in OpenBSD
Pledge in OpenBSDPledge in OpenBSD
Pledge in OpenBSD
 
Pf: the OpenBSD packet filter
Pf: the OpenBSD packet filterPf: the OpenBSD packet filter
Pf: the OpenBSD packet filter
 
ELK: a log management framework
ELK: a log management frameworkELK: a log management framework
ELK: a log management framework
 
OpenSSH: keep your secrets safe
OpenSSH: keep your secrets safeOpenSSH: keep your secrets safe
OpenSSH: keep your secrets safe
 
OpenSMTPD: we deliver !!
OpenSMTPD: we deliver !!OpenSMTPD: we deliver !!
OpenSMTPD: we deliver !!
 
LibreSSL, one year later
LibreSSL, one year laterLibreSSL, one year later
LibreSSL, one year later
 
LibreSSL
LibreSSLLibreSSL
LibreSSL
 
SOGo: sostituire Microsoft Exchange con software Open Source
SOGo: sostituire Microsoft Exchange con software Open SourceSOGo: sostituire Microsoft Exchange con software Open Source
SOGo: sostituire Microsoft Exchange con software Open Source
 
Cloud storage, i tuoi files, ovunque con te
Cloud storage, i tuoi files, ovunque con teCloud storage, i tuoi files, ovunque con te
Cloud storage, i tuoi files, ovunque con te
 
Npppd: easy vpn with OpenBSD
Npppd: easy vpn with OpenBSDNpppd: easy vpn with OpenBSD
Npppd: easy vpn with OpenBSD
 
Openssh: comunicare in sicurezza
Openssh: comunicare in sicurezzaOpenssh: comunicare in sicurezza
Openssh: comunicare in sicurezza
 
Ipv6: il futuro di internet
Ipv6: il futuro di internetIpv6: il futuro di internet
Ipv6: il futuro di internet
 
L'ABC della crittografia
L'ABC della crittografiaL'ABC della crittografia
L'ABC della crittografia
 

Pf e netfilter, analisi dei firewall open source

  • 1. Pf e Netfilter, analisi dei firewall Open Source “Giovanni Bechis” <g.bechis@snb.it>
  • 2. I principali firewall Open Source sono: Netfilter, il firewall di Linux e Pf, 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
  • 3. La configurazione di Netfilter viene fatta utilizzando il comando iptables, quella di Pf modificando il file /etc/pf.conf. Se non si necessita di caratteristiche avanzate si possono utilizzare anche delle interfaccie grafiche per la configurazione.
  • 4.
  • 5. Per poter utilizzare le caratteristiche più avanzate dei due firewall occorre scrivere la configurazione senza basarsi su interfaccie grafiche più semplici ma limitative. In Pf anche le caratteristiche più avanzate sono già incluse, per quanto riguarda Netfilter/Iptables occorre talvolta affidarsi a Patch-O-Matic.
  • 6. 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.
  • 7. iplim it (limita il numero di connessioni su una determinata porta da un determinato host) iptables -A IN PUT -p tcp --syn --dport ssh -m iplim it --iplim it-above 10 -j REJECT block quick inet proto tcp from <badhost> port ssh pass in inet proto tcp from <badhost> port ssh flags S /S A keep state (m ax-src-conn 10, overload <badhost> flush)
  • 8. m port (Permette di fare il match di più porte in una sola regola) iptables -A IN PUT -p tcp -m m port --ports 20:23,80 -j DROP block quick inet proto tcp from any port { 20:23, 80 }
  • 9. quota (Permette di bloccare i pacchetti una volta raggiunta una determinata quantità di traffico) iptables -A IN PUT -p tcp --dport 80 -m quota --quota 52428800 -j ACCEPT iptables -A IN PUT -p tcp --dport 80 -j DROP non è possibile in Pf se non utilizzando le apposite regole per limitare la banda
  • 10. random (Per bloccare un numero di pacchetti a caso) iptables -A IN PUT -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%
  • 11. re c e nt (Limita il numero di connessioni da un determinato host) iptables -A FORWARD -m recent --nam e badhost --rcheck --seconds 60 --hitcount 100 -j DROP iptables -A FORWARD -p tcp -i eth0 --dport 139 -m recent --nam e badhost --set -j DROP block quick inet proto tcp from <badhost> port 139 pass in inet proto tcp from <badhost> port 139 flags S /S A k eep state (m ax-src-conn-rate 60/100, overload <badhost> flush global)
  • 12. s tring (per bloccare i pacchetti che contengono una determinata stringa) iptables -A INPUT -m string --string '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.
  • 13. tim e (Per accettare un pacchetto in base all'orario) iptables -A IN PUT -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.
  • 14. tc p-m s s (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 S YN ,RS T S YN -j TCPMS S --set-m ss 1460 scrub in on $ext_if m ax-m ss 1460
  • 15. ttl (per modificare il valore del ttl (in base al time-to-live si può risalire 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
  • 16. 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 N etfilter si possono gestire semplicemente protocolli come ftp, h323, snmp e pptp.
  • 17. 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 rl0: 192.168.0.1.26562 > 192.168.1.10.80: S 1230309818:1230309818(0) win 16384
  • 18. 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.
  • 19. Tramite Nulog e Ulogd è possibile controllare da una semplice interfaccia web i log del firewa
  • 20.
  • 21.
  • 22.
  • 23. Symon permette un controllo generale del firew
  • 24. Con Pfstat si realizzano grafici per analizzare quanti pacchetti sono stati bloccati dal firewa
  • 25. Per un controllo in tempo reale del firewall *B si può utilizzare pftop, se si utilizza Linux si pu analizzare il file /proc/net/ip_conntrack .
  • 26. 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 richiede l'apertura di una connessione (di tipo TCP) verso quel sito; questo avviene seguendo una serie di passi, il primo dei quali consiste nell'invio di un pacch TCP che richiede l'apertura di una connessione. Le regole di funzionamento del protocollo TCP esigono che il sistema risponda allocando alcune risorse per la connessione.
  • 27. Se si programma opportunamente un semplice P è possibile richiedere l'apertura di diverse migli di connessioni al secondo, che "inondando" il se ne consumano rapidamente tutta la memoria, bloccandolo o mandandolo in crash. GNU/Linux e OpenBSD “affrontano” questo problema in maniera del tutto differente utilizza uno i syncookies e l'altro il synproxy.
  • 28. N etfilter utilizza il sistema dei syncookies, rispondendo con dei pacchetti validi agli attacc di tipo syn flood (DoS ), in questo modo la connessione non viene interrotta e la coda dei pacchetti che bloccherebbero il server viene svuotata più velocemente e senza provoc il blocco del sistema.
  • 29. Pf utilizza invece il synproxy; ogni volta che avviene una connessione fra un host esterno alla lan e un client è il firewall che stabilisce la connessione; una volta che il collegamento tcp è avvenuto lo scambio dei pacchetti avviene fra client e host esterno. In questo modo si previene qualsiasi tipo di problema derivante da attacchi di questo ge anche se diretti ad un server protetto dal firew e non al firewall stesso.
  • 30. Alcune particolatità del firewall Pf che non son presenti nel firewall GNU/Linux sono la normalizzazione del traffico tcp e il fingerprint
  • 31. La direttiva scrub serve per normalizzare il traffico tcp da e verso la lan protetta dal firew alcuni utili parametri della direttiva scrub sono no-df -> vengono scartati dei pacchetti non corretti, in particolare i pacchetti frammentati con il bit "don't fragme settato (alcune implementazioni di N generano questi tipi di pacchetti scorretti)
  • 32. random -id -> sostituisce il numero identificativo nell'intestazione del pacchetto ip con un numero casuale rendendo più difficile l'identificazione del sistema operativo che sta
  • 33. 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.
  • 34. tim estam p m odulation: viene sostituito il timestamp dell'intestazione del pacchetto tcp con un numero casuale; dal timestamp si può risalire 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.
  • 35. Un'altra interessante caratteristica 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 tr affico di rete si può stabilire quali sono i sistemi operativi che lo generano. block in proto tcp from any port 25 os "Window s 95"
  • 36. Sia con N etfilter 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 ricomposto. 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.
  • 37. Tramite questi moduli è possibile creare nel firewall regole come: iptables -A FORWARD -m ipp2p --kazaa -j DROP per eliminare il traffico prodotto da Kazaa. Esistono parametri appositi anche per edonkey, winmx e altri. Un approccio con minor rischio di falsi positivi e implementabile sia su Linux che su OpenBSD è quello dell'integrazione del
  • 38. Uno dei più noti IDS è S nort, 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 S nortsam che permette a S nort di bloccare gli host attaccanti interagendo con il firewall. S nortsam supporta vari firewall fra i quali iptables, Pf, Check point Firew all-1, Cisco Pix e Microsoft Isa server.
  • 39. Una semplice e comoda configurazione del traffic s hape 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 riduce anche la velocità del traffico in downstream.
  • 40. 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
  • 41. altq on $ext_if priq bandwidth 100Kb queue { q_pri, q_def } queue q_pri priority 7 queue 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,
  • 42. Aumentando la priorità dei pacchetti con il flag si velocizza il download
  • 43. Le principali regole da seguire nella scelta del f più adatto alle esigenze della lan da proteggere ●Utilizzare un sistema operativo e un firewall ch conosce. ●Analizzare bene tutte le esigenze della lan che andrà a proteggere e le applicazioni che verrann utilizzate dai computer della lan. ●Valutare bene le caratteristiche e le potenzialit del firewall che si intende utilizzare. ●Tener presente che per proteggere una rete no un buon firewall, occorre anche un antivirus ins nei computer e, possibilmente, un proxy.
  • 44. Riferimenti & risorse “Giovanni Bechis” <g.bechis@snb.it> http://www.snb.it/smau2006 http://www.benzedrine.cx/pf.html http://www.undeadly.org http://www.netfilter.org