Linux Firewall

Die Linux-Firewall

Aufgaben und Zweck eines Paketfilters wurden bereits im Kapitel Übersicht über die Linux-Systemsicherheit ausführlich beschrieben. mw-headline" id="Basic_Concepts">Basic_Concepts[Bearbeitung] Zur Vermeidung von Doppelarbeit sollten hier zwei essentielle Wikipedia-Artikel erwähnt werden, die die Grundbegriffe erklären: Die Aufgabenstellung und der Verwendungszweck eines Packetfilters wurden bereits im Abschnitt Übersicht über die Linux-Systemsicherheit ausführlich erläutert. Es wird entweder das Packet entsorgt (drop), d.h. es wird lediglich gelöscht, oder es wird angenommen (ACCEPT), d.h. es besteht den Filtern, oder es wird etwas Kompliziertes getan, worauf ich später noch näher kommen werde.

Unter Linux ist ein Packetfilter im Kerneleinsatz ( "Paketfilter") eingebaut (kompiliert in oder als integriertes Modul). Dazu gehört unter anderem die Einrichtung von Rules, mit denen Sie festlegen können, welche Packages unter welchen Bedingungen durch den Fehlerfilter gehen dürfen. Die Software iptables fungiert mit dem Linuxprozessor und beauftragt ihn, die Datenpakete nach gewissen Kriterien zu sortieren. iptables kümmert sich daher um das Hinzufügen, Entfernen und Bearbeiten von Daten in die Filterschemata des Kerns und das Einrichten der Filterrichtlinie.

Wenn der Computer neu gestartet wird, gehen alle erstellten Regel verlieren, daher ist es ratsam, automatisch Regeldefinitionen festzulegen. Die Tools pptables-save und pptables-restore ermöglichen das Speichern und Wiederherstellen der Regel. In dem erwähnten Linux-Kernel werden Regellisten (Firewallketten) in einer Filterschema geführt. Die Ketten INPUT, OUTPUT und FORWARD sind vordefiniert.

Jeder Kettenzug (INPUT, OUTPUT, FORWARD) bestimmt anhand von Regelwerken, ob ein Datenpaket storniert oder angenommen wird. In jeder Chain finden Sie eine Reihe von Regelwerken, die in etwa so aussehen: Dabei werden die Regelwerke hintereinander abgearbeitet, bis eine Regelung für das empfangene Package gilt. Wenn das Ende der Kampagne ist und keine Regelung gilt, bestimmt die *Politik* der Kampagne, was mit dem Packet geschehen soll.

Im sicherheitsbewußten Betrieb werden alle Packages, für die keine Regeln gelten, entsorgt (prohibitive Security Policy). Die INPUT-Kette prüft dann ein Packet mit der Empfängeradresse dieses Computers (b). Dadurch kann das Packet entweder entsorgt oder zur weiteren Bearbeitung durchgelassen werden. Eine lokale Anwendung (z.B. Mozilla) könnte ein weiteres Packet erstellen (eine Web-Seite anfordern) und an das Netz senden (d).

Nach erfolgreicher Überprüfung sendet die OUTPUT-Kette das Packet an die gewünschte Netzwerk-Schnittstelle (z.B. eth0 / ppp0) weiter. Es gibt, wie bereits zuvor beschrieben, nach dem Hochfahren keine Regel in einer der integrierten Verkettungen (INPUT, OUTPUT, FORWARD), und die Richtlinie ist per Default auf ACCEPT gesetzt. Sie können die Standardrichtlinie ändern, wenn das Kernmodul vom Typ isptables_filter mit einer entsprechenden Funktion aufgerufen wurde (z.B. für FORWARD-Kette: forward=0).

Für die Steuerung von Filtersteuerungsketten stehen mit dem Zusatzprogramm iptables folgende Möglichkeiten zur Verfügung: Neue Ketten anlegen (new-chain) (-N). Ändern Sie die Richtlinie für eine integrierte Verkettung (Richtlinie) (-P). Listen Sie die Spielregeln einer Verkettung (Liste) auf (-L). Entferne die Linien von einer Reihe (bündig) (-F). Setzt Paket- und Byte-Zähler aller Regelwerke einer Verkettung auf Null (Null) (-Z).

Verwalten von Richtlinien in einer Kette: Füge eine neue Richtlinie an eine Reihe von Ketten an (-A). Fügen Sie eine neue Linie an einer speziellen Stelle in der Verkettung ein (Insert) (-I). Tauschen Sie (-R) eine Linie an einer speziellen Stelle in der Verkettung aus. Löscht eine Linie an einer speziellen Stelle in der Verkettung (löschen) (-D).

