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.
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
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,
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.