Porta mirror tramite iptables


11

Ho un server root Linux (Debian 7.5) dedicato, con un numero di guest impostato. Gli ospiti sono istanze KVM e ottengono l'accesso alla rete tramite bridge-utils (NAT, IP interni, utilizzano l'host come gateway).

Ad esempio, un KVM è il mio ospite WebServer e diventa accessibile tramite l'IP host in questo modo:

    iptables -t nat -I PREROUTING -p tcp -d 148.251.Y.Z 
--dport 80 -j DNAT --to-destination  192.168.100.X:80 

Faccio lo stesso con altri servizi, mantenendoli autonomi, NATed e isolati.

Ma un ospite dovrebbe essere un monitor di rete e deve eseguire l'ispezione del traffico di rete (come un IDS). Di solito, in una configurazione non virtuale, utilizzerei le porte VACL o SPAN per rispecchiare il traffico. Naturalmente, all'interno di questo host, non posso farlo ( facilmente , perché non voglio usare approcci di commutazione virtuale complessi).

  1. Posso ottenere un mirroring della porta usando iptables e reindirizzare tutto il traffico in ingresso e in uscita a un guest KVM? Tutti gli ospiti hanno un'interfaccia dedicata, come vnet1.
  2. È possibile inoltrare selettivamente il traffico, in base al protocollo (come una regola di inoltro VACL, che acquisisce solo HTTP)?
  3. gli ospiti hanno bisogno di una specifica configurazione dell'interfaccia, quando devo mantenerla vnet1come interfaccia di gestione (con un IP)?

Sarei felice per un punto nella giusta direzione:

iptables         1.4.14-3.1
linux            3.2.55
bridge-utils     1.5-6

Molte grazie :)

Risposte:


14

che dire di anteporre il modulo di pre-routing del server root Mangle regole della tabella con qualcosa del tipo:

iptables -I PREROUTING -t mangle -j ROUTE --gw 192.168.200.1 --tee

e quindi anteporre le regole della tabella Mangle del modulo post-Routing con qualcosa del genere

iptables -I POSTROUTING -t mangle -j ROUTE --gw 192.168.200.1 --tee 

dove 192.168.200.1 è il monitor di rete.

Queste regole rispecchieranno tutto il traffico in entrata e in uscita che lo inoltra a 192.168.200.1

modificare:

mangle table specific
  -j ROUTE            (explicitly route packets, valid at PREROUTING)
      options:
      --iface <iface_name>
      --ifindex <iface_idx> 

ma puoi anche usare qualcosa di simile

iptables -I PREROUTING –t mangle –i eth0 –j TEE –gateway 192.168.200.1

e

iptables -I POSTROUTING –t mangle –j TEE –gateway 192.168.200.1

dove TEEora è un obiettivo che a PREROUTINGprende altre opzioni come ad esempio -i, -p, ecc


NB per i lettori SE che utilizzano versioni più recenti di quelle iptablesche non hanno più l' ROUTEobiettivo, vedere la mia risposta su unix.stackexchange.com/a/174619/31228 .
Jonathan Ben-Avraham,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.