Löscht die erste übereinstimmende Regel in einer Reihe (-D). Die Basisbefehle sind mit den Anweisungen zum Hinzufügen (-A) oder Entfernen (-D) einer Prüfregel verfügbar. Jeder Regelfall legt einen Satz von Zuständen fest, die ein ankommendes Datenpaket erfüllen mÃ??ssen, und ein Zielvorgabe, die das weitere Verhalten des Datenpaketes bestimmt.

Der Ping schickt eine Echoanforderung (ICMP-Typ 8) und alle zusammenarbeitenden Rechner reagieren mit einer Echoantwort (ICMP-Typ 0). Die INPUT-Kette wird nun um eine Regelfunktion (-A) ergänzt, so dass Datenpakete, die von 127.0.0. 1 (-s 127.0.0. 1) und dem ICMP-Protokoll (-p icmp) kommen, verworfen werden (-j DROP): Die Regelfunktion ist funktionstüchtig.

Aber wie kann man diese Regelung wieder aufheben? Bei bekannter Positionierung der Herrschaft in der Verkettung (in diesem Falle gibt es nur eine Herrschaft, also Stellung 1), können Sie diese Stellung als Paramter verwenden: Ist Ihnen die Stelle jedoch nicht bekannt, können Sie die gesamte Regelwerk neu spezifizieren, d.h. genauso wie beim Anknüpfen der Regelwerk, nur dass anstelle des Kommandos -A ("add") der Kommando -D ("delete") angezeigt wird.

Die Standardketten (z.B. INPUT, OUTPUT und FORWARD) enthalten, wie bereits zuvor erwähn: eine Prüfliste mit den folgenden Regeln: Bei -p wurde das Protokol IBMP ermittelt, die -s Variante spezifizierte die Quellenadresse der Sendungen. Der Protokollname wird durch Protokollenamen angegeben, z.B. "TCP", "UDP" oder "ICMP" (Groß- und Kleinbuchstaben spielt keine Rolle, beide funktionieren) oder die IPAdresse.

In der Eingangskette ist keine Ausgabeschnittstelle vorhanden (siehe Abbildung oben), so dass die -o Option in dieser Reihe nutzlos ist. Ebenso hat die AUSGANGSKette keine EINGANGS-Schnittstelle, so dass Richtlinien mit der -i-Option nie gelten und daher ebenfalls veraltet sind. Es können nur Datenpakete, die die Vorwärtskette durchlaufen, über die Schnittstellen INPUT und OUTPUT durchsucht werden.

Sie können auch Interfaces zuordnen, die beim Erstellen der Regeln noch nicht vorhanden sind (Dialup-PPP-Interfaces). Es gibt kein Packet, das die Anforderung erfüllt, bis das Interface aktiviert ist, so dass es nicht eingreift. Die einzelnen Optionen können invertiert werden, indem man ein ! vor der entsprechenden Option angibt: Beispiel: Die Richtlinie bezieht sich auf alle ICMP-Pakete, die NICHT vom lokalen Computer kommen.

Der entfernte Peer fügt diese Teile wieder zusammen, um das ganze Datenpaket zu erstellen. Andernfalls hat unser Packetfilter nun das folgende Problem: Das erste Segment beinhaltet die vollständigen Headerfelder (IP + TCP, UDP und ICMP), die folgenden Segmente haben nur Teile der Kopfzeilen (IP ohne die weiteren Protokollfelder). Es ist daher nicht möglich, in späteren Segmenten nach Protokollheadern zu forschen (wie dies z.B. bei TCP-, UDP- und ICMP-Erweiterungen der Fall ist).

Die erste Fragmentierung kann wie jedes andere Packet filtriert werden, die zweite Fragmentierung und alle anderen fragmentierten Elemente wenden nicht die zuvor definierten Prinzipien an. In diesem Fall ist es sinnvoll, eine Richtlinie für Bruchstücke mit der Option -f (--fragment) hinzuzufügen. Hinweis: Deformierte Datenpakete (z.B. zu kleine, um Ports oder ICMP-Code oder Typ zu lesen) werden vernichtet.

