Firewall / Paketfilter

afwallDie meisten Betriebssysteme, zumindest die bei denen der TCP/IP-Stack ein wesentlicher Bestandteil des Betriebssystems ist (mittlerweile auch Windows), bieten eine Firewall an. Bei Windows kann sich der unbedarfte Benutzer aussuchen, ob sich das erkannte Netzwerk im „Heimatnetzwerk“, „Arbeitsplatznetzwerk“ oder im „Öffentlicher Bereich“ befindet. Die Firewall wird dann vom Betriebssystem je nach Einstellung in grundsätzlichen Zügen eingestellt. Über die Systemsteuerung bzw. Computerverwaltung kann die Firewall manuell eingestellt werden.

Bei Firewalls ohne weitere Angaben kann man von einem Paketfilter ausgehen, welcher grundsätzlich auf dem Layer 3 des ISO/OSI Schichtenmodells angesiedelt ist. Natürlich reichen die Funktionalitäten des Paketfilters auch in den Layern 2 und Layer 4 hinein. Die Basisfunktion liegt aber in Layer 3.

Die Firewall kann also die Wegfindung des IP-Protokolls in Richtung Sicherheit beeinflussen. Das heißt es können Verbindungen kontrolliert, erlaubt oder zurückgewiesen werden. Was eine Firewall nicht kann ist zwischen guten und bösen Inhalten von Datenpaketen zu unterscheiden. Ein Datenpaket von einer erlaubten Verbindung wird zugestellt auch wenn sich im Datenpaket zum Beispiel ein Computervirus befinden sollte. Auch kann nur ein Port z.B. einmal erlaubt werden. Ist beispielsweise Port 80 TCP (http) von innen nach aussen zugelassen, so können alle Clients diesen Port benutzen. Eine weitere Differenzierung könnte nur noch nach Ziel- bzw. Quell-IP-Adresse vorgenommen werden. Hier hören also die Möglichkeiten eines Paketfilters auf.

Die Aussage, ein einfacher Gateway würde auf den Layern 2-7 operieren ist also als falsch anzusehen.

Man muss grundsätzlich zwei verschiedene Arten von Firewalls unterscheiden:

  • Hardware-Firewalls
  • Software-Firewalls.

Als Hardware-Firewall wird, obwohl das Betriebssystem selbst ja grundsätzlich als Software anzusehen ist, die Firewall bezeichnet, die als Bestandteil des Betriebssystem implementiert ist. Sie ist untrennbar mit dem Betriebssystem verbunden und nur durch Software-Frontends zu steuern. Sie setzt also nur und ausschließlich auf den TCP-Stack des OS auf!

Die Software-Firewall ist als eigenständige Software unter einem Betriebssystem installiert und wird dann ausgeführt. Die Firewall-Funktionalität wird nicht vom Betriebssystem bestimmt, sondern vom Firewall-Programm selbst. Sie ist grundsätzlich nicht als reine Paketfilter-Firewall anzusehen, da sie sinngemäß eine Applikation darstellt und somit grundsätzlich auf Layer 7 angesiedelt ist. Eine Ausnahme bildet hier mittlerweile Windows 7 und Linux.

Zum Beispiel von der Comodo-Firewall, welche unter z.B. Windows 7 eingesetzt werden kann, werden die internen Filterfunktionen des Betriebssystems benutzt um die Paketfilterung vorzunehmen. Die Software kann nun weiterhin auf der Applikationsebene Programme wie Internet Explorer, Mozilla Firefox usw. differenziert erlauben oder verbieten. Dies kann auch als „Hybrid-Firewall“ bezeichnen, auch wenn es diesen Begriff so eigentlich nicht gibt. Die Firewalls stellen eine Art Verbindung zwischen einer reinen Hard- und einer Software-Firewall dar.

Unter Linux gibt es für wesentliche Funkionen zum Steuern der Paketfilter das „iptables“ Software-Frontend. Sämtliche Software wie zum Beispiel das „iptables“ Modul von Webmin oder die „Shoreline-Firewall“ verwendet im Regelfall die IP-Tables, welche auf irgendeine Weise graphisch aufbereitet werden (zum besseren Verständnis des Benutzers). Die Shoreline-Firewall ähnelt im Grundaufbau dem Steuerungsmodell der Paketfilter von Windows 7.

Was eine Firewall jedoch definitiv nicht kann, ist ein durchsuchen eines Netzwerkpaketes nach Computerviren. Hier gibt es eigene äußerst kostspielige Programme wie die Trend Micro-Office-Scan-Viruswall. Diese öffnet ZIP-Archive bis (voreingestellt) in die zweite Instanz und erkennt so Computerviren.

Viruswall

Zwischenfrage:

Wie erkennt eine Viruswall, welche bis in die zweite Instanz eine Datei scannen kann, eine z.B. End-to-End verschlüsselte, virenbehaftete Datei in z.B. einem Email Anhang? Wie kann verhindert werden, dass eine verseuchte Datei über die Server zum Endgerät gelangt?

Trend Micro Preisliste: http://www.connect-gmbh.de/produkte/trendmicro-preisliste-enterprise.html

Man kann zum Testen Viren herunterladen unter www.eicav.com

Die Reinform einer Software-Firewall ist der sogenannte Proxy-Server (engl. f. Stellvertreter) auch Circuit-Level-Gateway oder auch Application-Level-Gateway genannt. Er speichert Netzwerkpakete zunächst zentral auf einem Server. Dort können Paketfilter nach Content, Viren, Benutzerrechten etc. gescannt werden. Erst nach Überprüfung wird ein Netzwerkpaket weitergeleitet.

Security Gateways bieten auch solche Proxies an, meist neben einer rudimentären Virenlösung. Nur solche Security Gateways können Funktionalitäten von L2 – L7 anbieten.

Bekannte Security Gateways sind:

  • Watchguard Firewall, basierend auf Linux 2.2
  • Sonic Firewall
  • Astaro Firewall, die ebenfalls auf Linux in der aktuellen Kernelversion basiert

Praxis – Aufgabe

  • Laden Sie der Einfachheit halber die Free-Trial Version von Astaro herunter und installieren Sie diese auf einen sepparaten Rechner. Nachdem ohnehin fast jeder Security Gateway auf Linux basiert, rentiert es sich, diese Firewall einmal näher zu betrachten.

Die Linux Firewall hat je nach Kernelversion unterschiedliche Firewall-Funktionalitäten anzubieten. Bis zur Kernelversion 2.2 hieß das Software-Frontend „ipchains“, seit Kernel 2.4 „iptables“. Beide Software-Frontends setzen auf unterschiedliche Filterarchitekturen auf. Da die ipchains veraltet und kaum noch verwendet werden, wollen wir uns die iptables und die gesetzten Webfilter näher ansehen.

Die beiden grundsätzlichen Arten des Firewall-Designs

Man kann eine Firewall nach den Gesichtspunkten

  • dass alles erlaubt ist, was nicht explizit verboten wurde, die sogenannte „default policy“ auf ACCEPT steht oder
  • dass alles was nicht explizit erlaubt ist, verboten werden soll. Die „default policy“ steht somit auf DROP.

Achtung: dies hat zunächst nichts mit der Paketfilterungs-Art an sich zu tun, also ob die Paketfilterung statisch oder dynamisch erfolgen soll. Es betrifft nur die default Policy.

Wenn in diesem Zusammenhang von ACLs (Access Lists) die Rede ist, spricht man von Whitelist oder Blacklist. Die Blacklist wäre demnach default „ACCEPT“ und die Whitelist default „DROP“.

Nun erhebt sich die Frage, auf welche Art die Paketfilterung stattfinden soll. Man kann eine statische oder eine dynamische Paketfilterung wählen.

Die statische Paketfilterung gilt als unsicher und wird heutzutage kaum mehr realisiert, da bei der dynamischen Paketfilterung der Verbindungsstatus und Beziehungen zwischen den Ports, wie beispielsweise bei FTP, hergestellt werden können. Bei einer statischen Paketfilterung geht das nicht.

In Zusammenhang mit der dynamischen Paketfilterung tritt oftmals auch derBegriff SPI (Statefull Packet Inspection) auf. Dieser ist aber vom Hersteller der Checkpoint-Firewall patentiert worden und darf nicht in Zusammenhang mit anderen Firewalls genannt werden. Gemeint ist jedoch immer eine dynamische Paketfilterung.

Zunächst wollen wir aber der Einfachheit halber die statische Paketfilterung betrachten. Das Filtermodell der iptables könnte vereinfacht etwa so aussehen:

statischePaketfilterung

Anhand dieses Modells lassen sich die Grundfunktionen dieser Firewall ableiten:

  • Ein eingehendes Paket trifft auf den Protokoll-Stack auf.
  • Ist es für den lokalen Prozess bestimmt, wird es in die Rule-Chain INPUT geleitet. Hier wird das Paket überprüf und ggf. an den lokalen Prozess weitergeleitet oder verworfen.
  • Die Ausgabe eines lokalen Prozesses wird in der OUTPUT-Chain überprüft und ggf. nach aussen weitergeleitet oder verworfen.
  • Betrifft das Netzwerkpaket keinen lokalen Prozess, so muss es geroutet werden. Es wird also sofort in die Rule-Chain FORWARD überführt, dort überprüft, weitergeleitet oder verworfen. Die Netzfilter bestehen im Regelfall aus den Rule-Chains INPUT, OUTPUT und FORWARD.

