Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Andrea Glöckner Geändert vor über 8 Jahren
1
1 Einführung von Linux basierten Ethernet Capturing Technologien von Simon Kallrath Betreuer: Prof. Dr. Volker Sander Dipl. Ing. Volker Kleinfeld
2
2 Linux Kernel fast komplett in C verfasst Entwickelt für x86 Architektur Hierarchisches Dateisystem Aufgaben: Hardware unabhängige Programmschnittstelle Komplexität vor Benutzer verbergen Speicherverwaltung, Prozessverwaltung u.v.m.
3
3 Die Netzwerkkarte NIC (Network Interface Card) Promiscuous Mode alle Pakete werden angenommen wird nicht von allen NIC sowie OS unterstützt bei W-Lan besser Monitor-Mode Schnittstelle zum Netzwerk eindeutig adressiert durch MAC
4
4 Netzwerkprotokolle Kommunikation im Netzwerk verschiedene Referenzmodelle jede Schicht hat eine Aufgabe Protokolle obliegen einer Schicht Das IPv4 – Protokoll Hardware unabhängige Adressierung Paketgröße beträgt etwa 1500 Byte verbindungslos (durch TCP verbindungsorientiert)
5
5 Netzwerkzugriff Shared Ethernet Hub Switched Ethernet Same Computer Monitor Port Machine in the middle Tap
6
6 Pakete im Linux-Flow Paket erreicht durch Netzwerk die NIC NIC prüft Zugehörigkeit Ziel MAC = MAC
7
7 Pakete im Linux-Flow Im Kernel Netzwerktreiber verschiebt Paket in Kernelspace Über Dynamic Memory Access Anlegen eines sk_buff pro Paket Kernelspace Netzwerktreiber sk_buff D M A
8
8 Struct sk_buff Zeiger für nächstes und vorhergehendes Struct Zeiger für zugewiesenes Socket wie auch NIC Zeitstempel Senden-Empfangen Nicht immer notwendig Zeiger auf verschiedene Header eines Paketes Daten sind immer verfügbar
9
9 sk_buff Pakete im Linux-Flow Im Kernel sk_buff Strukturen werden in eine Queue eingereiht Im Netzwerkstack Überlauf bei Paketflut (Paketverlust) sk_buff Queue (FIFO) Event
10
10 Pakete im Linux-Flow Event Standard Netzwerkkarte sendet Hardwareinterrupt Interrupthandler verständigt CPU CPU unterbricht Ausführung und startet Thread NAPI (New Application Programming Interface) Hardwareinterrupt = Registrierung an CPU Deaktivierung des Hardwareinterrupts Live-Lock wird vermieden CPU prüft auf neue Pakete nach einigen Zyklen erfolgt Freigabe der Ressource Interrupt wird wieder aktiv geschaltet Event
11
11 Pakete im Linux-Flow Nach dem Stack Pakete werden je nach Protokoll weitergereicht sk_buff IP TCP SMTP STREAM Sockets RAW DGRAM Anwendung Userspace Die jeweiligen Sockets arbeiten mit Zeigern Anwendung Userspace Anwendung
12
12 Der Berkeley Packet Filter Einbindung im Kernel Interpreter für Stack nahe Sprache auf Ethernetebene werden an Sockets angehangen kann mittels libpcap kompiliert werden Verwendet Hold und Store-Puffer = Hold = Store Userspace FreeBSD Mechanismus
13
13 PF_Packet und PF_Ring PF_Packet SOCK_DGRAM und SOCK_RAW verwendet Berkeley Packet Filter PF_Ring Erweiterung des PF_Packet Vorteile eines Ringbuffer fest allokierter Speicher PF_Ring plugins Ergänzung der Funktionen über Module Statistiken Filterregeln
14
14 Netfilter und Iptables Netfilter Framework Hooks für Iptables zwischen Netzwerk-Stack und Sockets Iptables Tabelle Elemente wie Liste mit Methodenaufrufen Sequentielle Abarbeitung Aufruf oder Sprung Return bei Aufruf Verbindungsüberwachung durch NAT
15
15 libpcap C/C++ Bibliothek Zugriff auf Sockets Erstellung von pcap Dateien Plattformübergreifend für Tcpdump entwickelt
16
16 Wireshark / Tshark GUI (Gimp Toolkit GTK+2) in Tshark nicht enthalten Statistiken sowie Filter und Suchfunktionen Live Capturing Vereinfachung der Filtersyntax Import und Export in verschiedenste Formate Dumpcap dient als Interface oder speichert Datenstrom als Datei eigene Bibliothek: Wiretap Epan: Etherreal Packet Analyzer
17
17 Tcpdump & Co Tcpdump Kommandozeilen-Tool libpcap Selektion und Überwachung Interface oder Datei Dumpcap gehört zu Wireshark Erzeugen von Pcap Dateien Snort Sniffer, Packet Logger und Network Intrusion Detection System Pakete abgreifen über Sniffer und Logger erweiterbar durch GUI unterstützt Tcpdump Format benötigt Libpcap/WinPcap Ngrep ähnlich Tcpdump reguläre Ausdrücke können benutzt werden kann Berkeley Packet Filter verwenden Netcat Datenversand und Abgriff über Sockets dient zur Simulation
18
18 Fazit Richtige Hardware Abgriffspunkt im Netzwerk Linux Kernel bietet viele Ansatzpunkte zum Filtern Viele fertige Angebote + Plattformübergreifend - Performance dadurch beeinträchtigt Verwendung der Möglichkeiten je nach Anwendungsfall spezifische Zusammenstellung
19
19 Ende Vielen Dank für Ihre Aufmerksamkeit Fragen ?
20
20 Quellen Rusty Russell (2000) “Linux Networking-concepts HOWTO” http://www.netfilter.org/documentation/HOWTO/de/n etworking-concepts-HOWTO.html Van Jacobson, Craig Leres and Steven McCanne (2009) “TCPDUMP Manual” http://www.tcpdump.org/tcpdump_man.html Gianluca Insolvibile (2001) “The Linux Socket Filter: Sniffing Bytes over the Network” http://www.linuxjournal.com/article/4659 Gianluca Insolvibile (2002) “Inside the Linux Packet Filter” http://www.linuxjournal.com/article/4852 Alan Cox (1996) “Network Buffers and Memory Management” http://www.linuxjournal.com/article/1312 Paul Gortmaker (2000) “Linux Ethernet-Howto“ http://www.faqs.org/docs/ethernet/Ethernet-HOWTO- 7.html Ulf Lamping (2010) “Wireshark Developer’s Guide for Wireshark 1.7“ http://www.wireshark.org/docs/wsdg_html_chunked/ ChWorksOverview.html M. Tim Jones (2007) “Anatomy of the Linux network stack“ http://www.ibm.com/developerworks/linux/library/l- linux-networking-stack/ Ntop.org (2011) “PF_Ring User Guide v.5.1.0” http://www.ntop.org/support/documentation/ Martin Roesch, Chris Green, Sourcfire (2011) “Snort User Manual 2.9.1” http://manual.snort.org/snort_manual.html Jordan Ritter (2006) “ngrep – network grep” http://ngrep.sourceforge.net/ Giovanni Giacobbi (2006) “The GNU Netcat project“ http://netcat.sourceforge.net/ OpenBSD (2011) “The OpenBSD Packet Filter” http://openbsd.org/faq/pf/filter.html A. Shankar (2004) “Linux Networking” http://geocitiessites.com/asimshankar/notes/linux -networking-napi.html#toc Filesystem Hierarchy Standard (2004) http://www.pathname.com/fhs/ (Abruf am 14.12.2011)
21
21 Information MAC = Media Access Control Verschachtelte Header RSS = Receive Side Scaling kann bei einem Multicoresystem ein Thread pro Core anlegen NAT = Network Address Translation Stack = Stapelspeicher; Zugriff mittels Push und Pop User space = Bereich im virtuellen Speicher für sonstige Applikationen Kernel space = Bereich im virtuellen Speicher nur für Kernel eigene Prozesse und Treiber
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.