Zeroshell-Workshop Teil 3: Firewall-Konfiguration

Aus LinuxUser 09/2013

Zeroshell-Workshop Teil 3: Firewall-Konfiguration

© Arkosfl, sxc.hu

Zugangskontrolle

Eine Firewall kontrolliert den Fluss der Daten in einem Netzwerk. Dank einfacher Konfiguration und umfangreichen Logging-Funktionen haben Sie mit Zeroshell schnell und einfach einen entsprechenden Dienst aufgesetzt.

Zeroshell-Workshop

Teil 1 – Zeroshell aufsetzen LU 07/2013, S. 22 https://www.linux-community.de/29626
Teil 2 – Routing und WLAN-Bridge LU 08/2013, S. 38 https://www.linux-community.de/29993
Teil 3 — Firewall einrichten LU 08/2013, S.**66 https://www.linux-community.de/30220

Die Inbetriebnahme einer Firewall gehört bei jedem Netzwerk, das mit dem Internet kommuniziert, zu den grundlegenden Arbeiten. Zwar regulieren die meisten Router bereits den Datenverkehr, doch die wenigsten bieten eine Möglichkeit, die Regeln für die Pakete an eigene Bedürfnisse anzupassen. Zeroshell springt mit seinem Firewall-Dienst in die Bresche.

Filter und Tabellen

Der Firewall-Dienst von Zeroshell [1] setzt auf das bewährte Duo Netfilter und Iptables [2] auf, das unter Linux seit Kernel 2.4 als Paketfilter fungiert. Die beiden Techniken im Duett ermöglichen es, anhand von klar definierten Regeln Paketen zu prüfen und über deren weiteren Weg zu entscheiden. Jedes Paket durchläuft unterschiedliche Regelketten, bis eine Regel zutrifft und das System die passende Aktion ausführt.

Die drei Tabellen filter für den eigentlichen Paketfilter, nat für die Network Address Translation sowie mangle zum Markieren einzelner Pakete bilden die grundlegenden Funktionen ab. In ihnen verwalten Sie die Regellisten in die Kategorien INPUT, FORWARD und OUTPUT in der Tabelle filter und PREROUTING, OUTPUT und POSTROUTING in der Tabelle nat.

Die Tabelle mangle differenziert nach PREROUTING, INPUT, FORWARD, OUTPUT und POSTROUTING. Für jede einzelne Regel in diesen Ketten definieren Sie ein sogenanntes target, also ein Ziel, das festlegt, was mit dem betreffenden Datenpaket geschieht. Die häufigsten Targets sind ACCEPT, DROP und REJECT, die dafür sorgen, dass das System ein Paket akzeptiert, verwirft oder zurückweist.

Neben dem reinen Filtern von Paketen beherrscht das Duo Netfilter und Iptables zusätzlich die sogenannte Stateful Packet Inspection (SPI, [3]), die neben der Analyse der einzelnen Pakete den Zustand der Verbindung beim Prüfen mit einbezieht. Die Firewall merkt sich diesen in einer internen Tabelle und wendet auf die einzelnen Pakete nach dem Prüfen die vorgegebenen Regeln an. Den Status definiert das System über die Parameter NEW, ESTABLISHED, RELATED oder INVALID.

Kriterien

Um das Regelwerk sehr fein zu justieren, bietet Netfilter/Iptables außerdem die Möglichkeit, einzelne Kriterien auf die Quell- und Zieladressen der Datenpakete anzuwenden. Neben der Angabe der IP-Adressen besteht hier die Option, physikalisch vorhandene Netzwerkschnittstellen oder MAC-Adressen zu definieren. Zudem können Sie die Regeln auf unterschiedliche Protokolle und Verbindungs-Flags eingrenzen.

Durch die vielen Parameter wächst sich eine manuell angelegte und gepflegte Firewall bei größeren Netzwerken mit unterschiedlichsten Anwendungen sehr schnell zu einer komplexen und wartungsintensiven Angelegenheit für den Administrator aus. Bei zunehmender Komplexität schleichen sich zudem gerne Fehler ein.

Grafisches Management

