Next: Sintassi e funzionalità
Up: Esempio di implementazione gratuita
Previous: Esempio di implementazione gratuita
  Indice
Nel sistema gratuito linux le funzioni di firewall vengono svolte da due componenti
distinte ed interagenti. Vi è il codice di packet-filtering implementato nel
kernel ed un pacchetto di configurazione detto ipchains. Ipchains permette di
configurare il kernel nel modo desiderato tramite un approcio flessibile e piuttosto
semplice. Come vediamo in figura 4.1 il flusso dati transita attraverso
alcuni stadi di confronto detti ``catene''. Ogni catena ha un'origine dalla
quale attinge dati, una destinazione verso la quale i dati vengono indirizzati
ed è composta da più anelli. Ogni anello è costituito da una regola imposta
dall'utente. I dati vengono vagliati sequenzialmente e confrontati con tutte
le regole della catena. Ogni regola specifica cosa fare di un certo tipo di
pacchetto. Quest'ultimo può essere respinto verso l'origine, semplicemente distrutto,
passato ad un'altra catena oppure sottoposto al vaglio della regola successiva.
Figura 4.1:
Struttura base di ipchains
|
|
Il flusso dati passa attraverso alcuni punti predefiniti dall'implementazione
del kernel:
- Il controllo di validità del pacchetto. Esso verifica sia la corretta ricerzione
sia la pericolosità di alcune sequenze che, a causa di errori di programmazione,
possono insidiare la stabilità di vari sistemi operativi e lo stesso funzionamento
delle regole di filtraggio.
- La catena di ingresso. Tutti i pacchetti dati ricevuti tramite la rete -compresi
quelli generati dai processi locali- vengono vagliati da questo insieme di
regole.
- La conversione degli indirizzi -NAT: network address translation-. La rete Internet
adotta oggi lo standard Ipv4: esso è di facile implementazione ma ha problemi
nel gestire il gran numero di host connessi nel mondo utilizzando soli 4 byte
per l'identificazione univoca di ognuno di essi. Allo scopo di razionalizzare
l'uso degli indirizzi disponibili si è fatta una distinzione tra indirizzi pubblici,
conosciuti da tutta la Rete, e privati, volutamente ignorati dalla movimentazione
dei dati pubblica e destinati alla connessione di più macchine in reti locali.
Per garantire lo sbocco delle reti private verso Internet è necessario utilizzare
un computer dotato di indirizzo pubblico -detto router, vedi figura 4.2
- come traslatore di indirizzi. Il router effettua sulla rete pubblica le richieste
per conto dei computer appartenenti alla sua sottorete privata presentandosi
col proprio IP pubblico e restituisce i risultati tramite opportune tabelle
di corrispondenza generate automaticamente. La conversione degli indirizzi viene
eseguita proprio sulla base di tali tabelle. È importante il fatto che la
traslazione sia fatta prima del controllo sulle catene di forward e uscita poiché
in questo modo, dove necessario, i controlli vengono effettuati sugli indirizzi
reali e non su quanto il router ha opportunamente ``mascherato''.
- Decisione sulla destinazione. I pacchetti dati sopravvissuti fino a questo punto
vengono spediti ai processi locali che ne avevano fatto richiesta oppure vengono
instradati verso le catena di forward se la destinazione è esterna.
- Catena di forward. Tutti i pacchetti in arrivo dall'esterno del computer e destinati
ad un'altro host attraversano questa catena.
- Catena di uscita. Tutti i pacchetti generati dalla macchina o transitanti attraverso
essa attraversano questa catena.
Processi locali. Tutti i pacchetti generati da processi locali e destinati ai
medesimi attraversano la catena di uscita diretti verso l'interfaccia LO e tornano
sulla catena di ingresso.
Figura 4.2:
Conversione tra indirizzi pubblici e privati (NAT)
|
|
La grande flessibilità di ipchains permette di definire catene aggiuntive che
vanno ad affiancarsi alle catene di base sopra descritte (senza mai sostituirle
però) permettendo all'utente di raggiungere livelli di ottimizzazione molto
alti. Tramite l'uso delle catene aggiuntive infatti solo i pachetti aderenti
alla descrizione fatta da una regola specifica -regola A in fig. 4.3-
vengono confrontati con le ulteriori regole della nuova catena- . Dalla figura
si evince anche che le catene di base sopra descritte non possono mai essere
aggirate. Le catene aggiuntive non interrompono mai il flusso dei dati ma possono
semplicemente allungarlo per poi tornare alla posizione di partenza.
Figura 4.3:
Esempio di percorso dei pacchetti sulle catene di ipchains
|
|
Next: Sintassi e funzionalità
Up: Esempio di implementazione gratuita
Previous: Esempio di implementazione gratuita
  Indice
[email protected] [email protected]