Die folgende Regelung entsorgt alle Splitter, die bis 192.168.1. 1 gehen: Eine Vielzahl dieser Extensions ist für eine gesicherte Firewall unerlässlich. Ist im Kernsystem die Einstellung Config_KMOD eingestellt, wird der Ladevorgang voll automatisch durchgeführt. Die Impliziten Extensions (tcp, urban, icmp) werden mit der Option -p und die expliziten Extensions mit der Option -m aufgeladen.

Mit der Angabe von -h oder --help nach der Möglichkeit, die Extension zu starten (-p oder -m), kann die Hilfestellung für eine Extension aufgerufen werden. Umkehrungen ( "Negationen") sind durch ein ! hinter der jeweiligen Funktion möglich. Sie werden mit -p icmp gefüllt und haben nur eine neue Option: --icmp-type und anschließend den Namen des ICMP-Typs (z.B.'host-unreachable') oder eine entsprechende Zahl.

Ein Verzeichnis der verfügbaren ICMP-Typennamen kann mit der Zusatzoption "-p icmp --help" abgerufen werden. Der Aufruf der Extension erfolgt mit der -m-Funktion. Neben der optionalen --mac-source folgt eine Netzadresse in Hexadezimaldarstellung, die durch einen Doppelpunkt getrennt ist. Unsere Elektrizität ist nicht aus Trinkwasser, sondern aus Rechenpaketen aufgebaut, der Normalweg zum Retentionsbecken führt zur Erfüllung der Standardbedingung, und der Alternativweg (Überlaufschutz) zur Nichterfüllung der Norm.

Die Extension filtern die Eigenschaften von Datenpaketen und bestimmen so deren Ursprung (lokaler Prozess). Sie dürfen es nur in der Ausgabekette verwenden: --uid-owner userid: Das Package wurde von einem Prozeß mit der gegebenen gültigen Benutzer-ID erzeugt. Die Paketgenerierung erfolgte durch einen Prozeß mit der spezifizierten gültigen Gruppen-ID. --pid-ownner processid: Das Package wurde von einem Prozeß mit der spezifizierten wirksamen Prozeß-ID erzeugt.

  • -sid-ownner processid: Das Package wurde von einem Prozeß in der spezifizierten Sessiongruppe erzeugt. Damit kann mit der Zusatzoption "--state" der Verbindungszustand von Datenpaketen durchsucht werden. NEU: Ein Datenpaket, das eine neue Internetverbindung herstellt, genügt dieser Regeln. Damit verbunden sind z.B. ICMP-Fehler einer Internetverbindung oder (mit dem eingesetzten FTP-Modul) ein Datenpaket, das eine FTP-Datenverbindung herstellt.

Welche Einsatzmöglichkeiten diese Möglichkeit eröffnet, wird im Detail im Abschnitt "Connection Tracking" erläutert. Die Übertragung des Pakets sollte so sicher wie möglich erfolgen, damit keine erneuten Übertragungen notwendig sind. Es handelt sich um ein extrem unwichtiges Angebot, das daher den kostengünstigsten Weg nehmen sollte. In jeder Chain (INPUT, OUTPUT, FORWARD) gibt es, wie bereits gesagt, eine Liste von Checklisten mit solchen Regelwerken, die so aussehen:

Zusätzlich zu den simplen, integrierten Targets DROP (Discard Package) und ACCEPT (Accept Package) gibt es spezielle Targets (RETURN, QUEUEUE) und Extensions, die Kernel-Module benötigen. Sie haben auch die Option, in selbst definierte Verkettungen zu blicken. Zur Strukturierung dieses Regelwerks ist es möglich, zusätzlich zu den integrierten Verkettungen (INPUT, OUTPUT und FORWARD) weitere benutzerspezifische Verkettungen zu erzeugen.

Stimmt ein Packet mit einer Richtlinie (z.B. der INPUT-Kette) mit dem Zweck einer angepassten Verkettung überein, wird die Filterung des Packets in dieser Verkettung weitergeführt. Wenn in dieser selbst definierten Verkettung keine Regelung gilt, wird die Suche in der vorigen Verkettung weitergeführt. Eigene Verkettungen können in andere eigenständige Verkettungen einsteigen.

Dabei werden die beiden nachfolgenden Targets für die Packetmanipulation verwendet und sind nur in der Tabelle MANGLE gültig: Mit der optionalen --set-tos kann das Feld Type-of-Service umgestellt werden.

