Cloud with rain
.:G
G:.
0 and 1 serie, black on white
pulled card
myjsp.feelinglinux.com
ver. 1.1.9-4
Hallo, welcome to my world.
Here you can find some stuff about computer science.
<<< Enjoy your visit! >>>
0 and 1 serie, white on black

Firewall, come settarlo con ipchains

        Scritto: Giansante Gabriele, 2001     

Un firewall e' in pratica e' un meccanismo di controllo del traffico in ingresso ed in uscita da una rete.
E' possibile
  • far passare i dati: i dati vengono fatti passare;
  • bloccare i dati: cioe' si possono rifiutare dati provenienti da (o uscenti verso) indirizzi particolari oppure dati di un certo tipo;
  • redirigere i dati: indirizzare i dati in ingresso/uscita a seconda del tipo o della provenienza.

Il seguente e' un semplice schema di firewall:
rete interna     --------   rete esterna
----------------| Filtro |---------------
                 --------
I dati in ingresso ed in uscita passano tutti attraverso il filtro. Il filtro, in questo caso, e' un dispositivo in grado di controllare i dati di passaggio ed eventualmente bloccarli o reindirizzarli.

Uno schema piu' avanzato, invece, puo' essere il seguente:
rete interna     ---------- --------- ----------   rete esterna
----------------| Filtro A | gateway | Filtro B |----------------
                 ---------- --------- ----------
Il flusso dei dati puo' essere sia verso l'esterno (es. internet) che verso l'interno (es.rete locale).
Il traffico proveniente dall'esterno viene controllato dal filtro B. Quello verso l'esterno viene regolato dal filtro A. Una volta che il pacchetto (dati) esce da un filtro, entra nel gateway, ovvero un tratto di rete di percorrenza obbligata, lungo il quale possono essere effettuati ulteriori controlli (header, dimensione, contenuto, ecc.). Superato il gateway, finalmente il pacchetto, se ha superato tutti i controlli, puo' arrivare a destinazione (supponiamo che il filtro di ingresso non blocchi o controlli i dati in uscita e viceversa).

Esistono comunque molte altre possibilita' e combinazioni.

Un luogo comune e' che un firewall si possa configurare solo in reti aziendali. Un meccanismo simile, invece, puo' essere realizzato su reti di dimensioni qualsiasi, al limite anche per solo un computer.
Esistono diversi modi di implementare un firewall, fra cui l'utilizzo di
  • hardware dedicato (come i router);
  • uno o piu' computer destinati a questo compito;
  • software normale o a livello di kernel.
Il kernel Linux fornisce "di serie" il filtraggio dei dati come firewall. Il tutto si basa su una serie di regole che definiscono il comportamento del sistema in presenza di pacchetti provenienti o destinati verso determinati IP. Queste regole vengono valutate una alla volta, in cascata, per ogni pacchetto ricevuto. Se una regola si applica ad un determinato dato in fase di controllo, quest'ultimo viene gestito in modo consono a quanto specificato dalla regola stessa. Per esempio, se arrivasse una serie di dati dall'indirizzo IP XXX.YYY.ZZZ.SSS ed esistesse una regola per il blocco di tutti i pacchetti provenienti proprio dall'indirizzo IP XXX.YYY.ZZZ.SSS., allora tali dati verrebbero rifiutati.

Per configurare le regole si puo' utilizzare ipchains, un tool di amministrazione del firewall del kernel basato su IP.

Un esempio di configurazione con ipchains e' il seguente:
/sbin/ipchains -I input -s XXX.YYY.ZZZ.SSS -j DENY -l
La forma utilizzata e'
ipchains <operazione> <catena> <sorgente_dei_dati> <cosa_fare> <attivazione_log>
Le principali "operazioni" possibili sono:
  • -I: Inserimento regola (regola usata nell'esempio)
  • -A: Aggiunta regola alla fine della catena
  • -D: Eliminazione regola
  • -R: Sostituzione regola con un'altra
  • -L: Elenco regole
  • -N: Definizione di una nuova catena (catena definita dall'utente)
  • -X: Eliminazione catena definita con -N
Come "catena" e' possibile utilizzarne una predefinita o una definita dall'utente.
Nell'esempio e' stata utilizzata "input", ovvero la catena relativa ai dati in ingresso.
Fra le catene predefinite vi sono:
  • input: relativa ai dati in ingresso
  • output: relativa ai dati in uscita
  • forward: relativa ai dati ricevuti in ingresso ma destinati ad altre reti/pc. E' necessario abilitare il forwarding per usare questa regola. Il forwarding puo' essere abilitato con
    echo 1 > /proc/sys/net/ipv4/ip_forward
La "sorgente dei dati" rappresenta l'indirizzo dal quale provengono i dati o verso il quale vengono mandati. Come sorgente puo' essere specificato un nome (es. "ciao.atutti.it") oppure un indirizzo IP. Possono essere associati alla sorgente anche una maschera ed una porta (es. "-s 127.0.0.1/255.255.255.0 80").

Per "cosa fare" si intende la politica da adottare quando gli indirizzi dei dati ricevuti/spediti soddisfano la regola. Fra i parametri che e' possibile passare all'opzione -j vi sono:
  • DENY: Blocco dei dati
  • ACCEPT: I dati possono passare senza problemi
  • REJECT: Come DENY ma spedisce indietro un messaggio di tipo "host non raggiungibile"
  • REDIRECT: Devia i dati verso un socket locale (solo per le catene di input)
Con l'"attivazione log" (opzione -l) si abilita il kernel a salvare in un file di log (tipicamente "/var/log/messages") le informazioni sui dati che soddisfano la regola. Ad esempio, e' possibile cosi' tener traccia del traffico da e verso un particolare indirizzo IP.

L'invocazione di ipchains dell'esempio iniziale, in pratica, blocca tutti i dati provenienti dall'indirizzo IP XXX.YYY.ZZZ.SSS, tenendo traccia (-l) del traffico ricevuto.

Concludiamo vedendo come elencare le regole attive e come eliminarle.
Per ottenere un elenco delle regole attivate, si sfrutta l'operazione -L.
/sbin/ipchains -L [--line-numbers]
/sbin/ipchains -L input [--line-numbers]
Il parametro --line-numbers non e' obbligatorio.
Per eliminare una regola, si puo' usare
/sbin/ipchains -D <catena> <ordine_nella_catena>
Il parametro "catena" assume il solito significato. Invece, il parametro "ordine" e' particolare. Si tratta del numero della posizione della regola all'interno della catena (partendo da 1). Per ottenere il numero, si puo' usare l'opzione --line-numbers nell'elencare le regole ed utilizzare il numero indicato.

Non tutte le funzionalita' di ipchains sono state esposte, ma quanto detto consente di creare delle semplici regole adatte alla maggior parte dei casi. Per ulteriori informazioni, consultare il manuale linux ("man ipchains" e "man ipfw"). Due ultime considerazioni. Il tool ipchains, come tutti i firewall, non puo' proteggere da attacchi provenienti dall'interno della rete. Inoltre, cosi' come funziona, non consente la memorizzazione permanente delle regole, nel senso che ad ogni riavvio del sistema, le regole non saranno piu' attive (e' possibile configurarle attraverso uno script eseguito all'avvio).


Hai trovato utile questo articolo?
Aiutami a condividerlo o metti un "mi piace".
Grazie mille!


Gli strumenti di condivisione (Google+, Facebook) sono visibili in alto a destra solo dopo aver accettato la policy di utilizzo dei cookie per questo sito.
FAQ - Come faccio a cambiare la mia scelta?

 

Strumenti (myjsp.feelinglinux.com)
Gioco: allenamento con la tastiera Strumenti di codifica/decodifica URI (%-encoding) e Base64 Strumenti di calcolo online per IP e Reti
QUIZ GAME
Quiz game

Cerca @myjsp.feelinglinux.com

Pubblicita'