
Este es un mini-firewall que aísla completamente un dispositivo objetivo de la red local.
Este es un mini-cortafuegos que aísla por completo un dispositivo objetivo de la red local. Esto sirve para permitir a máquinas infectadas acceso a Internet, pero sin poner en peligro la red local.
Este proyecto depende de libpcap y, por supuesto, de un compilador de C.
En Debian, lo siguiente debería funcionar:
# apt-get install git gcc make libpcap-dev
# git clone https://github.com/robertdavidgraham/isowall
# cd isowall
# make
Esto colocará el binario isowall en el directorio local isowall/bin.
Esto también debería funcionar en Windows, Mac OS X, xBSD y prácticamente cualquier sistema operativo que soporte libpcap.
Primero, prepare una máquina con tres interfaces de red.
La primera interfaz de red (como eth0) se configurará de forma normal, con una pila TCP/IP,
para que pueda conectarse a ella por SSH.
Las otras dos interfaces de red no deben tener pila TCP/IP, ni dirección IP, ni nada. Este es el paso de configuración más importante, y lo más común que hará mal. Por ejemplo, el software DHCP de la máquina puede estar configurado para enviar automáticamente solicitudes DHCP en estas interfaces adicionales. Debe arreglar eso para que nada esté vinculado a estas interfaces.
Para ejecutarlo, simplemente escriba:
# ./bin/isowall --internal eth1 --external eth2 -c xxxx.conf
donde xxxx.conf contiene su configuración, que se describe a continuación.
Lo siguiente muestra un archivo de configuración típico
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
El dispositivo objetivo que estamos aislando tiene la dirección IP y MAC indicadas.
Solo se permiten paquetes IPv4 y ARP.
Los paquetes salientes deben cumplir las siguientes condiciones:
internal.target.macexternal.router.macinternal.target.ipallow, pero no en un rango blockexternal.router.ipLos paquetes entrantes deben cumplir las siguientes condiciones:
internal.target.macexternal.router.macinternal.target.ipallow, pero no en un rango blockexternal.router.ipNo hay garantía, por supuesto, pero este programa tiene una seguridad bastante buena.
La seguridad se basa en el hecho de que no hay una pila IP vinculada a los adaptadores.
Eso significa que la máquina infectada no puede tocar de ninguna manera la máquina del
cortafuegos, excepto según lo permitido dentro de la función is_allowed().
Esa función representa la mayor parte de la superficie de ataque de la máquina del cortafuegos.
Y, como se puede deducir al leer la función, contiene casi ninguna funcionalidad, lo que significa
que la superficie de ataque es realmente muy pequeña.
Hay algunos ataques teóricos que podrían ocurrir en la capa física, pero en su mayoría, no tenemos que preocuparnos por ellos.