Wie verwende ich eine Netzwerkschnittstelle schreibgeschützt?

Wie verwende ich eine Netzwerkschnittstelle schreibgeschützt?

Ich habe einen Switch in meinem Heimlabor, mit dem ich einige Experimente durchführen möchte, insbesondere im Hinblick auf VLANs und einige andere Protokolle, die ich besser verstehen möchte. Nun, dieser Switch (einTP-Link 5-Port-Switch mit teilweiser Verwaltung) ermöglicht Portspiegelung.

Diesen gespiegelten Datenverkehr möchte ich auf meinem Computer analysieren, wobei möglichst wenig „neuer“ Datenverkehr von der Überwachungsmaschine hinzukommt. Wie kann ich das erreichen?

Ich weiß bereits, dass man die Netzwerkkarte in den Promiscuous-Modus versetzen muss, um Pakete zu empfangen, die ursprünglich nicht für meinen PC bestimmt waren. Da dies normalerweise von Wireshark selbst erledigt wird, muss ich mir darüber keine Gedanken machen.

Ich wollte jedoch sicherstellen, dass so wenig „Lärm“ wie möglich auf dem Port entsteht, um wirklich nur den Verkehr zu betrachten, der auf den anderen Ports generiert wird. Ich habe bereits festgestelltdiese Antwortdas schlägt vor, alle laufenden Dienste (wie DHCP usw.) zu deaktivieren, was sinnvoll ist. Dies wird zwar das Rauschen erheblich reduzieren, wird aber wahrscheinlich nicht in der Lage sein, ARP-Auflösung oder andere kernelbasierte Netzwerkinteraktionen zu verhindern.

Ich habe auch gelernt, dass es Protokolle gibt, die speziell für diesen Zweck gedacht sind (wieSPAN von Cisco), aber mein Switch hat diese Fähigkeit nicht.

Meine Frage lautet also: Wie kann ich meine Netzwerkschnittstelle so schreibgeschützt wie möglich verwenden?

Antwort1

Der einfachste Weg, eine Schnittstelle unter Linux schreibgeschützt zu machen, ist die Anwendung eines EgresstcFilter drauf, der tropft alles.

Um einen Filter anzuwenden,erstklassige QDiscmuss vorhanden sein. DiePrioritätqdisc ist die einfachste klassenbasierte qdisc, die nur verwendet wird, um Filter auf der Schnittstelle verwenden zu können, und nicht für ihre eigenen Funktionen.

Zum Schluss die Schnittstelle einstelleneth1"schreibgeschützt":

tc qdisc add dev eth1 root prio
tc filter add dev eth1 matchall action drop

Dies blockiert ausgehenden Datenverkehr auf dieser Schnittstelle. Es blockiert sogar RAW-Sockets (die ansonsten von Firewalls nicht betroffen sind) und blockiert somit einen IPv4-DHCP-Client (der ansonsten trotz Firewall eine Adresse erhalten kann). Es gibt immer noch Möglichkeiten, dies zu umgehen, aber das kann nur sehr bewusst geschehen. Hier sind zwei, die ich kenne:

Um die Schnittstelle in ihren ursprünglichen Zustand zurückzusetzen, entfernen Sie einfach die Qdisc:

tc qdisc del dev eth1 root

Anmerkungen:

  1. Ich würde davon ausgehen, dass ein Switch mit einem Port im Spiegelungsmodus diesen Port wahrscheinlich bereits im schreibgeschützten Modus eingestellt hat.

    Das muss man testen. Und wenn das zutrifft, ist die Verwendung des obigen Filters oder des Punkts 2 unten hinfällig.

  2. Eine Schnittstelle, die aktiv ist und auf die keine zusätzlichen Einstellungen angewendet werden, kann weiterhin Datenverkehr austauschen.

    Ohne den vorherigen Filter kann sogar eine nicht konfigurierte, aber aktive Schnittstelle Datenverkehr hinterlassen. Es gibt mindestens diese beiden Fälle:

    • Automatische IPv6-Konfiguration

      verwendensysctl -w net.ipv6.conf.eth1.disable_ipv6=1

    • Wenn ARP nicht deaktiviert ist (mit ip link set eth1 arp off)

      Dieser Fall ist derselbe wie der allgemeinere Fall des Informationslecks, bei dem ein System in einem LAN prüfen kann, ob einige Systeme auch andere Netzwerke (einschließlich virtueller) mit bekannten Adressen verwenden: Standardmäßig beantwortet unter Linux eine Schnittstelle ARP-Anfragen fürbeliebigandere Adresse aufbeliebigandere Schnittstelle.Das ist Teilder SchwachenHostmodell.

      Wenn das System des OP beispielsweise livbirt QEMU/KVM mit Standardeinstellungen ausführt, wird 192.168.122.1/24 zugewiesen anvirbr0, dann wird ein anderes Linux-System, das nur mit einer nicht konfigurierten UP-Schnittstelle verbunden ist, weiterhin ARP-Antworten darüber erhalten, wenn Folgendes ausgeführt wird:

      arping -I eth0 192.168.122.1
      

      Es spielt keine Rolle, ob das Prüfsystem eine Route zu 192.168.122.1 hat. Es geht um ARP (und einen Befehl, der sich nicht um Routen kümmert). Dasselbe gilt für LXC und 10.0.3.1 usw.

verwandte Informationen