Über die Auswahl von --set-mark kann der Netzfilter-Auszeichnungswert eingestellt werden. Beispiel: Bei selbst definierten Verkettungen bezeichnet ein RETURN die unmittelbare Rückführung in die aufrufende Kommunikation. Das Filtern durch die benutzerdefinierte Verkettung wird unterbrochen. Mit integrierten Verkettungen (INPUT, FORWARD, OUTPUT) wird die Verarbeitung gestoppt und die Standardrichtlinie angewendet. Hierfür wird ein Queue-Handler benötigt (für Intellectual Property 4 gibt es das Module ip_queue), der das Datenpaket an ein Applikationsprogramm übergibt.

Bei dieser NAT-Tabelle sind die Verkettungen POSTROUTING, PREROUTING und OUTPUT voreingestellt. Auf die NAT-Tabelle wird mit der -t nat-Option zugegriffen, die Filterschicht wird wie gewohnt mit -A ausgewählt. In den folgenden drei Unterkapiteln wird das Connection Tracing für die beiden Protokolltypen UTP, TXP und IMPRESS erläutert, das letzte wird dem FTP-Protokoll gewidmet.

Die folgenden Richtlinien können verwendet werden, um TCP-Verbindungen zu verfolgen: Wird z. B. ein Wechselstrompaket an einen nicht vorhandenen Host hinter der Firewall gesendet, wird ein Connection-Eintrag in der Status-Tabelle angelegt, da es das erste Packet einer nicht existierenden ( und damit NEUEN) Konnektivität ist. Da solche ACK-Pakete die Status-Tabelle überschwemmen können, ist folgende Regelung sinnvoll: Diese Regelung sorgt dafür, dass der Verbindungsaufbau von TCP nur von SYN-Paketen eingeleitet werden kann.

Sobald eine Internetverbindung ein Datenpaket empfängt, wird der Time Out inaktiv. Fordern von Echos (ping, 8) und Echoantworten (pong, 0). Daher ist eine icmp-Echoanforderung in der NEW OUTPUT-Kette zulässig. Bei einer Echoanforderung ist eine icmp-Echoantwort als Reaktion auf eine Echoanforderung ESTABLISHED und damit in der INPUT-Kette zulässig.

Eine Echoantwort würde in der Outputschaltung immer ausgefiltert werden, da keine entsprechende Echoanforderung die EINGABekette durchlaufen kann. Jeder icmp-Redirect wird als RELATED betrachtet und übergibt daher sowohl INPUT- als auch OUTPUT-Ketten, sofern in der Status-Tabelle eine entsprechende TCP- oder UDP-Verbindung vorhanden ist. Im häuslichen Bereich (Single-PC im Internet) sind die beiden nachfolgenden Regelungen für die Annahme von FTP-Verbindungen geeignet:

Damit ein aktiver FTP-Betrieb möglich ist (der Ziel-Port ist nicht bekannt), muss eine allgemeine Regelung für alle eingehenden Übertragungen von Port 20 (FTP-Server) auf die hohen Portnummern (>1023) des Kunden eingestellt werden. Folgende Regelungen sind daher völlig ausreichend: Im Unterschied zu active fÃtp wird die gewÃ?nschte TEILNAHME der jeweiligen DFÃ? -Verbindung nicht durch den Client-, sondern durch den-Server definiert (via PORT-Befehl).

Sie können die Filterschemata wie bei aktivem FTP einstellen, aber anstelle von NEU für die OUTPUT-Kette wird der Filterparameter RELATED verwendet: Abhängig von den Sicherheitsanforderungen sollte die Firewall regelmässig mit den neuesten Fassungen der Netzwerk-Scanner getestet werden, denn Security ist kein Erzeugnis, sondern ein Vorgang, der nie als beendet gelten sollte!

Eine Firewall ist ein Firewall-Computer und nichts als ein Firewall-Computer! Ein Firewall kann nur so geschützt sein wie die von ihm implementierte Sicherheitsrichtlinie. Kommt ein Packet mit einer Source-Adresse des hausinternen Netzwerks an einer fremden Datenschnittstelle an, wird es entsorgt. Falls Sie Security der Leistung vorziehen, sollten Sie Verbindungsüberwachungsregeln einrichten.

Tripwire-Artikel, Linux-Magazin: Das Durchsuchen eines Computers oder Router ist ein wesentliches Diagnosetool im Falle eines Fehlers. Im Heimnetzwerk ist es oft die beste Möglichkeit, solche Regelungen auf die Schnittstelle zu begrenzen, die die Anbindung an das Netz ermöglicht (oft "-i ppp0").