Existe uma cadeia adequada para iptables quando o eth está no modo Promisc?

1

Eu tenho uma máquina fron-end. Máquina has2 eth cards. Eu quero usar a fila do netfilter para fazer algumas verificações nos pacotes.

Eu defino eth assim: ifconfig eth0 0.0.0.0 promisc up ifconfig eth1 0.0.0.0 promisc up

Eu quero ter uma regra de iptable como esta (apenas exemplo): iptables -A INPUT -i eth0 -j LOG --log-prefix "pacote eth0"

mas o pacote não é passado através do iptables, pois não é alvo deste MAC. O modo Promisc não ajudou.

Eu vi que existe uma maneira de adicionar a cadeia de iptables para o PROMISC , mas precisa de compilação ... Existe alguma maneira mais simples de ter regra iptables quando o pacote não é alvo para este eth.

Atualmente eu ignoro isso criando uma ponte entre 2 eth e coloco regra no FORWARD, mas eu queria criar bridge.

    
por Avihai Marchiano 11.10.2012 / 18:12

2 respostas

1

Lembre-se de que em uma rede conectada com switches Ethernet, você não verá a maioria dos dados, mesmo se a placa de rede estiver no modo promíscuo, a menos que você tenha um switch gerenciado com o espelhamento de porta.

Uma maneira de conseguir o que você quer é usar uma ferramenta de envenenamento arp, como o Ettercap. Você deve poder então aplicar as regras do netfilter ou tcpdump as informações necessárias.

Editar - Mais detalhes a pedido do OP:

Da sua pergunta, parece que você deseja bisbilhotar o tráfego de rede e passá-lo pelo iptables.

Ao usar uma ponte, você pode conseguir isso sentando-se entre as máquinas interessantes e seu portal, fisicamente, mas parece que você gostaria de fazer de uma forma mais passiva, por isso você está tentando usar promíscuas modo nas NICs. Certo? (Se você não sabe, o modo promíscuo permite que você também veja quadros Ethernet que não foram endereçados à sua NIC)

O problema que você tem é que um switch Ethernet é projetado para que ele aprenda os endereços MAC em cada porta e use isso para "rotear" os quadros Ethernet para a porta correta com base em seu endereço MAC. Isso é para reduzir colisões associadas a hubs Ethernet (algo que você raramente vê nos dias de hoje). Portanto, você verá apenas quadros Ethernet destinados ou originados de sua NIC, incluindo quadros Ethernet de transmissão, como ARP, mas não tráfego estrangeiro. Isso é bom:)

A maioria dos switches gerenciados (não um desktop estúpido) permite que você designe um espelho de porta para que todos os quadros Ethernet sejam replicados em uma porta específica onde você pode anexar uma máquina em modo promíscuo e capturar quadros Ethernet "estrangeiros" usando tcpdump / Wireshark.

Isso ainda não permite que eles sejam capturados pelo iptables, no entanto. Então você precisa de uma maneira de agir como uma ponte Ethernet novamente entre os hosts interessantes e seu gateway, mas sem estar fisicamente no caminho. Digite Ettercap que é uma ferramenta de envenenamento arp. Ele engana seus hosts interessados (eo switch) que o endereço MAC da sua máquina agora possui o IP do gateway IP antigo enviando um "arp gratuito". As máquinas interessantes enviam involuntariamente todo o tráfego destinado à rota / padrão para a sua máquina. Sua máquina agora encaminhará pacotes através de sua pilha IP como se fosse o gateway.

Quando isso não funciona, é quando a "segurança da porta" é ativada no comutador, uma prática não incomum. Isso é para parar o envenenamento por arp bloqueando arpejos gratuitos em que um IP está se movendo de uma porta Ethernet para outra.

    
por 11.10.2012 / 20:54
0

Quanto a mim, você parece não ter uma compreensão clara de quais são suas necessidades. É por isso que você está tendo dificuldades para implementar isso.

A questão principal não é a "cadeia adequada" do iptables, mas como fazer o tráfego fluir para a caixa e como lidar com o kernel do sistema operacional ou o espaço do usuário.

O Bridge é uma maneira bastante natural, mas na verdade eu não vejo como FORWARD -chain, que por definição é para encaminhamento , ajuda na manipulação do tráfego comutado.

Você certamente tem que ter esse tráfego sendo encaminhado, e isso significa que o seu comp. deve ser um roteador para esse tráfego. Se você conseguir administrá-lo de maneira natural, vá em frente. Caso você não tenha essa possibilidade, eu diria que algo como o mecanismo proxy_arp provavelmente poderia ajudar.

UPD. : Eu estava relendo o LARTC recentemente e encontrei " Pseudo-pontes com Proxy-ARP "o que me fez perceber que minha sugestão era realmente adequada.

    
por 11.10.2012 / 21:20