Natürlich haben die iptables ihren Namen nicht von den Rule-Chains (Regelketten), sondern von den Filtertabellen, den tables. Auch hier gibt es wiederum 3 Stück: „filter“, „nat“ und „mangle“. In unserem Fall reicht die Betrachtung der table „filter“ und bis zu einem gewissen Punkt die table „nat“. Alles andere ist im Moment nicht so wichtig.

Eine besondere Bewandtnis, sehr wichtig für lokale Prozesse, hat das „loopback device“, auch mit „lo“ abgekürzt. es handelt sich um die IP-Adresse 127.0.0.1. Diese sollte, um lokale Netzwerk-Prozesse nicht zu behindern, immer erlaubt sein.

Für unseren Firewall Versuch soll das Webmin Modul iptables (Linux-Firewall) dienen. Mit diesem ist es möglich, Firewall-Regeln grafisch anzuklicken. Die Syntax ist somit beachtet. Man kann sich Gedanken um die Firewallfunktion an sich machen.

Die iptables Befehle sind wie folgt aufgebaut

iptables -t filter -A INPUT -i lo -j ACCEPT

iptables ist der Konsolenbefehl mit dem das Software-Frontend angesprochen wird.

-t filter deklariert die Tabelle für die die folgende Rule-Chain gelten soll

-A INPUT fügt die Paketregel dem INPUT Chain hinzu (append)

-i lo deklariert das input device. In diesem Fall ist der lokale Prozess bzw. das loopback
device gemeint

-j ACCEPT ist das sog. target (Ziel). Es bestimmt was mit dem Paket geschehen soll, wenn die
Filterregel zutrifft. Das heißt trifft die Regel zu verlässt das Paket den Kontrollstapel
und springt zum target (Ziel) (-j = jump to)

Sollte die Filterregel nicht treffen, so wandert das Paket zur nächsten Filterregel nach unten bis hin zur „default policy“, welche in unserem Fall auf DROP stehen muss, da sonst das target unsinnig deklariert wäre. Die Filterregeln sollten entsprechend kurz gehalten werden und die am häufigsten zutreffenden Regeln (matching rules) sollten möglichst weit oben stehen. Dies verhindert unnötige Paketlaufzeiten. Auf einem Router wird meist die FORWARD Chain am häufigsten benötigt werden, auf einem Server werden es die INPUT und OUTPUT Chains sein. Es kann aber durchaus sinnvoll sein z.B. den Administrationszugang der Router nur der entsprechenden Bankreihe zu gestatten. Dies beträfe zunächst nur die INPUT und OUTPUT Chains der bankrouter. Die default policy kann dabei auf ACCEPT bleiben – das heißt wir arbeiten mit einer Blacklist.

Voraussetzung…

…hierfür ist die Erstellung eines Planes. Folgende Fragen sind dabei zu klären:

  • Welches ist das eingehende device von dem administriert werden soll (eth0, eth1, usw)?
  • Welches ist das ausgehende device, über das die Antwort des Servers stattfinden soll (eth0…)?
  • Welches ist das Quellnetz, welches erlaubt werden soll? (-> Subnet Bankreihe)
  • Welches ist das Zielnetz, auf das geroutet werden darf?
  • Welcher Dienst soll in Anspruch genommen werden bzw. welchen Kommunikationsport benutzt dieser Dienst (ssh=22, webmin=10000)
  • Welches Netzwerkprotokoll wird eingesetzt? (TCP, UDP)
  • Sind noch andere Dienste von dem benötigten Dienst abhängig?
  • Welcher Port und welches Protokoll benutzt dieser Dienst? (DNS=53 UDP)

Sind diese Basisfragen geklärt, so können die Kommunikationswege neben den benötigten Ports, Protokollen, Devices, Netzwerken, in einer Filterregel ausgedrückt werden.

Folgender Fall soll gegeben sein:

Der Bankreihen-Router soll nur von den Subnetzen der Bankreihen mittels ssh und webmin administriert werden können. Die anderen Bankreihen sollen keine Adminstrationsmöglichkeiten bekommen.

Annahme:

Backbone Netz 172.16.0.0/28 eth1 (also Fremdnetz, für Bank3=eth2)

Bankreihen Netz 172.20.15.0/26 eth0 (für Bank3=eth1)

Dienst ssh tcp 22

default policy ACCEPT

iptables -t filter -A INPUT -p tcp –dport 22 -i eth0 -j DROP

iptables -t filter -A OUTPUT -p tcp –sport 22 -o eth0 -j DROP

ODER:

iptables -t filter -A INPUT -p tcp (-i eth0) –dport 22 -s 172.16.0.0/28 – DROP

iptables -t filter -A OUTPUT -p tcp (-o eth0) –sport 22 -d 172.16.0.0/28 – DROP

(der eingeklammerte Bereich ist optional in diesem Fall)

In diesem Falle würden alle Pakete, welche das Protokoll tcp und den Zielport 22 benutzen, über das device the1 hereinkommen, verwerfen.

Versuchen Sie nun das Beispiel auf ihren Fall anzuwenden und entsprechende anzupassen und mittel webmin Modul „Linux Firewall“ zu imokementieren.

Natürlich kann auch eine Negation zur Regelüberprüfung angewendet werden. Zu diesem Zweck steht das Ausrufezeichen zur Verfügung. Es heißt in diesem Fall „entspricht-nicht“.

Beispiel:

iptables -t filter -A INPUT -p tcp –dport 22 ! -s 172.20.20.0/26 -j DROP

In diesem Fall werden alle Pakete des Protokolls tcp und des Zielports 22, was nicht von der Quelle 192.20.20.0/26 kommt, verworfen.

Testen Sie beide Varianten auf ihre Funktion. Leiten Sie nun ihre Filterregeln auf den Webmin Dienst über. Das heißt es soll nur noch aus der entsprechenden Bankreihe zugegriffen werden können. Nun kann kein Anderer, außer die Clients ihrer Bankreihe, den Router administrieren.

Bedenken Sie, dass bei statistischen Filterregeln der INPUT-Regel immer eine entsprechende OUTPUT-Regel gegenüber gestellt wird.

Nachdem die Firewall nun erfolgreich konfiguriert wurde, wäre es möglich in der FORWARD Chain nur ganz bestimmte Dienste zuzulassen, mit dem in Firmen hauptsächlich gearbeitet wird. Dies könnte sein: smtp, pop3, http, https und möglicherweise imap. Verbindungen, welche von aussen nach innen gelangen könnten , sind grundsätzlich nicht erwünscht. In der Regel ist sogar in Firmennetzwerken der Internetzugang für private Zwecke eingeschränkt.

Das heißt das Internet kann nur in geringem Umfang Privat genutzt werden und dann auch nicht unbeschränkt. Das heißt um den Dienst zum Beispiel http in der FORWARD Chain zu gestatten, sollte zunächst die default policy auf DROP gestellt werden. Also:

iptables -P FORWARD DROP

Bedenken Sie dabei, dass jedweder Netzwerkverkehr zunächst verworfen wird. So wird auch evtl. DHCP-Relay oder DNS nicht mehr funktionieren. Nötigerweise sollten zunächst die lokalen Prozesse gestattet werden. Also

iptables -t filter -A FORWARD -i lo -j ACCEPT

iptables -t filter -A FORWARD -o lo -j ACCEPT

Bedenken Sie, dass  in der FORWARD Chain sowohl das input als auch das output device deklariert werden kann. Dies unterscheidet sich von z.B. der INPUT Chain wo nur ein input device angegeben werden kann. Stellen Sie nun die Basisüberlegungen an, welche Dienste Sie in das Internet weiterleite bzw. zulassen möchten. Benötigte Dienste sind meistens http, https, smtp, pop3 und alle Dienste welche notwendigerweise zugelassen werden müssen.

Beispiel:

iptables -t filter -A FORWARD -p tcp –dport 80 -i eth1 -j ACCEPT

iptables -t filter -A FORWARD -p tcp –sport 80 -o eth0 -j ACCEPT

Leiten Sie diese Regeln auf alle benötigten Dienste über. Bedenken Sie den DHCP und den DNS!

Eine Firewall wird im Regelfall auf ordnungsgemäße Funktion mittels eines portscanners wie nmap überprüft. Wireshark ist hier nicht aufschlussreich.

Lösung

Im Grunde benötigt man lediglich zwei Anweisungen:

iptables -t filter -A INPUT  -p tcp –dport 22 -i eth1 -j DROP

iptables -t filter -A OUTPUT -p tcp –sport 22 -o eth1 -j DROP

und

iptables -t filter -A INPUT -p tcp -m multiport –dports 22,10000 -i eth2 -j DROP

Mit diesem Befehl kan man die Befehlskette in der Konsole betrachten:

less /etc/iptables.up.rules

 

 

dhcp-01

dhcp-02

dhcp-03

dhcp-04

firewall_01

firewall_02

firewall_03

firewall-04

firewall-04

firewall-04

firewall-04

firewall-04

[pageview url=“http://64-bit.de/dokumentationen/netzwerk/e/002/DE-IPTABLES-HOWTO.html“ title=“iptables How To“ scrolling=“yes“ border=“yes“]

 

Print Friendly, PDF & Email

Schreibe einen Kommentar