Network Services VU

184.163

WS2003/2004

 

 

 

Firewalls

Lab assignment

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Haider Gerald (0125638)

Radl Christoph (0102799)

Schachinger Josef (0125692)

 


Inhaltsverzeichnis

1      Einführung   3

2      Typen von Firewalls   4

2.1        Traditional Packet Filters  4

2.2        Stateful Packet Filters  6

2.3        Proxy-Based Firewalls  6

2.4        NAT und VPN   8

2.4.1     Network Adress Translation  8

2.4.2     Virtual Privat Netzwerk  8

2.5        Welche Technik für welche Anforderung  8

3      Attack Scenarios   10

3.1        Buffer Overflow Angriffe  10

3.1.1     Funktionsweise eines Buffer Overflows  10

3.2        Password Attacks  11

3.3        Web Application Attacks – Angriffe übers Web  11

3.3.1     Account Harvesting – Zugangsdaten ermitteln  11

3.3.2     Angreifen von „Session tracking“ Mechanismen  12

3.3.3     Code Injection – Einschleusen von Fremdcode  12

3.4        „Offline“ Attacken  13

3.4.1     Social Engineering  13

3.4.2     Dictionary Attacks  13

3.4.3     Dumpster Driving  14

4      Linux iptables Grundwissen   14

4.1        Wie wird Iptables angewendet?  15

6      Firewall Script Beispiel  18

7      Referenzen   21

8      Abbildungsverzeichnis   21

 


1      Einführung

 

Firewalls, schon fast eine Unwort der heutigen zeit, mittlerweile ranken sich Gerüchte um die Fähigkeiten und Möglichkeiten einer Firewall als ob sie ein Mythos wäre oder eine Berühmtheit.

 

Die erste Erkenntnis sollte sein:

Firelwall!= Sicherheit

 

Dieses Dokument soll einen Möglichkeiten und Fähigkeiten einer Firewall beschreiben, auch werden hier die verschiedenen Ansätze in denen eine Firewall gestalltet werden kann gezeigt werden. Zu den wichtigsten Punkten dieser Arbeit sollen aber die Angriffszenarien gehören und natürlich nicht minder wichtig soll ein konkretes Beispiel angeführt werden.

 

Eine Firewall soll dazu dienen, dass der Verkehr zwischen zwei Netzwerken überprüft werden kann und natürlich auch Begrenzungen ermöglicht. Als Beispiel aus der realen Welt kann eine Firewall mit einem Tormann verglichen werden des Tor als das zu schützende Netzwerk anzusehen ist. Nun soll dieser Tormann einzelne Verbindungen durchlassen, andere aber abwehren und verhindern. Und somit definiert sich auch das Ziel eines Angreifers, er möchte unerkannt an diesen Tormann vorbeikommen.

 

Abbildung 1 - Firewall Konzept

 

Dennoch ist es auch wichtig das es Teilnehmern aus den Netzwerken möglich ist gewünschte Verbindungen aufzubauen und Übertragungen durchzuführen und hierbei befindet man sich bei der Definition einer Firewall immer auf einem schmalen Grad.

 

Abbildung 2 - Angriffszenario

 

Um nun diese Voraussetzungen erfüllen zu können gibt es drei weit verbreitete Ansätze: „raditional packed filter“, „stateful packet filter“ und „proxy based firewalls“. Auf den folgenden Seiten wollen wir die einzelnen Technologien kurz erklären und deren Vor und Nachteile aufzeigen

 

2      Typen von Firewalls

 

2.1    Traditional Packet Filters

 

Wie der Name schon sagt, liegt hier der Focus auf den einzelnen Datenpaketen. Wobei sich die entscheidung auf die Header Information und die Richtung jedes Datenpaktes beschränkt. Anhand dieser Informationen entscheiden einzelne Regeln darüber ob ein Packet passieren darf oder auch nicht. Dabei werden explizit folgende Informationen Bewertet:

  • Source-IP Adresse: Diese Information über die Herkunfts-IP ermöglich die Unterscheidung ob es diesem Absender überhaupt erlaubt werden soll, ein Paket in das geschützte Netzwerk zu schicken.
  • Source TCP/UDP port: Von welchem Port des Absenders wurde das Paket abgeschickt, beschreibt dieser Port einen bestimmten Service.
  • Destination-IP Adresse: Diese Feld des Headers beschreibt den gewünschten Empfänger im Netzwerk. Dadurch ist es dem Filter möglich zu entscheiden, ob der Empfänger überhaupt dieses Paket erwartet.
  • Destination TCP/UDP: An welchen Port des Empfängers soll das Paket gehen. In der RFC 1700 sind die Well kown Ports beschrieben, dadurch lässt sich spezifiziern ob dieses Paket überhaupt dem Service entspricht der einem bestimmten Port zugeordnet ist.
  • TCP code bit: Wird im Header in diesem Bereich ein  SYN bit gesetzt handelt es sich um eine Initialisierung ein Verbindung, besteht es hingegen aus einem ACK bit, so kann von einer bestehenden Verbindung ausgegangen werden. Diese Information ist sehr wichtig für eine Paket basierte Firewall, da diese viel Erkenntnis darüber zulässt ob ein Paket angenommen oder verweigert wird. Im Gegensatz zu TCP unterstütz das UDP Protokoll diese Information leider nicht, da dieses bei der Verbindungserstellung und Aufrechterhaltung weniger restriktiv ist.
  • Protokol in use: Soll ein bestimmtes Protokoll im Netzwerk erlaubt sein und ein anderes hingen nicht erlaubt ist. Als Beispiel, es kann möglich sein, dass das TCP Protokoll den Filter passieren darf, hingegen das UDP Protokoll abgelehnt wird.
  • Dicection: In welche Richtung wird ein Paket gesendet. Verlässt es das Netzwerk oder will es in das Netzwerk gelangen. Auch auf diese Weise kann entschieden werden ob ein Paket passieren darf oder auch nicht.
  • Interface: Stammt das Packet aus einem sicheren Netzwerk oder auch einem unsicheren. Anhand des Interfaces kann entschieden werden ob ein Paket zugelassen wird oder abgewiesen.

Bei diesen Paket basierenden Filter, welche in Router oder Firewalls implementiert sind, werden diese Vorgaben in einzelnen Regeln festgelegt. Für jede Regel eine einzelne Zeile, wobei diese gesammelten Regel auch als access control lists (ACL) bezeichnet werden.

Dabei setzt jeder Entwickler auf seinen eigenen Syntax um diese Regeln zu spezifizieren. Teilweise werden auch grafische Interfaces zur Verfügung gestellt um diese einzelnen Regeln zu verifizieren.

Um einen Überblick zu erhalten haben wir in einer abstrakteren Art eine solche ACL beschrieben, welche natürlich sehr einfach gehalten ist und keineswegs ausreichend Möglichkeiten und Schutz bietet.

 

Action

Source

Adress

Destination

Adress

Protocol

Source

Port

Destination

Port

Code

Bit

Allow

Inside

Network

Adress

Outside

Network

Adress

TCP

Any

80

Any

Allow

Outside

Network

Adress

Inside

Network

Adress

TCP

80

>1023

ACK

Deny

All

All

All

All

All

All

Abbildung 3 - Regel für Standard Packet Filter

 

Um nun diese Regel zu verstehen bedarf es einer kurzen Erklärung. Die Regeln werden jeweils von oben nach unten abgearbeitet. Um nun über ein Paket zu entscheiden wird es mit den erstellten Regeln verglichen und je nach Action damit verfahren.

Die erste Regel erlaubt es zum Beispiel den Usern innerhalb des Netzwerkes auf alle IP’s außerhalb zuzugreifen, wenn dies über das TCP Protokoll geschied und der Empfänger die Nachricht auf Port 80 akzeptiert: In diesem Fall sind das externe Webserver laut (RFC 1700).

Die zweite Regel wiederum erlaubt es allen außenstehenden Webservern ein Paket in das Netzwerk zu schicken. Wobei es sich um eine bereits bestehende Verbindung handeln muss, welche ein ACK bit enthält und der Absender auf Port 80 und der Empfänger auf Port größer 1023 liegen muss. In diesem Fall kann es nur eine Antwort auf eine vorige Anfrage eines Users im internen Netzwerk sein.

Die dritte und letzte Regel ist auch die einfachste: verbietet alles was nicht obern explizit erlaubt ist. Diese Regel ist somit eigentlich selbsterklärend.

 

