Como bloquear o tráfego de rede no gateway do Ubuntu via arp table

0

Eu tenho uma rede com 80 PCs e um Ubuntu 12.04 como GW. Por motivos de segurança, quero limitar os computadores conectados a essa rede usando uma tabela pré-compilada por ARP. Em outras palavras, eu quero uma ferramenta que permita o acesso à internet somente se o par ARP --> [IP-MAC] estiver pré-configurado e ignorar todas as outras combinações. Com essa técnica, desejo impedir que os usuários alterem os destinatários de IP atribuídos a partir da reserva de DHCP e que acessem redes ilimitadas e escape from iptable de regras. Obrigado

    
por emirjonb 13.11.2014 / 11:42

3 respostas

0

Eu testei e parece funcionar

iptables -A FORWARD -s 192.168.1.1 -m mac ! --mac-source 00:01:02:03:04:05 -j DROP

Soltar se os pacotes vieram desse ip com um MAC diferente, conforme inserido na regra O único problema é que eu tenho que adicionar manualmente todos os ip que eu tenho que "proteger". Por enquanto eu tenho apenas 2

*A illusion of protect since exist MAC spoofing de qualquer forma, isso desencoraja os usuários a tentar

    
por 22.11.2014 / 11:07
2

O que você realmente procura é o 802.1x Network Access Control. Isso é executado no RADIUS e requer autenticação do cliente antes do acesso à rede. Existem várias soluções baseadas em Linux, incluindo:

Para os clientes:

Para o servidor NAC:

Supondo que você não tenha comutadores gerenciados capazes de executar VLANs, você pode querer ir com o PacketFence no modo in-line, descrito na documentação. Isso usa ipset para modificar regras de firewall para permitir tráfego, mas exige separações de topologia específicas (DNS em um segmento separado dos hosts). Os switches que o PacketFence pode usar estão listados aqui

CORREÇÃO !: Existe outra maneira interna de gerenciar a arp-table no Linux, veja man 5 ethers . Você adiciona entradas na forma de ethernet ip a /etc/ethers e, em seguida, executa arp -f para atualizar a tabela com base nisso. Veja man arp para detalhes, e link para um tutorial mais detalhado.

Para responder à sua pergunta específica sobre as tabelas arp, crie um arquivo static-arp.conf contaning entries, como:

10.0.0.6 00:0c:29:c0:91:bf
10.0.0.7 00:0c:29:c0:92:bf
10.0.0.8 00:0c:29:c0:93:bf
10.0.0.9 00:0c:29:c0:94:bf

Em seguida, execute:

while read -u 10 arpentry ; do arp -s $arpentry ; done 10<static-arp.conf

Por alguma razão for I in cat static-arp.conf não funcionou, e eu tive que mudar para a leitura -u para configurar um descritor de arquivo, não sei por que ... mas isso adicionou as entradas conforme listado. Você pode então distribuir esse static-arp.conf como quiser, via nfs, git, rsync, etc.

Os vlans provavelmente seriam uma ideia melhor no entanto. Informações no uso do linux-pure vlan estão localizadas aqui .

    
por 16.11.2014 / 06:23
1

Você está procurando por algo simples como este?

iptables -A FORWARD -m mac --mac-source 00:01:11:11:11:11 -j ACCEPT

Dessa forma, você pode definir apenas endereços mac permitidos para acessar a Internet (você também pode incluir o endereço IP e provavelmente precisará de um script para mantê-lo). Outras soluções já foram discutidas nos comentários.

Editar: Não consegui resolver a negação (não funcionou), mas você pode fazer isso:

iptables -P FORWARD DROP

iptables -A FORWARD -s 192.168.1.1 -m mac --mac-source 00:01:02:03:04:05 -j ACCEPT

"Esta regra descarta todo o pacote que veio de 192.168.1.1 e tem o MAC diferente daquele que foi impostado na regra" Eu acho que isso é o que você pediu.

Observe algumas alterações - a falta "!" e "-p tcp" - que soltaria apenas pacotes tcp.

Nota 2: Lembre-se de que o endereço IP mencionado com um MAC diferente ainda seria capaz de, por exemplo, executar ping no roteador. Para evitar que você precise fazer o mesmo na cadeia INPUT.

    
por 13.11.2014 / 17:08