
Este é um mini-firewall que isola completamente um dispositivo alvo da rede local.
Este é um mini-firewall que isola completamente um dispositivo alvo da rede local. Ele serve para permitir que máquinas infectadas tenham acesso à Internet sem, no entanto, colocar em risco a rede local.
Este projeto depende de libpcap e, naturalmente, de um compilador C.
No Debian, o seguinte deve funcionar:
# apt-get install git gcc make libpcap-dev
# git clone https://github.com/robertdavidgraham/isowall
# cd isowall
# make
Isso colocará o binário isowall no diretório local isowall/bin.
Isso também deve funcionar no Windows, Mac OS X, xBSD e praticamente em qualquer sistema operacional que suporte libpcap.
Primeiro, configure uma máquina com três interfaces de rede.
A primeira interface de rede (como eth0) será configurada normalmente, com uma pilha TCP/IP,
para que você possa acessá-la via SSH.
As outras duas interfaces de rede não devem ter pilha TCP/IP, nem endereço IP, nem nada. Este é o passo de configuração mais importante e o erro mais comum que você vai cometer. Por exemplo, o software de DHCP da máquina pode estar configurado para enviar automaticamente requisições DHCP nessas interfaces adicionais. Você precisa corrigir isso para que nada fique associado a essas interfaces.
Para executar, basta digitar:
# ./bin/isowall --internal eth1 --external eth2 -c xxxx.conf
onde xxxx.conf contém sua configuração, descrita abaixo.
O seguinte mostra um arquivo de configuração 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
O dispositivo alvo que estamos isolando possui o endereço IP e MAC indicados.
Apenas pacotes IPv4 e ARP são transmitidos.
Pacotes de saída devem atender às seguintes condições:
internal.target.macexternal.router.macinternal.target.ipallow, mas não em uma faixa blockexternal.router.ipPacotes de entrada devem atender às seguintes condições:
internal.target.macexternal.router.macinternal.target.ipallow, mas não em uma faixa blockexternal.router.ipNão há garantia, é claro, mas este programa tem uma segurança bastante boa.
A segurança se baseia no fato de que não há pilha IP associada aos adaptadores.
Isso significa que o alvo infectado não pode tocar a máquina do firewall de forma alguma,
exceto pelo que é permitido dentro da função is_allowed().
Essa função representa a maior parte da superfície de ataque da máquina do firewall.
E, como você pode perceber ao ler a função, ela contém quase nenhuma funcionalidade,
o que significa que a superfície de ataque é de fato muito pequena.
Existem alguns ataques teóricos que podem ocorrer na camada física, mas, na maioria dos casos, não precisamos nos preocupar com eles.