Zeroshell vereinfacht durch eine grafische Oberfläche die Pflege der Firewall erheblich. Sie öffnen als Administrator die GUI über das Menü Security | Firewall links in der vertikalen Leiste der Oberfläche. Zeroshell wechselt nun in die Kette INPUT und zeigt einen leeren Bildschirm, in dem Sie Ihre individuellen Regeln definieren.

Um die Firewall durch eigene Regeln zu ergänzen, suchen Sie sich zunächst die entsprechenden Kategorie mittig oben im Fenster aus, indem Sie diese in der entsprechenden Schaltfläche Policy aktivieren. Anschließend definieren Sie die Regelkette, wobei es sich empfiehlt, in der Reihenfolge INPUT, FORWARD und OUTPUT vorzugehen.

Danach klicken Sie auf den kleinen Schalter Add oben rechts. In einem neuen Fenster finden Sie nun alle möglichen Optionen inklusive jener für die Stateful Packet Inspection (SPI). Da eine fehlerhaft eingestellte Firewall ein gravierendes Sicherheitsrisiko darstellt, empfiehlt sich ein detailliertes Wissen über die Funktionsweise von Netzwerken. Die beim Übertragen genutzten Protokolle sollten ebenfalls bekannt sein.

Vergegenwärtigen Sie sich zudem, in welcher Richtung Datenpakete die einzelnen Schnittstellen Ihres Zeroshell-Rechners durchlaufen, da die Angabe eines falschen Interface den Effekt des Filters zunichte macht.

Beispiel

Im nachfolgenden Beispiel (Abbildung 1) für eine Firewall-Regel geht es darum, von außen ins Intranet geleitete ICMP-Pakete zu unterbinden. Massenhafte Anfragen über das ICMP-Protokoll sind vor allem bei Skript-Kiddies immer noch das Mittel der Wahl, um schwächere Computersysteme mit einer löchrigen Firewall außer Gefecht zu setzen, indem sie betroffene Zielrechner mit solchen Anfragen überlasten.

Abbildung 1: Ping-Attacken verhindern Sie mit wenigen Mausklicks.

Abbildung 1: Ping-Attacken verhindern Sie mit wenigen Mausklicks.

Um eingehende Ping-Anfragen zu blockieren, definieren Sie zunächst in der Policy DROP und der INPUT-Kette das passende Interface. Hierbei handelt es sich nicht um die Schnittstelle, die ins Intranet führt, sondern um jenen Netzanschluss, der dem DSL-Gateway zugewandt ist. Anschließend tragen Sie in den Feldern Source IP und Destination IP jeweils gültige IP-Adressen mitsamt ihren Subnetzmasken ein.

Dabei dürfen Sie – sofern das Intranet aus mehreren angeschlossenen Computern und Peripheriegeräten besteht – komplette Netze als Quell- oder Ziel-IP angeben. Im nächsten Schritt wählen Sie links mittig im Fenster das betreffende Protokoll. Ein Klick auf das kleine Dreieck rechts neben der Anzeige Protocol Matching zeigt eine stattliche Liste.

Wählen Sie das ICMP-Protokoll und danach rechts daneben im Feld ICMP Type den Eintrag echo-request (ping). Im letzten Schritt definieren Sie noch ganz unten, was mit entsprechenden Paketen passiert, die von außen einen Ihrer Rechner ansprechen wollen. Hier stehen im Bereich ACTION die Alternativen ACCEPT, DROP, REJECT, CHAIN und RETURN zur Auswahl.

Im Beispiel empfiehlt es sich, die Aktion DROP zu wählen, da bei dieser das System das Paket verwirft, ohne dass der Quellrechner eine Rückmeldung erhält – für den absendenden Computer bleibt unklar, ob der angefragte Rechner existiert. Ein Feedback mithilfe der Aktion REJECT würde dem absendenden System die Existenz des Rechners bestätigen. Der Angreifer hätte die Möglichkeit, daraus Rückschlüsse zu ziehen, um weitere Aktivitäten zu planen.

