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: 29.671 ]

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


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.

Página anterior     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

Conheça o firewall OpenGFW, uma implementação do (Great Firewall of China).

Criando cluster com o PFSense

Conexões redundantes e com balanceamento de carga - Ubuntu 9.04

Balanceamento de carga entre 2 placas de rede

Fail2ban - Bloqueio de Peer-to-Peer (Ares, uTorrent) e Proxies (UltraSurf e Tor)

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts