Segregar o tráfego da web entre a Internet e a LAN usando o Netfilter

1

Eu tenho um "appliance da web" corporativo que permite que os dispositivos portáteis se conectem a ele via wifi. Estou tentando descobrir como permitir que o appliance acesse a Internet (para que possa fazer o download de atualizações de fornecedor) sem permitir o acesso a recursos na LAN.

Eu tenho o dispositivo conectado a uma caixa do Linux para que eu possa usar o iptables para filtrar o tráfego na eth1 (veja a foto aqui: link ). Normalmente, eu teria uma terceira interface no firewall que me permitiria filtrar a saída por meio de interfaces de saída, mas desta vez não posso.

O problema é que existem muitas sub-redes diferentes em minha LAN e não quero ter que gerenciar regras de saída para cada sub-rede na LAN. Existe uma maneira de dizer ao Netfilter para permitir a entrada da porta 80/443 para o gateway da Internet, mesmo que a saída seja executada na mesma interface da LAN?

    
por Koko 30.04.2014 / 15:16

1 resposta

1

Se eu estou entendendo sua situação corretamente, você tem uma caixa Linux conectada à sua LAN, que NÃO está servindo como roteador. Essa caixa do Linux tem duas interfaces Ethernet, uma indo para a LAN e outra diretamente para o dispositivo WiFi.

Você não pode realmente filtrar o "IP do gateway" porque, em casos típicos, a única coisa que o IP do gateway usa é resolver via ARP qual é o endereço MAC do gateway. O pacote é enviado para esse endereço MAC, mas seu IP de destino real não é alterado dentro da LAN. Seu roteador está fazendo o trabalho do NAT; pegando o IP de origem de 10.0.0.1 e convertendo-o para o IP voltado para o público, e vice-versa.

Você também não pode filtrar com base no endereço MAC de destino, porque isso acontece após o iptables ter terminado a filtragem / roteamento / desconfiguração / etc. Isso acontece imediatamente antes da saída do pacote e acontece na camada de enlace de dados (Ethernet), que é menor que a camada de rede (o protocolo IP bruto).

Pode não ser a situação mais ideal, mas você pode querer procurar conjuntos de IPs. Este é um recurso do netfilter que permite definir uma série de endereços IP, ou intervalos, e depois combiná-los com uma única regra do iptables. Isso poupa o esforço de ter que mexer com o iptables, e também permite adicionar ou remover sub-redes da regra bloqueando o acesso à LAN sem tocar no iptables.

Um exemplo:

ipset create lan-block hash:net  # Create an ipset called 'lan-block' that will store network/mask pairs.
ipset add lan-block 192.168.1.0/24  # add 192.168.1.0-192.168.1.255 to this set
ipset add lan-block 172.16.0.0/16  # add 172.16.0.0-172.16.255.255 to this set
ipset add lan-block 10.0.0.0/15  # add 10.0.0.0-10.1.255.255 to this set
...
iptables -A FORWARD -m set --match-set lan-block src,dst -j DROP # block all packets whose source or destination is found in the set lan-block.

Veja as páginas do manual para ipset e iptables-extensions para mais informações.

Em algumas distros o ipset não está incluído, mas você deve conseguir obtê-lo nos repositórios da sua distribuição.

Espero que isso ajude.

    
por 09.05.2014 / 03:01