Firewall invisível com Proxy ARP
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.
Instalação e configuração
Os pacotes necessários para instalação deste firewall basicamente já vem instalados por padrão na maioria das distribuições, embora eu relacione logo abaixo:
Iptables;
Iproute2.
No Debian, basta executar o comando:
# apt-get install iptables iproute2
No Fedora, execute este:
# yum install iptables iproute
Assegure-se que em ambos os arquivos de configuração você tenha colocado o mesmo endereço IP, mesmo endereço de rede e a mesma sub-rede.
No Debian, os arquivos de configuração residem em:
/etc/network/interfaces
No Fedora, eles residem neste caminho:
/etc/sysconfig/network-scripts/ifcfg-eth0
e
/etc/sysconfig/network-scripts/ifcfg-eth1;
Adicione as seguintes linhas nos scripts de inicialização de seu sistema para habilitar as características de proxy-arp, para ambas interfaces de rede de seu Firewall:
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
ou:
/sbin/sysctl net.ipv4.conf.eth0.proxy_arp=1
/sbin/sysctl net.ipv4.conf.eth1.proxy_arp=1
No Debian:
Insira as linhas anteriormente apresentadas no arquivo /etc/rc2.d/rc.local ou crie seu próprio script, tendo cuidado para que este não tenha prioridade de execução (Ex.: use este padrão S99script);
No Fedora:
Idem ao anterior, pois eles usam o mesmo padrão SysVInit.
Abaixo das linhas atualmente inseridas adicione também esta para habilitar o IP Forwarding entre as interfaces:
echo 1 > /proc/sys/net/ipv4/conf/all/ip_forward
ou
/sbin/sysctl net.ipv4.conf.all.forwarding=1
Adicione estas linhas abaixo no mesmo arquivo ainda aberto, não esquecendo de substituir os endereços fictícios x.y.z.32/27 e x.y.z.35 com seus endereços de rede apropriados:
/sbin/ip route del x.y.z.32/27 dev eth0
/sbin/ip route add default gw x.y.z.35 dev eth0
/sbin/ip route add x.y.z.32/27 dev eth1
Isto diz ao kernel que pacotes direcionados para o endereço x.y.z.35 (que é o endereço do router) são roteados na interface eth0 e o resto da rede está disponível na interface eth1. Desde o momento que você tenha habilitado o IP Forwarding entre as interfaces, qualquer pacote de origem externa destinado a um host interno da sua LAN serão vistos pela eth0 e roteados para eth1.
Neste ponto, você pode aguardar a cache ARP expirar ou pode ainda reiniciar seu roteador. Se você der uma olhada na cache ARP no servidor, ele irá mostrar o endereço mac do roteador como se fosse o endereço mac da interface eth1 no seu Firewall. Depois de ter completado estas etapas, você pode adicionar suas regras de firewall.
Este tipo de configuração de firewall é bem aplicada também quando a necessidade é de não ter que dividir sua sub-rede para que você possa inserir seu Firewall, um exemplo coloco a seguir:
Sua rede tem como endereço 192.168.1.0/24, o endereço de gateway (roteador) é apresentado como 192.168.1.254, para instalar um Firewall tradicional nesta rede você precisa criar uma outra sub-rede, para que os pacotes possam ser roteados de uma sub-rede a outra, como diz as regras de roteamento, com o Firewall baseado em proxy-arp, você somente vai utilizar um endereço de host, evitando assim diversos problemas com uma possível falha de serviço, neste caso você teria somente que remover o cabo conectado a interface eth0 e conectá-lo a Switch ou Hub da sua rede.
Fonte: Viva o Linux
Did you enjoy this post? Why not leave a comment below and continue the conversation, or subscribe to my feed and get articles like this delivered automatically to your feed reader.



Comments
Nenhum comentário ainda.
Deixe um comentário