Um die neue Regel in die Firewall einzugliedern, klicken Sie abschließend auf die Schaltfläche Confirm. Sofern die neue Regel korrekt konfiguriert ist, zeigt das System sie nun im Hauptfenster an. Ein Häkchen in der Spalte Active signalisiert, dass die Regel bereits aktiv ist (Abbildung 2).

Abbildung 2: Einmal eingerichtet, ist die neue Regel sofort aktiv.

Abbildung 2: Einmal eingerichtet, ist die neue Regel sofort aktiv.

Überwachung

Falls die Firewall oder ein Dienst nicht korrekt arbeitet, bietet Ihnen Zeroshell die Option, Fehler anhand von Log-Dateien aufzuspüren. Es zeigt diese Protokolle als übersichtliche Liste an. Klicken Sie dazu oben rechts im Konfigurationsfenster auf die Schaltfläche Show Log.

Zeroshell öffnet nun ein weiteres Fenster mit dem Log Viewer, in welchem Sie genaue Angaben zum Datenverkehr finden (Abbildung 3). Anhand der Angaben zur Schnittstelle sowie der Uhrzeit haben Sie Probleme schnell ermittelt. Log-Dateien anderer Dienste von Zeroshell erreichen Sie zusätzlich aus dem Hauptmenü heraus durch Anklicken von System | Logs.

Abbildung 3: Dem Log Viewer entgeht bei korrekten Einstellungen nichts.

Abbildung 3: Dem Log Viewer entgeht bei korrekten Einstellungen nichts.

Verfolger

Damit Sie die Verbindungen im Netzwerk stets im Blick behalten, ermöglicht Ihnen Zeroshell das Verfolgen der Kommunikation in Echtzeit. Über den Menüpunkt Firewall | Connection Tracking erreichen Sie den entsprechenden Dialog. Ab Werk ist das Logging ausgeschaltet, obwohl Zeroshell bereits die komplette Datenkommunikation visualisiert. Die Grafik fällt jedoch sehr unübersichtlich aus. Es bietet sich an, das Protokollieren anhand von Filterregeln vorzunehmen.

Oben mittig gibt es dazu eine Eingabezeile Filter, in der Sie ein Suchkriterium eingeben. Als solches kommen dabei IP-Adressen, Port-Nummern oder der Status der Verbindung infrage. Darüber hinaus haben Sie die Möglichkeit, die Liste durch einen Klick auf den Button Flush zunächst zu leeren, um neue Einträge zu filtern und so mehr Übersicht zu erhalten.

Um die Kommunikation im Netzwerk dauerhaft nach voreingestellten Kriterien zu verfolgen, bietet Zeroshell mithilfe des Logging-Dienstes die Option, gleich mehrere Filter zu definieren und die Log-Dateien somit klein zu halten. Um entsprechende Filter festzulegen, klicken Sie oben rechts im Einstellfenster des Trackings auf den Schalter Configure. Nun öffnet sich ein Eingabefenster, das maximal neun Regeln aufnimmt. Zunächst aktivieren Sie das Häkchen für Enabled, um die Protokollfunktion einzuschalten. Anschließend legen Sie verschiedene Filter an.

Syntax

Die Syntax der Regeln im Connection Tracking Logger folgt zwar sehr einfachen Prinzipien, die aber nicht dokumentiert sind. Das erfordert unter Umständen einige Experimente, um korrekte Log-Regeln anzulegen. Grundsätzlich sind Quellen (Source) und Ziele (Destination) anzugeben. Außerdem legen Sie fest, ob Sie Quelle und Ziel der jeweiligen Regel im Protokoll sehen möchten.

Um alle Pakete zu protokollieren, die einen Client im Netz 192.168.2.0/24 als Ziel haben, geben Sie als Filter dst=192.168.2.* ein. Als Kriterium wählen Sie am Ende der Zeile Include, und um den Filter zu aktivieren, setzen Sie vor der Zeile ein Häkchen.

Möchten Sie alle Pakete aus dem Protokoll ausschließen, die vom Quell-Port 80 stammen, so geben Sie in der entsprechenden Zeile sport=80 an, als Kriterium jedoch Exclude. Alle Pakete, die von der IP-Adresse 127.0.0.1 ausgehen, also von Localhost, erscheinen nicht in den Logs. Diese Regel ist bereits voreingestellt (Abbildung 4).

