www.wikidata.de-de.nina.az
Netfilter ist ein Softwareprojekt das unter anderem Paketfilter Network Address Translation und weitere fur Firewalls relevante Werkzeuge fur den Linux Kernel bereitstellt Ausserdem bezeichnet Netfilter die Softwareschicht innerhalb des Linux Kernels die beim Empfang und Senden von Netzwerkpaketen aufgerufen wird Diese leitet lediglich die Ausfuhrung von weiteren Modulen wie eben Paketfilter ein 1 Diese Module konnen dann Pakete abfangen und manipulieren NetfilterBasisdatenMaintainer Netfilter ProjektBetriebssystem LinuxProgrammiersprache CKategorie Linux Kernel Modul PaketfilterNATFirewallLizenz GNU General Public Licensehttp www netfilter org Beziehung einiger Netfilter Komponenten zueinanderInhaltsverzeichnis 1 Geschichte 2 iptables 3 Paket Defragmentation 4 Connection Tracking 4 1 Helfer Module 5 Network Address Translation 5 1 NAT Helfermodule 6 nftables 7 Weitere Netfilter Projekte 7 1 ulogd 7 2 ipset 8 Weblinks 9 EinzelnachweiseGeschichte BearbeitenDas Netfilter iptables Projekt wurde 1998 von Rusty Russell ins Leben gerufen der ausserdem der Autor des Vorgangers ipchains war Mit Wachstum des Projektes grundete er 1999 das Netfilter Coreteam oder einfach Coreteam Hauptentwicklerteam Die dort produzierte Software von hier an Netfilter genannt ist unter der GNU General Public License GPL lizenziert und wurde im Marz 2000 in den Linux Kernel Version 2 3 integriert Im August 2003 wurde Harald Welte Vorsitzender des Kernteams Im April 2004 nach intensiver Suche seitens des Netfilter Projekts in kommerziellen Produkten die die Software vertrieben ohne sich an die Lizenzbedingungen zu halten erreichte Welte in Deutschland eine historische gerichtliche Verfugung gegen Sitecom Deutschland 2 Im September 2007 wurde Patrick McHardy der die Entwicklung bereits in den vergangenen Jahren leitete neuer Vorsitzender des Kernteams Seit 2013 ist Pablo Neira Ayuso der Vorsitzende des Kernteams 3 Im Juni 2016 wurde Patrick McHardy wegen umstrittener Klagen gegen Verletzungen der GPL aus dem Kernteam ausgeschlossen 3 iptables vorausgehend waren die damals pradominanten Firewallpakete ipchains in Linux 2 2 und ipfwadm in Linux 2 0 welches Ahnlichkeiten zu BSDs ipfw besass Sowohl ipchains als auch ipfwadm griffen direkt in den Netzwerk Code ein um Pakete zu manipulieren da es bis dato noch keine generische Schnittstelle wie Netfilter gab Wahrend ipchains und ipfwadm Paketfilterung und NAT kombinierten insbesondere drei gewisse Sorten von NAT Masqueradieren Portweiterleitung und Umleitung sind Paketoperationen in Netfilter in kleinere Module aufgeteilt siehe mehr dazu unten Jede Operation hangt sich bei Netfilter an unterschiedlichen Position ein um Pakete zu bearbeiten Die Connection Tracking und NAT Subsysteme sind bei Netfilter genereller gehalten und machtiger als die abgestumpften Versionen bei ipchains und ipfwadm iptables Bearbeiten Hauptartikel iptables Die Kernelmodule ip tables ip6 tables arp tables Unterstriche gehoren zum Namen und ebtables stellen eine Hauptkomponente und somit Nutzer des Netfilter Hooksystems dar Sie stellen ein tabellen basiertes System zur Definition von Firewallregeln auf die die Filterung oder Manipulation ermoglichen Die Tabellen konnen mittels der Userspaceprogramme iptables ip6tables arptables bzw ebtables administriert werden Jede Tabelle ist genaugenommen ein eigener Hook und naturlich wurde jede auch fur einen gewissen Zweck eingefuhrt Netfilter betrifft dies insofern als Tabellen in einer gewissen Reihenfolge abgearbeitet werden Ansonsten werden alle Tabellen an die gleiche Unterfunktion weitergegeben die dann uber jede Regel lauft und diese ausfuhrt Ketten in dieser Hinsicht entsprechen von wo aus der Netfilter Stapel aufgerufen wurde also z B Paketempfang PREROUTING lokal zugestellt INPUT weitergeleitet FORWARD lokal ausgegeben OUTPUT und Paketversand POSTROUTING Netfilter Module die keine Tabellen bereitstellen s u inspizieren ggf den Ursprung um somit zu entscheiden welche Operationen durchgefuhrt werden sollen Module iptable raw registriert wenn es geladen wird einen Hook der vor jedem anderen Netfilter Hook aufgerufen wird Es macht daruber hinaus eine Tabelle namens raw verfugbar in der Pakete gefiltert werden konnen bevor sie speicherintensivere Operationen wie Connection Tracking erreichen iptable mangle registriert einen Hook und eine Tabelle namens mangle die nach Connection Tracking aber noch vor weiteren Tabellen durchlaufen wird sodass Manipulationen an Paketen durchgefuhrt werden konnen die spatere Entscheidungen wie NAT oder den Paketfilter beeinflussen konnten iptable nat registriert zwei Hooks DNAT basierte Transformationen werden vor dem Filter Hook abgearbeitet SNAT basierte Transformationen danach Die nat Tabelle die im Zuge dessen verfugbar wird ist lediglich eine Konfigurationsdatenbank die nur fur NAT Abbildungen gedacht ist nicht fur Paketfilterung iptable filter registriert die filter Tabelle die fur allgemeine Paketfilterung eingesetzt wird Paket Defragmentation BearbeitenSiehe auch Datagrammfragmentierung im Artikel IPv4 Das nf defrag ipv4 Modul wird zur Defragmentierung von IPv4 Paketen eingesetzt bevor Connection Tracking im nf conntrack ipv4 Modul diese erhalt Dieser Schritt ist notwendig fur die Connection Tracking und NAT Helfer Module sozusagen mini ALGs innerhalb des Kernels die den Datenstrom nicht fragmentubergreifend inspizieren und daher eher mit fragmentfreien Paketen arbeiten Die Defragmentierung von IPv6 Paketen ist kein Extramodul sondern ist in nf conntrack ipv6 integriert Connection Tracking BearbeitenSiehe auch Stateful Packet Inspection Eine der wichtigen auf Netfilter aufbauenden Funktionen ist Connection Tracking lit Verbindungsverfolgung Verbindungsuberwachung 4 Connection Tracking ermoglicht es dem Kernel die Ubersicht uber alle logischen Netzwerkverbindungen oder Sitzungen zu behalten und somit alle Pakete die eine Verbindung ausmachen miteinander in Bezug zu stellen NAT ist auf diese Information angewiesen um alle verwandten Pakete in gleicher Weise zu transformieren Auch iptables kann diese Information nutzen um Stateful Packet Inspection SPI bereitzustellen Der Zustand einer Netfilter Verbindung ist jedoch unabhangig von jeglichen Zustanden eines potentiellen Transportprotokolls wie TCP oder SCTP Ein Grund dafur ist dass beim blossen Weiterleiten von Paketen also keiner lokalen Zustellung der eigentliche TCP Abarbeitungsprozess gar nicht zum Zuge kommen muss Selbst verbindungslose Protokolle wie UDP IPsec AH ESP GRE und andere Tunnelprotokolle haben einen wenn auch pseudo Verbindungszustand Als Heuristik fur solche Protokolle kommt meist ein zeitbasierter Inaktivitats Timeout zum Zuge nach dessen Ablauf eine Netfilter Verbindung geloscht und somit vergessen wird Jede Netfilter Verbindung wird eindeutig durch ein Layer 3 Protokoll Quelladresse Zieladresse Layer 4 Protokoll Layer 4 Schlussel Tupel identifiziert Der Layer 4 Schlussel hangt vom verwendeten Transportprotokoll ab fur TCP UDP sind es die Portnummern fur Tunnel kann es deren Tunnel ID sein ist aber sonst einfach nur null als ob es nicht Teil des Tupels ware Um den TCP Port in jedem Fall auslesen zu konnen werden Pakete zwangslaufig defragmentiert Netfilter Verbindungen konnen mit dem Userspace Programm conntrack manipuliert werden Mittels Connection Tracking kann iptables Einsicht auf Verbindungsparameter wie Zustande states Status statuses etc Paketfilterregeln starker und einfacher handhabbar machen Die wichtigsten Zustande sind NEW mit dem Paket beginnt eine neue Verbindung ESTABLISHED das Paket gehort zu einer bereits bestehenden Verbindung RELATED dieser Zustand wird einem Paket zugeordnet das eine neue Verbindung beginnen wurde wobei die Verbindung aber bereits erwartet wurde Die zuvor genannten mini ALGs setzen diese Erwartungen auf z B wenn das nf conntrack ftp Modul den PASV Befehl in einer FTP Verbindung findet INVALID Das Paket wurde als ungultig eingestuft z B wenn es nicht dem TCP Zustands Transitionsgraphen folgt UNTRACKED ist ein besonderer Zustand der vom Administrator zugewiesen werden kann um Connection Tracking fur ein gewisses Paket zu umgehen s o raw Tabelle Ein Beispiel ware dass das erste Paket vom Connection Tracking als new eingestuft wird Ein darauffolgendes Antwortpaket ware dann established und ein ICMP Fehlerpaket ware related Liess sich ein ICMP Fehlerpaket jedoch keiner Verbindung zuordnen so ware es als invalid klassifiziert Helfer Module Bearbeiten Mittels weiterer Plugins lasst sich Connection Tracking soweit erweitern dass es Kenntnis von Protokollen der Anwendungsschicht erhalt und somit versteht dass zwei oder mehrere Verbindungen verwandt related sind Nehme man bspw das FTP das zunachst eine Kontrollverbindung offnet fur jeden Datentransfer jedoch eine weitere separate Ist das nf conntrack ftp Modul geladen so wird das erste Paket einer FTP Datenverbindung als related statt new eingestuft da es logischer Teil einer bereits bestehenden Verbindung ist Die Helfermodule inspizieren nur jeweils ein Paket auf einmal Sollten also wichtige Informationen die fur Connection Tracking relevant sind auf mehrere Pakete entweder durch IP Fragmentierung oder TCP Segmentierung aufgeteilt sein so konnen die Module ihrer Aufgabe nicht nachkommen IP Fragmentierung wird erzwungene Defragmentierung entgegengesetzt jedoch wird TCP Segmentierung bisher nicht behandelt Im Falle von FTP wurde angenommen dass eine Segmentation nahe Befehlen wie PASV mit ublichen Segmentgrossen normal nicht auftreten wurde und somit wird Segmentierung in Netfilter auch nicht weiter beachtet Network Address Translation BearbeitenJede Verbindung besitzt Original Adressen Quelle Ziel sowie Antwort Adressen welche zu Beginn gleich sind NAT innerhalb Netfilters wird dadurch realisiert dass die Antwort Adresse und wo gewollt Ports entsprechend umgeschrieben werden Werden Pakete empfangen so wird deren Tupel auch gegen Antwort Adressen und Ports abgeglichen NAT erwartet dass Pakete fragmentfrei vorliegen Falls notig und moglich werden IPv4 Pakete bei der Ausgabe vom nicht Netfilter IPv4 Stack refragmentiert NAT Helfermodule Bearbeiten Ahnlich den Helfermodulen fur Connection Tracking gibt es NAT Helfermodule die neben der Paketinspektion auch noch Manipulation von Originaladressen zu Antwortadressen im Datenstrom umsetzen nftables Bearbeitennftables ist eine von den Netfilter Entwicklern 2009 gestartete Weiter bzw Neuentwicklung der Filtermoglichkeiten im Linux Kernel nftables basiert wie iptables ip6tables arptables und ebtables auf der Netfilter Softwareschicht im Kernel Hauptgrund fur den Start des Projektes war und ist es mehrfachen Code der durch die getrennten Tools fur IPv4 IPv6 arp Protokolle und Bridge Filterung zu vereinheitlichen Das neue Filterwerkzeug wurde NFTables genannt das Kommandozeilenwerkzeug dafur nft Um diese Ziele zu erreichen wurde nftables von vornherein als Ablosung von iptables konzipiert Bedingt durch den Erfolg von iptables und den zahllosen Tools und Firewalls die darauf basieren fand das Projekt lange Zeit nicht die Nutzung die gewunscht war Deshalb entschlossen sich die Entwickler eine Kompatibilitatsschicht zu iptables einzufuhren Die Filter Engine wurde als eine Art virtuelle Maschine ausgefuhrt die die Filterregeln in einem Bytecode verarbeiten kann Netfilter lasst prinzipiell mehr Verarbeitungsmoglichkeiten zu als die alten Projekte hatte aber bis 2016 noch nicht den vollstandigen Funktionsumfang fur die Ablosung der Altprojekte erreicht so dass beide Projekte derzeit im Kernel koexistieren NFtables wurde mit Version 3 13 in den Standard Linux Kernel aufgenommen und teilweise auch fur Linux Distributionen in altere Kernel ruckportiert Red Hat Enterprise Linux 7 Kernel 3 10 5 Fur den Anwender hat nftables den Vorteil einer vereinheitlichten Syntax fur IP arp und eb Regeln sowie der Tatsache dass Regeln fur IPv4 und IPv6 oft vereinheitlicht werden konnen 6 Weitere Netfilter Projekte BearbeitenObwohl es sich bei folgenden nicht um Kernelmodule handelt die direkt auf die Netfilter Code Infrastruktur aufbauen werden einige weitere Softwarepakete vom Netfilter Projekt unterstutzt ulogd Bearbeiten ulogd ist ein Userspace Programm das zum Empfang und zur Archivierung von Paketen oder deren Eigenschaften und Eventbenachrichtigungen des Netfilter Subsystems dient iptables kann Pakete mittels des userspace queueing Mechanismus an den Userspace weiterleiten und Connection Tracking kann mit ulogd interagieren um weitere Informationen z B Verbindungszustand uber Pakete oder Events z B Verbindung geschlossen Verbindung wurde ge NAT ed auszutauschen ipset Bearbeiten Das Userspace Programm ipset 7 wird verwendet um sogenannte IP sets innerhalb des Linux Kernels einzurichten anzusehen und sonstig zu verwalten Ein IP Set ist ublicherweise eine Menge an IP Adressen kann aber auch Mengen von Netzwerknummern oder Ports enthalten je nachdem welchen Typ ein Set hat Solche Sets sind viel effizienter zu durchsuchen als wenn regulare iptables Regeln Stuck fur Stuck gepruft und abgearbeitet wurden aber einhergehend mit Sets ist naturlich ein gegebenenfalls hoherer Speicherbedarf Verschiedene Speichermodelle sind in IP Set verfugbar sodass der Benutzer eine fur sich optimale Losung auswahlen kann Anders als die meisten Netfilter Erweiterungen wie Connection Tracking ist IP Set eher mit iptables in Verbindung zu bringen Es bedient sich keiner Netfilter Hooks stellt aber ein iptables Modul zum Zugehorigkeitstest und minimalen Anderungen Setzen Loschen von IP Set Inhalten Weblinks BearbeitenHomepages Netfilter iptables Projekt Homepage englisch conntrack tools Homepage englisch ipset homepage englisch ulogd homepage englisch Der Workshop Home of the Netfilter Workshop websites englisch franzosisch Workshop resume blog englisch franzosisch Technische Dokumentation Writing Netfilter Modules e book 2009 PDF 655 kB Einzelnachweise Bearbeiten http lxr linux no linux net netfilter core c L157 Grunde fur GPL Urteil veroffentlicht ifrOSS Abgerufen am 18 Juni 2021 a b netfilter iptables project homepage About the netfilter iptables project In netfilter org Abgerufen am 7 Marz 2018 englisch Netfilter s Connection Tracking System by Pablo Neira Ayuso June 14 2006 people netfilter org PDF 185 kB Adoption nftables Wiki abgerufen am 15 Mai 2019 https www heise de select ix 2018 1 1514658860742410 IP sets englisch offizielle Projektseite bei netfilter org Stand 30 Marz 2011 Abgerufen von https de wikipedia org w index php title Netfilter amp oldid 232458215