Netfilter: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Annullata la modifica 106112699 di 212.210.10.203 (discussione) Etichetta: Annulla |
|||
Riga 100:
===Monitoraggio delle connessioni===
Una delle funzionalità più importanti offerte da netfilter è la possibilità di identificare i pacchetti facenti parte di una stessa connessione (''stateful packet filtering''). Questo permette di creare delle regole basate sulla relazione che un pacchetto ha nei confronti della connessione a cui appartiene e di altre connessioni correlate a livello applicativo. Inoltre il NAT si basa su queste informazioni per tradurre allo stesso modo gli indirizzi dei pacchetti di una stessa connessione, e iptables usa queste informazioni per realizzare firewall avanzati.
netfilter assegna ad ogni pacchetto uno dei seguenti stati:
* <code>NEW</code> (NUOVO), il pacchetto inizia una
* <code>ESTABLISHED</code> (STABILITO), il pacchetto fa parte di una connessione già stabilita; * <code>RELATED</code> (IN RELAZIONE), il pacchetto ha qualche relazione con un'altra connessione già stabilita;
* <code>INVALID</code> (INVALIDO), il pacchetto non fa parte di alcuna connessione e non è possibile crearne.
Un caso comune è che il primo pacchetto visto dal firewall viene classificato come <code>NEW</code>, la risposta viene classificata come <code>ESTABLISHED</code> e un messaggio di errore, ad esempio un errore [[Internet Control Message Protocol|ICMP]], come <code>RELATED</code>. Un errore ICMP che non appartiene a nessuna connessione può essere classificato come <code>INVALID</code>.
Inoltre, attraverso l'uso di moduli aggiuntivi, il monitoraggio della connessione può ottenere la capacità di relazionare tra loro le connessioni che fanno parte di una stessa sessione a livello applicativo. Per esempio, il protocollo [[File Transfer Protocol|FTP]] stabilisce due tipi di connessione, una per le informazioni di controllo e un'altra per i dati veri e propri. Quando il modulo <code>nf_conntrack_ftp</code> viene caricato nel sistema, il primo pacchetto di una connessione dati sarà classificato come <code>RELATED</code> invece di <code>NEW</code>, in quanto la connessione di controllo è stata già stabilita e la connessione dati ne è una prosecuzione logicamente. Per fare questo, il modulo nf_conntrack_ftp deve analizzare il contenuto della connessione di controllo, per identificare le caratteristiche delle connessioni dati.
netfilter può utilizzare l'informazione sullo stato dei pacchetti per creare filtri più potenti e più semplici da definire. Per esempio, una regola può lasciar passare i pacchetti <code>NEW</code> solo dall'interno del firewall verso la rete esterna, e i pacchetti <code>RELATED</code> e <code>ESTABLISHED</code> in entrambe le direzioni. Questo permette di inviare delle repliche a connessioni create dall'interno, ma non permette di creare nuove connessioni dall'esterno, il che aumenta la sicurezza di un sistema perché gli attacchi che vengono dall'esterno non sono in grado di stabilire connessioni. Inoltre, se una sessione FTP crea una connessione dati dall'esterno verso l'interno, la connessione sarà accettata in quanto la connessione dati è in relazione con la connessione di controllo che è stata creata dall'interno verso l'esterno, e quindi i pacchetti della connessione dati saranno classificati come <code>RELATED</code> e non come <code>NEW</code>.
==Il programma iptables==
iptables è un'applicazione che permette agli amministratori di configurare le tabelle, le catene e le regole di netfilter.
Dato che iptables modifica il funzionamento del sistema operativo, per essere eseguito è necessario entrare nel sistema come utente amministratore, che nei sistemi di tipo [[Unix]] è l'utente [[root (utente)|root]], il quale ha i permessi per compiere qualsiasi tipo di operazione. Sulla maggior parte dei sistemi Linux, iptables è installato come <code>/usr/sbin/iptables</code>. La lista completa delle funzionalità del comando è consultabile nella relativa documentazione, che può essere visualizzata con il comando "<code>man iptables</code>".
iptables permette di aggiungere, sostituire o cancellare una regola da una catena specificata, di ottenere la lista delle regole di una catena, o di effettuare operazioni di amministrazione quali la cancellazione di tutte le catene o l'azzeramento del contatore di byte e pacchetti di una catena. Ad esempio, per elencare tutte le regole della catena OUTPUT, si usa il comando:
:<code>iptables -L OUTPUT</code>
Con iptables si possono altresì creare catene definite dall'utente associandovi una politica (ovvero l'obiettivo di default)
|