Abbildung 4: Filter für die Logdateien definieren Sie ebenfalls grafisch.

Abbildung 4: Filter für die Logdateien definieren Sie ebenfalls grafisch.

Sobald Sie Ihre Filterliste komplettiert und mit einem Klick auf den Button Save gespeichert haben, werden die Log-Dateien den Vorgaben entsprechend gefüllt. Um die aktuelle Log-Datei einzusehen, können Sie nun auf die Schaltfläche Show oben rechts im Konfigurationsfenster klicken. Es öffnet sich der Log Viewer, der Ihnen neben den protokollierten Paketen auch die aktiven Filterregeln anzeigt (Abbildung 5).

Abbildung 5: Firewall-Log mit Regelwerk.

Abbildung 5: Firewall-Log mit Regelwerk.

Proprietäre Protokolle

Durch das Internet haben sich neue Formen der Kommunikation entwickelt, in manchen Fällen abseits der herkömmlichen Standards. So entstanden neue, meist proprietäre und anwendungsspezifische Protokolle. Diese siedeln sich meist auf Layer 7 – der Anwendungsschicht – des ISO/OSI-Schichtenmodells an und verwenden eigene Ports. Vor allem Online-Spiele erweisen sich in dieser Hinsicht als sehr aktiv.

Zeroshell nimmt Ihnen auch in diesem Fall eine Menge Arbeit ab: So finden Sie in den Einstellungen zur Firewall eine Reihe Layer 7 Filters, die nach einem Klick auf den Button L7 Manager rechts in dieser Zeile den Layer 7 Filter Manager öffnet. Hier wählen Sie zunächst im Feld Group eine Protokollgruppe aus und rufen anschließend über ein spezifisches Protokoll aus dieser Gruppe, für das Sie eine Firewall-Regel anlegen möchten, nähere Informationen ab.

Die zugehörige Regel legen Sie über einen Klick auf das kleine Dreieck rechts neben der Zeile im Konfigurationsfenster der Firewall an. Sie wählen hier das gewünschte Protokoll aus und fügen es der aktiven Regelkette zu (Abbildung 6).

Abbildung 6: Bei Bedarf fügen Sie der Firewall problemlos Regeln für proprietäre Protokolle hinzu.

Abbildung 6: Bei Bedarf fügen Sie der Firewall problemlos Regeln für proprietäre Protokolle hinzu.

Firewall im Test

Nach Abschluss Ihrer Konfiguration empfiehlt es sich, die Einstellungen auf ihre Wirksamkeit hin zu überprüfen. Dazu bieten sich Online-Dienste, wie PC Flank [4] an, die verschiedene Tests vornehmen und Ihnen die Ergebnisse gleich am Bildschirm präsentieren. Ein erfolgreich durchlaufener Intensivtest sollte keine Schwachstellen der Firewall mehr anzeigen (Abbildung 7).

Abbildung 7: Alles im grünen Bereich dank der Zeroshell-Firewall.

Abbildung 7: Alles im grünen Bereich dank der Zeroshell-Firewall.

Fazit

Der Firewall-Dienst von Zeroshell eignet sich für lokale Netze jedweder Größe und nimmt Ihnen viel Arbeit ab. Die Konfiguration einer Firewall erfordert zwar nach wie vor detaillierte Kenntnisse, Zeroshell macht es Ihnen aber so einfach wie möglich.

Eine wirkungsvolle Firewall besteht zwar aus einer stattlichen Anzahl von Regeln, diese haben Sie jedoch in den Eingabemasken relativ schnell zusammen gestellt. Einmal angelegt, hilft die Logging-Funktion zudem, Schwachstellen ausfindig zu machen und im Bedarfsfall für forensische Zwecke zu dokumentieren. 

Infos

[1] Zeroshell: http://www.zeroshell.org

[2] Netfilter/Iptables: http://www.netfilter.org

[3] Stateful Packet Inspection: http://de.wikipedia.org/wiki/Stateful_Packet_Inspection

[4] Online-Firewalltest: http://www.pcflank.com

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 09/2013 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben