Firewall invisível com Proxy ARP

Como construir um firewall com apenas um endereço IP na mesma sub-rede, desaparecer com esta dos demais computadores e não criar um possível obstáculo no caso de uma falha do mesmo.

[ Hits: 27.362 ]

Por: Paulo Mauricio da Conceição Jr. RHCI, RHCE, RHCVA em 13/06/2008


Introdução



Suponha que você tenha um pequeno escritório onde possua algumas máquinas com sistemas operacionais Linux ou Windows, que estão conectadas diretamente a Internet usando um modem xDSL/Cabo ou roteador.

Você quer permitir o acesso a um servidor Web em sua rede e também quer implementar algumas regras de filtragem que você já aprendeu anteriormente.

Suponha que seu ISP lhe concedeu um range de endereços para conexão a Internet seguindo como exemplo o range: x.y.z.32/27.

Você tem uma máquina em sua rede usando o endereço x.y.z.35 como seu gateway que permite que cada máquina dentro da rede interna envie e receba pacotes para, e da Internet. Agora você tem duas opções para construir seu firewall.

1. Implementar um Firewall entre sua rede e a Internet (um lugar típico para instalar um Firewall).

2. Usar um Firewall transparente baseado em Proxy-ARP.

Neste caso, o Firewall é um potencial obstáculo para a conexão a Internet de sua empresa. Se a máquina Firewall falhar, você pode simplesmente desconectar o cabo conectado à interface eth0 no Firewall e reconectá-la ao Switch ou Hub que está no lado da interface eth1. Feito isto, você terá restaurado novamente a sua conexão com a Internet. Talvez você tenha que atualizar a sua cache ARP ou reiniciar algumas de suas máquinas, mas mesmo assim você terá restabelecido sua conexão em um prazo curto de tempo.

O objetivo deste tipo de configuração é o seguinte: a máquina Firewall Linux possui duas interfaces: eth0 e eth1, que estão configuradas com o mesmo endereço IP (x.y.z.50) e tem o ip_forwarding e proxy_arp habilitados. Isto permite que ela veja todos os pacotes que são originados ou que são recebidos para sua LAN da Internet através de seu provedor. Entretanto, você pode usar a filtragem de pacotes normalmente, assim como um sistema de firewall tradicional.

A única vantagem deste tipo de firewall é que se o mesmo se tornar inoperante (fora de operação), ou outras razões não abordadas aqui, você pode facilmente recuperar sua conectividade em um prazo muito menor de tempo do que teria em uma configuração tradicional de firewall, onde você deve possuir um endereço IP privado para o lado da sua LAN, outro endereço público para o lado da WAN e todos seus hosts apontando para o firewall como seu gateway para a Internet.

Nesta configuração abordada os hosts nem mesmo sabem que seus pacotes estão sendo scaneados e roteados por este tipo de man-in-the-middle de firewall baseado em proxy-arp.

Bom, assumindo que você tem um sistema Linux instalado com duas placas de rede (eth0, eth1), nas próximas páginas descreverei como construir este firewall.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação e configuração
   3. Conclusão
Outros artigos deste autor

Docker - Da virtualização a aplicações distribuídas

Leitura recomendada

Firewall e NAT em FreeBSD com controle de banda e redirecionamento de portas e IPs

PFSense Firewall com Squid e SquidGuard

Firewall rápido e seguro com iptables

Abrindo e fechando portas com o BlockOutTraffic

Utilizando a ferramenta Iptstate

  
Comentários
[1] Comentário enviado por elgio em 13/06/2008 - 13:42h

Desculpa, mas...

Porque não fazer firewall transparente pela técnica de Bridge? É ainda mais transparente pois eth0 e eth1 nem precisam ter ips (terão para possibilitar o login e gerenciamento).

Assim tu coloca ela entre a rede e o verdadeiro roteador, ou entre a saída do roteador e a Internet.

Ela atua como se fosse um Switch (bridge), apenas repassando quadros de um dominio de colisão para outro (nem o MAC address de suas placas sao expostos), porém podem filtrar (sempre com DROP, pois se ela não tiver IP como responderia com um ICMP?)

Pra mim isto sim é firewall transparente.

Pacote bridge-utils:

ifconfig eth0 down
ifconfig eth1 up

brctl addbr br0

brctl addif br0 eth0
brctl addif br0 eth1

ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0

# Opcionalemente, colocando um IP para poder se logar
#ifconfig br0 10.1.0.4
#route add default gw 10.1.0.1

Depois, segue o mesmo de sempre no iptables, com regras na chain FORWARD da tabela filter!

[2] Comentário enviado por pmcj21 em 15/06/2008 - 22:30h

?comentario=Resposta ao Elgio.

Entendo perfeitamente sua questão, porém, minha intenção é trazer opções a comunidade, até porque a teoria que compreendo sobre software livre é a valorização do profissional e a divulgação do conhecimento, você realmente parece entender do assunto, mas acho melhor divulgar meu conhecimento baseado em alternativas, para que todos entendam tanto o roteamento de pacotes quanto o repasse de quadros, porém valeu pela colocação. Espero em breve criar artigos citando todas as opções possíveis, valeu, fui...

[3] Comentário enviado por removido em 18/06/2008 - 14:54h

muito bom, mas ainda não testei.
mas achei otimo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts