Redirecionando o tráfego com base em portas (iptables)

2

Atualmente estou trabalhando em um aplicativo que é capaz de conduzir envenenamento por ARP para se tornar o homem no meio e fazer alguma filtragem inteligente. Vou explicar o problema em detalhes, em etapas, para que vocês saibam o que está acontecendo.

Eu tenho 4 hosts, ou seja:

  • A - 192.168.1.1
  • B - 192.168.1.2
  • C - 192.168.1.3
  • D - 192.168.1.4

O host A é o homem no meio para que todo o tráfego dentro da rede seja redirecionado para ele.

Digamos que o Host B deseje fazer ping no Host C, mas como o host A é o MITM, o ping será redirecionado para o host A. Meu aplicativo no host A deve ser capaz de encaminhar o pacote de ping para o host C ).

No entanto, o aplicativo pode decidir determinados pacotes que deseja encaminhar.

Por exemplo, se o Host B quiser FTP para Host C desta vez, eu gostaria que o host A mangle com o endereço IP de destino para os pacotes, de modo que os pacotes do host B realmente fossem para o host D (apenas um exemplo, a conexão ftp pode não funcionar, ok)

A idéia básica é que o aplicativo é capaz de redirecionar o tráfego dependendo do protocolo.

É aí que entra o problema, não tenho certeza de como posso fazer isso. Eu li no iptables e parece que (me corrija se eu estiver errado), iptables é capaz de mangle com o endereço de destino dos pacotes com funções de pré-roteamento.

Eu também fiz algumas pesquisas em um módulo específico chamado libnetfilter_queue (nfqueue) que parece ser capaz de mangle com pacotes também, embora eu não saiba exatamente como.

Alguém pode me aconselhar sobre qual é a abordagem correta que devo seguir? Se possível, você pode fornecer alguns exemplos que serão capazes de resolver o problema no cenário acima?

    
por Ng Zi Kai 19.07.2011 / 16:29

1 resposta

2

se é verdade o que você diz e todo o tráfego está passando pelo host A, então vc pode usar o iptables no host A para redirecionar o tráfego para outros hosts então pretendidos.

f.e .: Reencaminhar tráfego de D - > C na porta 80 para B

iptables -t NAT -A PREROUTING -p tcp --dport 80 -s 192.168.1.4 -d 192.168.1.3 -j DNAT --to-destination 192.168.1.2:80 

como para o seu exemplo (o FTP de B para C)

iptables -t NAT -A PREROUTING -p tcp --dport 21 -s 192.168.1.2 -d 192.168.1.3 -j DNAT --to-destinatin 192.168.1.4:21

Reencaminhamento do tráfego ALL proveniente de B destinado a C para D:

iptables -t NAT -A PREROUTING -p tcp -s 192.168.1.2 -d 192.168.1.3 -j DNAT --to-destination 192.168.1.4

se mais exemplos forem necessários, posso inventar um pouco mais

    
por 19.07.2011 / 16:36