
Questo è un mini-firewall che isola completamente un dispositivo target dalla rete locale.
Questo è un mini-firewall che isola completamente un dispositivo target dalla rete locale. Serve a consentire a macchine infette l'accesso a Internet, ma senza mettere a repentaglio la rete locale.
Questo progetto dipende da libpcap e, ovviamente, da un compilatore C.
Su Debian, dovrebbe funzionare quanto segue:
# apt-get install git gcc make libpcap-dev
# git clone https://github.com/robertdavidgraham/isowall
# cd isowall
# make
Questo inserirà il binario isowall nella directory locale isowall/bin.
Dovrebbe funzionare anche su Windows, Mac OS X, xBSD e praticamente su qualsiasi sistema operativo che supporti libpcap.
Per prima cosa, prepara una macchina con tre interfacce di rete.
La prima interfaccia di rete (come eth0) verrà configurata normalmente, con uno stack TCP/IP,
in modo da potersi collegare via SSH.
Le altre due interfacce di rete non devono avere stack TCP/IP, né indirizzo IP, né alcunché. Questo è il passaggio di configurazione più importante ed è ciò che più spesso si sbaglia. Ad esempio, il software DHCP sulla macchina potrebbe essere configurato per inviare automaticamente richieste DHCP su queste interfacce aggiuntive. Devi sistemare la cosa in modo che nulla sia associato a queste interfacce.
Per eseguirlo, basta digitare:
# ./bin/isowall --internal eth1 --external eth2 -c xxxx.conf
dove xxxx.conf contiene la tua configurazione, descritta di seguito.
Quello che segue mostra un tipico file di configurazione
internal = eth1
internal.target.ip = 10.0.0.129
internal.target.mac = 02:60:8c:37:87:f3
external = eth2
external.router.ip = 10.0.0.1
external.router.mac = 66:55:44:33:22:11
allow = 0.0.0.0/0
block = 192.168.0.0/16
block = 10.0.0.0/8
block = 224.0.0.0-255.255.255.255
Il dispositivo target che stiamo isolando ha l'indirizzo IP e il MAC indicati.
Vengono fatti passare solo pacchetti IPv4 e ARP.
I pacchetti in uscita devono soddisfare le seguenti condizioni:
internal.target.macexternal.router.macinternal.target.ipallow, ma non in un intervallo blockexternal.router.ipI pacchetti in ingresso devono soddisfare le seguenti condizioni:
internal.target.macexternal.router.macinternal.target.ipallow, ma non in un intervallo blockexternal.router.ipNon esiste alcuna garanzia, ovviamente, ma questo programma offre una sicurezza piuttosto buona.
La sicurezza si basa sul fatto che non c'è alcuno stack IP associato agli adattatori.
Ciò significa che la macchina infetta non può toccare in alcun modo la macchina firewall,
se non nei limiti consentiti dalla funzione is_allowed().
Quella funzione rappresenta la maggior parte della superficie d'attacco della macchina firewall.
E, come si può capire leggendo la funzione, essa contiene quasi nessuna funzionalità,
il che significa che la superficie d'attacco è davvero molto ridotta.
Ci sono alcuni attacchi teorici che potrebbero verificarsi a livello fisico, ma per la maggior parte, non dobbiamo preoccuparcene.