Port miroir via iptables


11

J'ai un serveur racine Linux (Debian 7.5) dédié, avec un certain nombre d'invités installés. Les invités sont des instances KVM et obtiennent un accès réseau via des passerelles (NAT, IP internes, utilisent l'hôte comme passerelle).

Par exemple, un KVM est mon invité WebServer, et il est accessible via l'adresse IP de l'hôte de cette façon:

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

Je fais de même avec d'autres services, en les maintenant autonomes, NAT et isolés.

Mais un invité est censé être un moniteur réseau et doit effectuer une inspection du trafic réseau (comme un IDS). Habituellement, dans une configuration non virtuelle, j'utiliserais des ports VACL ou SPAN pour refléter le trafic. Bien sûr, à l'intérieur de cet hôte, je ne peux pas faire cela ( facilement , car je ne veux pas utiliser d'approches de commutation virtuelle complexes).

  1. Puis-je obtenir un miroir de port à l'aide d'iptables et rediriger tout le trafic d'entrée et de sortie vers un invité KVM? Tous les invités ont une interface dédiée, comme vnet1.
  2. Est-il possible de transmettre le trafic de manière sélective, sur la base du protocole (comme une règle de transfert VACL, qui ne prend que HTTP)?
  3. les invités ont-ils besoin d'une configuration d'interface spécifique, quand je dois garder vnet1une interface de gestion (avec une IP)?

Je serais heureux pour un point dans la bonne direction:

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

Merci beaucoup :)

Réponses:


14

Qu'en est-il de l'ajout des règles de table Mangle du module de pré-routage du serveur racine par quelque chose comme:

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

puis ajouter les règles de table Mangle du module post-routage par quelque chose comme

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

où 192.168.200.1 est le moniteur réseau.

Ces règles reflèteront tout le trafic entrant et sortant le transmettant à 192.168.200.1

Éditer:

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

mais vous pouvez également utiliser quelque chose comme

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

et

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

TEEest maintenant une cible à PREROUTINGse plus d' options comme par exemple -i, -petc.


Les lecteurs NB à SE utilisant des versions plus récentes de iptablesceux-ci n'ont plus la ROUTEcible, voir ma réponse sur unix.stackexchange.com/a/174619/31228 .
Jonathan Ben-Avraham
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.