Erfassen eines Pakets auf der MAC-Ebene

Erfassen eines Pakets auf der MAC-Ebene

Ich möchte eine Sicherheitslösung ähnlich wie MACsec implementieren, die ein Paket in seiner Gesamtheit (einschließlich des MAC-Headers) an einem Zwischennetzwerkknoten (z. B. einem Linux-basierten Switch) erfasst, einige Verarbeitungsvorgänge am Paket durchführt und es dann an den Zwischenknoten sendet.

Könnten Sie mir bitte geeignete Ressourcen nennen, die mir dabei helfen können? Ich suche derzeit nach Lösungen, die eine Änderung des NIC-Treibers erfordern. Gibt es eine einfachere Lösung als diese? Wie implementieren andere MACsec?

Bitte beachten Sie, dass es mir nicht darum geht, einfach ein Paket mit PCAP und ähnlichen Methoden abzufangen. Ich möchte ein Paket abfangen können, bevor es einen Zwischenknoten passiert, es manipulieren und an den beabsichtigten Empfänger senden.

Danke

Antwort1

Wenn Sie das Paket analysieren möchten, während es der Linux-Kernel empfängt, müssen Sie einen Kernel-Treiber schreiben und möglicherweise sogar den Kernel selbst ändern. Wenn die Schnittstelle Daten empfängt, beginnt die Verarbeitung sofort. Alles, was für den Empfang der nächsten Schicht registriert ist, wird von seinem Handler aufgerufen. Da der MAC-Header nicht sehr viel Verarbeitung erfordert, ist der IP-Schicht-Handler der erste, der mit der Durchführung eines Großteils der Verarbeitung beginnt.

Wenn Sie den MAC-Header manipulieren und Ihre eigenen Einstellungen vornehmen möchten, müssen Sie ihn direkt nach dem Empfang des MAC-Headers und vor der IP-Verarbeitung einfügen. Oder Sie könnten einen Treiber als virtuelle Netzwerkkarte schreiben. Auf diese Weise könnten Sie die Daten nach Belieben verarbeiten. Die virtuelle Netzwerkkarte würde alle Daten genauso sehen wie die echte Netzwerkkarte. Dies wäre wahrscheinlich die beste Lösung, da Sie nicht am Kernel herumfummeln und ihn nur für Ihr eigenes Projekt neu erstellen möchten.

Meine Antwort hierbietet mehrere gute Links zum Erlernen von Linux-Kernel-Networking. Ich würde auch empfehlen, sich „Linux Kernel Networking: Implementation and Theory“ von Rami Rosen zu holen. Eine großartige Quelle für einen detaillierten Einblick in den Netzwerk-Stack.

MACSec wird irgendwann im Kernel implementiert. IPSec beispielsweise behält seine Sicherheitsrichtlinien im Kernel, während ein Userland-Daemon die Tunnelverbindungen verfolgt. Ich glaube also leider, dass Sie ein gewisses Maß an Kernelcode schreiben müssen, um die gewünschten Aktionen auszuführen.

Antwort2

Vor einiger Zeit wollte ich ein wenig mit Datenpaketen wie Layer 2, Layer 3 oder höheren Layern spielen. Ich habe ein nettes Tool gefunden, das auf Python basiert und das macht. Dieses Tool ruft Scapy.
Sie können Pakete erfassen und bearbeiten. Oder Sie können einen paketbasierten Filter für Ihren Bedarf erstellen.

verwandte Informationen