Nun kann man aber auch einige schwächen des Paket basierten Filterns erkennen, zum Beispiel ist in Regel zwei die einzige Einschränkung die verhindert das ein beliebiges Paket in das geschützte Netzwerk eindringe kann diese ACK bit welches bestätigt, dass es sich um die Antwort auf eine im Netzwerk gestellte Anfrage handelt. Dieses ACK bit kann aber sehr leicht vom Absender gefälscht werden, und schon hat er Zugang über alle Ports größer 1023. Ein weiteres Problem ist der Umgang mit dem UDP Protokoll, dieses ist zwar explizit bei diesem Beispiel verboten, aber in der Praxis ist das nicht immer möglich. Und wie wir weiter oben schon festgehalten haben, bietet das UDP Protokoll keine Alternative zum ACK bit.

 

Natürlich hat diese Art der Unterscheidung auch einen wesentlichen Vorteil. Durch die einfache Umsetzung des Filterns ist es einfach eine Entscheidung über ein Paket zu treffen. Es muss nur jedes einzelne Paket nach den einzelnen Regeln bewertet werden, was sehr ressourcensparend ist und somit auch sehr schnell ist.

 

2.2    Stateful Packet Filters

 

Die Stateful Packet Filtering Technologie kann als eine Art Erweiterung des traditionellen Packet filtern gesehen werden. Hier werden die bekannten schwächen aufgegriffen und versucht zu beseitigen. Dazu ist die Idee, dass bei einer Stateful nicht nur das Augenblickliche Paket betrachtet wird sonder vorangegangene Entscheidungen und somit der Entstandene Verkehr abgespeichert ist, natürlich im eingeschränkten Maße. Das heißt, es wird versucht das Hauptaugenmerk eher weg vom einzelnen Paket zu bekommen hin zu einer Sicht die eine ganze Verbindung mit einbezieht. Um dies umzusetzen werden einige Daten über verschiedene Verbindungen abgespeichert.

 

Source

Adresse

Destination

Adresse

Source

Port

Destination

Port

Timeout

(sek.)

10.1.1.20

10.34.12.11

2341

80

60

10.1.1.34

10.22.11.45

32141

80

40

Abbildung 4 -Aktive Verbindung Statefule Packet Filter

 

Diese Tabelle zeigt nun von allen aktiven Verbindungen die nötigen Informationen an.

Durch diese Daten über aktive Verbindungen ist es möglich über eine Paket zu entscheiden und man ist nicht mehr auf das TCP code bit angewiesen. Diese Daten zeigen nun an, dass ein Absender im Netzwerk ein Paket an ein Empfänger geschickt hat, sendet nun dieser die Antwort kann unabhängig von ACK bit entschieden werden, das dies eine autorisierte Antwort ist und Zugang zum gewünschten Empfänger erhält. Dabei beschreibt die Spaltet Timeout innerhalb welcher Zeitspanne eine Antwort erfolgen muss, wobei dieser Wert standardmäßig zwischen 10 und 90 Sekunden liegt.

 

Durch diese Erweiterung ergeben sich nun verschiedenste positive Möglichkeiten. Wenn ein Angreifer nun versuchen würde ein Paket mit einem gefälschten ACK bit in das Netzwerk zu schleusen würde dies hier auffallen, da keine Daten über eine Initialisierte Verbindung vorhanden sind und somit keine Notwendigkeit für dieses Paket besteht. Ein weiterer positiver Punkt ist die Überwachung von Datenübertragungen über das UDP Protokoll. In diesem Protokoll gibt es keine Möglichkeit zu überprüfen, ob dieses Paket die Antwort auf eine Anfrage aus dem gesicherten Netzwerk ist. Durch die Methode des stateful filtern kann aber auch im UDP diese Unsicherheit geklärt werden. Den auch jedes eingehende UDP Verbindung hat eine vorangegangene Anforderung abgesetzt, welche in der Tabelle der aktuellen Verbindungen aufscheint.

 

Natürlich hat diese Art der Umsetzung auch einen Nachteil. Da es nötig ist Daten abzuspeichern und jedes Paket mit diesen zusätzlichen Angaben verglichen werden muss, kommt es zu einigem verringerten Datendurchsatz oder es müssen mehr Ressourcen auf diesen Bereich verwendet werden.

 </