|
Implementazione.
Vediamo ora come vengono implementati i firewall, tracciandone uno schema
generale di funzionamento all'interno del sistema operativo ed in particolare
dello stack TCP/IP. L'engine di firewalling risiede nel kernel e si interpone
tra il NIC (Network Interface Card) e lo stack TCP/IP di gestione delle
comunicazioni di rete.
Vi sono poi delle applicazioni user-level di interfaccia per la configurazione
delle regole che vengono applicate dall'engine (pensiamo ad esempio al
programma "ipchains" o alle GUI dei prodotti commerciali). L'inspection
engine può essere implementata come modulo separato o staticamente
compilata all'interno del kernel. Lo schema di funzionamento varia ovviamente
tra le differenti implementazioni, ma in generale segue quello riportato
nella fig.4.
L'inspection engine del firewall si situa tra i livelli
2 e 3 dello stack ISO/OSI: brevemente, per ogni pacchetto in arrivo dal
NIC, viene effettuata una scansione di tutte le regole, fino a quando
non ne viene trovata una verificata dalle caratteristiche del pacchetto
stesso.
A questo punto, in base alle informazioni raccolte, si decide se bloccarlo
(inviando un pacchetto di Not ACKnowledged in risposta o semplicemente
scartandolo) o farlo passare, reinserendolo nel flusso dei dati e restituendo
il controllo allo stack TCP/IP standard del kernel.
L'engine di logging si occupa nel frattempo di registrare le informazioni
utili per mantenere una traccia degli eventi verificatisi sulla rete.
L'overhead introdotto dalla presenza di un firewall all'interno del sistema
operativo è generalmente minimo: a seconda delle esigenze di traffico
e throughput della rete da proteggere si può spaziare da un cluster
di Sparc in Alta Disponibilità ad un vecchio i486 riciclato (perfetto
ad esempio per chi ha l'esigenza di proteggere la propria rete casalinga
collegata ad Internet via ADSL).
|