Firewall - Teil 1

Einführung

Dieses Dokument behandelt die Einrichtung einer Paketfilter Firewall unter dem Betriebsystem Linux.
Nach einer kurzen Einführung und der Erklärung wichtiger Begriffe folgt ein Überblick über mögliche Angriffe. In den weiteren Kapiteln folgt die Einrichtung der Firewall sowie weiterer Sicherheitsvorkehrungen.
 

Was ist eine Firewall ?

Das Wort "Firewall" stammt aus der englischen Sprache und bedeutet "Feuerwand". Diese Feuerwand ist eine Struktur, die die Ausbreitung eines Feuers verhindern soll.1
Gebäude haben Firewalls, die verschiedene Bereiche des Gebäudes komplett voneinander trennen. In einem Auto übernimmt die Metallplatte, welche den Motor von der Passagierkabine trennt, die Aufgaben einer Firewall.
In der Informatik wird Firewall als Bezeichnung für einen Computer benutzt, der die Schnittstelle zwischen Computernetzen darstellt, und gleichzeitig bestimmte Bereiche der Computernetze vor Angriffen und unerwünschten Zugriffen schützt.2
 

Warum wird eine Firewall benötigt ?3

Die Zeiten, in denen Viren, die offline per herkömmlichen Datenträgern eingeschleppt wurden, die einzige Bedrohung für Computer darstellte, sind vorbei.

Durch die zunehmende Vernetzung von Firmen, Privathaushalten, Schulen, anderen öffentlichen Einrichtungen, und deren Anbindung an das Internet, müssen diese lokalen Netze vor Angriffe aus dem Internet, geschützt werden. Doch auch Angriffe aus dem eigenen Netz sind keine Seltenheit. Der Angreifer sitzt häufig in den eigenen Reihen.

Ohne eine Firewall bemerken die Netzadministratoren die Einbrüche durch Angreifer aus anderen Netzen oder dem Internet oftmals nicht.

Eine Firewall kann jedoch nur vor Angriffen schützen, wenn sämtlicher Datentransfer über die Firewall läuft. Die Firewall muß als Schnittstelle zwischen den angrenzenden Netzen dienen. Ist es dem Angreifer möglich, den Firewallrechner zu umgehen, so hat diese Ihr Ziel verfehlt, da sie keinen ausreichenden Schutz darstellt.

Beim Betrieb einer Firewall muß die gesamte Sicherheitsphilosophie beachtet werden. Eine Firewall ist nur ein Glied in einer Kette von Sicherheitsvorkehrungen, und bietet allein noch keinen ausreichenden Schutz vor Angriffen.4
 

Aufgaben einer Firewall5

Eine Firewall soll heutzutage eine Vielzahl von Aufgaben wahrnehmen, von denen der Schutz des lokalen Netzes die Wichtigste, aber bei weitem nicht die Einzige ist.
Folgende Liste erhebt keinen Anspruch auf Vollständigkeit:
Eine Firewall soll
 

Arten von Firewalls

Man unterscheidet folgende Firewalltypen:

Paketfilter Firewall
Sie ist das Thema dieses Dokuments. Eine Paketfilter Firewall analysiert den gesamten Datenverkehr im Netzwerk über die Informationen im Header eines jeden Paketes. An Hand von aufgestellten Regeln (was darf sein, was nicht) wird entschieden, ob das Paket seinen Weg fortsetzen darf, oder ob es geblockt wird.

Proxy Firewall
Ein Proxy wird genutzt, um ausgehenden Datenverkehr zu überwachen. Alle Verbindungen werden protokolliert. So ist es jederzeit möglich zu prüfen, was für Verbindungen zu einem bestimmten Zeitpunkt aktiv waren und von welcher Quelle diese Verbindungen ausgelöst wurden. Zusätzlich bieten viele Proxies die Möglichkeit, Daten zwischenzuspeichern), um Übertragungsvolumen zu sparen und den Zugriff auf die Daten zu beschleunigen. Alle Daten eines per Proxy angebotenen Dienstes werden an eine Applikation auf dem Firewallrechner weitergeleitet, die dann die Verbindung zum Ziel übernimmt. So bleiben die eigentlichen Quellen der Kommunikation geschützt im Verborgenen. Alle Anfragen scheinen vom Proxyserver zu kommen.

Auf diese Art von Firewall (auch Application Level Gateway genannt) soll in diesem Dokument nicht näher eingegangen werden.Grundlegende Begriffe und Mechanismen

IP-Adresse

Jeder Rechner, der an das Internet angeschlossen ist, erhält eine weltweit eindeutige Kennung, die Internet Protokoll Adresse, kurz IP-Adresse.
Die IP-Adresse ist eine 32bit breite Binärzahl. Die einzelnen Bytes werden durch einen Punkt getrennt. Die vorderen Bits bezeichnen das Subnetz, in dem sich der Rechner befindet. Die restlichen Bits unterscheiden die einzelnen Rechner innerhalb dieses Subnetzes.8
Damit lassen sich in der aktuellen Version des Internet Protokolls (Ipv4) 2 hoch 32, also 4,294967296 Milliarden Rechner eindeutig bestimmen. Allerdings steht nicht der gesamte IP-Adreßbereich zur Verfügung, da einige Bereiche für andere Zwecke reserviert sind:
  Dieser Adreßbereich reicht von 10.0.0.0 bis 10.255.255.255 und ist für lokale Netze reserviert. Dieser Adreßbereich reicht von 172.16.0.0 bis 172.31.255.255 und ist ebenfalls für lokale Netze reserviert. Ein weiterer Bereich für lokale Netze, der von 192.168.0.0 bis 192.168.255.255 geht.9 Dieser IP-Adreßbereich ist für Multicast-Anwendungen reserviert. Dabei handelt es sich um Audio- oder Videoanwendungen mit einer Quelle und vielen Empfängern. Der reservierte Bereich reicht von 224.0.0.0 bis 239.255.255.255.10 Hierbei handelt es sich um einen Bereich, der für zukünftige und experimentelle Zwecke freigehalten wird. Er erstreckt sich von 240.0.0.0 bis 247.255.255.255.11

Es gibt noch einige weitere Blöcke, die von der IANA, Internet Assigned Numbers Authority, reserviert sind.12
 

Netzmaske

Durch die Netzmaske ist festgelegt, wie viele Bits einer IP-Adresse das Subnetz bilden. Jedes Subnetzbit erhält eine Eins, jedes Hostbit eine Null. Eine Netzmaske wird wie eine IP-Adresse durch vier Bytes angegeben: 255.255.255.0 beispielsweise bedeutet, daß die ersten 24 Bit der IP-Adresse dem Subnetz zuzuordnen sind, während die letzten 8 Bit die einzelnen Rechner im Subnetz unterscheiden. Neben dieser Schreibweise ist es auch sehr verbreitet, die Netzmaske als Anzahl der Subnetz-Bits anzugeben. Bei einer IP-Adresse wie 192.168.1.15/24 beispielsweise stehen die ersten 24 Bits für das Subnetz und die letzten 8 Bits kennzeichnen den Host.13
 

Router

Router haben die Aufgabe Netzwerkpakete weiterzuleiten. Ein IP-Paket erreicht sein Ziel über eine Reihe von Routern, die das Paket an einem Netzwerkinterface entgegennehmen und nach den Angaben ihrer Routertabellen an ein anderes Interface weiterleiten.14
 

Quality of Service

Jedes IP-Paket enthält ein Feld, daß die Priorität des Pakets angibt, das sogenannte Quality of Service Feld (abgekürzt QoS). Erreichen einen Router mehr Pakete als er gleichzeitig verarbeiten kann, wird die Verarbeitungsreihenfolge durch Hilfe dieses QoS-Feldes festgelegt: Als erstes werden Pakete mit hoher Priorität abgearbeitet, dann folgen die niedrigeren Prioritäten. Das QoS-Feld eines Pakets kann modifiziert werden, so lassen sich z.B. bestimmte Pakete bevorzugt behandeln.15

NAT - Masquerading

Haben die Rechner des eigenen Netzes nicht registrierte IP-Adressen (aus einem der für lokale Netze reservierten Klasse A,B oder C), sind direkte Verbindungen ins Internet nicht möglich, da diese von den Routern nicht weitergeleitet werden.

Diese nur lokal gültigen Adressen müssen also durch offizielle IP-Adressen ersetzt werden. Dieser Vorgang nennt sich Network Adress Translation (NAT) oder Masquerading.16

Hier ersetzt der Rechner mit der Verbindung ins Internet alle ankommenden Pakete aus dem LAN mit seiner eigenen, gültigen IP-Adresse. Informationen über die einzelnen maskierten Verbindungen werden in Routingtabellen gespeichert, um anschließend ankommende Pakete, die für das interne Netz bestimmt sind (von aus dem LAN initiierten Verbindungen), wieder zu demaskieren.

Während beim normalen NAT m lokale Adressen auf n offizielle maskiert werden (m:n Zuordnung) ist das Masquerading ein Sonderfall von NAT. Hier werden alle lokalen Adressen auf eine gültige IP-Adresse maskiert (m:1 Zuordnung).

Die Vorteile von NAT:
 


 

Ports

Viele Server im Internet bieten gleichzeitig mehrere Netzwerkdienste an. Erreicht
ein Datenpaket den Server, muß dieser herausfinden, für welchen Dienst die Daten bestimmt sind. Dies erreicht man durch den Einsatz von Ports. Jedem Netzwerkdienst ist ein spezieller Port zugeordnet.17

Hier nun einige wichtige Portnummern:

Ports mit Nummer unter 1024 werden als privilegierte Ports bezeichnet. Diese Ports werden von den verschiedenen Servern benutzt. Die Server warten hier auf Verbindungen aus dem Netz.
Ports zwischen 1024 und 65535 werden als unprivilegierte Ports bezeichnet. Sie werden von Clients für Verbindungen genutzt.

Zusätzlich sind Ports zwischen 1024 und 49151 von der IANA registriert.
Sie können entweder als normale unprivilegierte Ports benutzt werden, oder hier läuft ein bestimmter Dienst, wie z.B. das X-Windows System, die grafische Benutzeroberfläche unter Linux. Die ursprüngliche Idee war, auf diesen höheren Ports Dienste laufen zu lassen, die nicht über root-Privilegien verfügen.18
 

Port Mapping

Port Mapping um eigene Netzwerkdienste hinter einer Firewall zur Verfügung zu stellen. Alle auf der Firewall eingehenden Anfragen auf einen bestimmten Port werden an einen bestimmten Rechner im LAN weitergereicht (deswegen auch Port Forwarding). Beispielsweise werden alle auf der Firewall eingehenden Pakete auf dem Port 80 an den Webserver im lokalen Netz weitergeleitet, alle Pakete auf Port 110 gehen auf den POP3 Mailserver, der sich ebenfalls im LAN befindet. Die Server im LAN genießen so einen zusätzlichen Schutz.19

Durch Port Mapping lassen sich auch transparente Proxies realisieren.20
 

Proxy

Ein Proxy ist ein Rechner, der für einen Client eine Verbindung zu einem bestimmten Dienst aufbaut. Proxies existieren für unterschiedliche Dienste, wie z.B. HTTP und FTP. Die Daten werden vom Proxy angefordert und an den Client weitergereicht. Dadurch bleibt der Client im Verborgenen. Sämtliche Anfragen scheinen vom Proxyserver zu kommen. Zusätzlich dient ein Proxy als großer Zwischenspeicher: Daten, die von Clients angefordert werden und bereits auf dem Proxy liegen, müssen von diesem nicht noch einmal angefordert werden. Dadurch kann die Geschwindigkeit der Übertragung gesteigert werden.
Viele Internetprovider bieten ihren Kunden einen eigenen Proxyserver für FTP und HTTP an.21
 

IP Pakete22

Das IP Protokoll definiert eine Nachricht, die zwischen zwei Computern im Netzwerk gesendet wird. Eine solche Nachricht wird Paket genannt. Ein Paket ist also eine einzelne Nachricht, die im Netz gesendet wird.
Ein IP Paket besteht aus einem Paketkopf (message header) und dem Nachrichtenkörper (message body). Der Körper enthält die eigentlichen Daten, die ausgetauscht werden.

In den nächsten Kapiteln werden die einzelnen Protokolle erklärt.
 

ICMP Internet Control Message Protocol

ICMP Pakete werden zu Kontrollzwecken und für Statusmeldungen benutzt. Sie werden lediglich zwischen zwei Computern ausgetauscht, nicht zwischen Diensten, die auf dem Computer laufen.

Der Header enthält


 

UDP User Datagramm Protocol

UDP Pakete werden zwischen zwei Netzwerkdiensten ausgetauscht. Bei UDP Paketen gibt es keine Benachrichtigung darüber, ob ein Paket erfolgreich empfangen wurde. UDP ist also ein verbindungsloses Protokoll, und damit ist nicht sichergestellt, daß ein UDP Paket sein Ziel erreicht. Dies läßt sich am Besten mit dem Versand einer Postkarte vergleichen. Auch hier ist nicht sichergestellt, daß diese auch jemals ihr Ziel erreicht. Der daraus entstehende Vorteil ist, daß UDP Pakete um ein vielfaches schneller sind als TCP Pakete.

Der Header enthält:


 

TCP Transmission ControlProtocol

TCP ist das am meisten genutzte Protokoll für Netzwerkdienste, da bei TCP eine Verbindung zwischen den Computern während der gesamten Dauer des Datenaustausches sichergestellt ist. Für jedes empfangene TCP Paket wird eine Empfangsbestätigung an den Absender geschickt. So werden Übertragungsfehler, verlorene Datenpakete oder Duplikate erfolgreich vermieden.
Der Header enthält
 
 

Eine TCP Verbindung läßt sich am Besten mit einem Telefongespräch vergleichen. Eine Verbindung zum Informationsaustausch ist hier sichergestellt. Kommen am anderen Ende der Leitung nicht alle gewünschten Informationen an (z.B. durch Rauschen in der Leitung) wird einfach erneut um diese gebeten.
 

Der TCP Verbindungsaufbau

Der Verbindungsaufbau bei TCP läuft in folgenden Schritten ab:

1) Ein Webserver läuft auf einem Computer im Internet und wartet auf Verbindungen auf dem TCP-Port 80. Ein Benutzer greift auf den Webserver zu, in dem er eine Webseite dieses Servers abruft. Er gibt dazu die URL23 in seinen Browser ein. Die URL wird durch einen Nameserver in die IP Adresse des Hosts aufgelöst. Der Browser belegt nun einen unprivilegierten Port, z.B. 24000, und sendet eine Verbindungsanfrage an den Webserver. Dieses TCP Paket hat z.B. folgenden Header:
 

Protokoll: TCP
Quelladresse: 114.115.12.11
Quellport: 24000
Zieladresse: 195.20.202.1
Zielport: 80
Flags: SYN (connection synchronization request)
 

Das SYN Flag wird immer bei einem Verbindungsaufbau gesendet. Diesem SYN Flag folgt eine Synchronisations Sequenz Nummer, die vom Client vergeben wird (hier beispielsweise 14000).

2) Der Webserver empfängt das Paket des Clients. Er antwortet auf das SYN Flag mit einer Bestätigung, dem ACK Flag. Der Server teilt dem Client dadurch mit, daß er seine Verbindungsanfrage empfangen hat. Diesem ACK Flag folgt die Synchronisations Sequenz Nummer des Clients, die vom Server um eins erhöht wurde (14001). Außerdem sendet der Server nun ein weiteres SYN Flag, mit dem er ebenfalls einen Verbindungsaufbau bekanntgeben will. Der Server gibt diesem Flag seine eigene Synchronisations Sequenz Nummer (z.B. 34008). Die Verbindung ist nun halb geöffnet.

Dies ist der Header des vom Server zurückgesendeten TCP Pakets:
 

Protokoll: TCP
Quelladresse: 195.20.202.1
Quellport: 80
Zieladresse: 114.115.12.11
Zielport: 24000
Flags: ACK (acknowledgement), SYN (connection synchronization request)
Der Client Rechner empfängt das Paket des Servers und antwortet auf das SYN Flag des Servers mit einem ACK Flag und einer um eins erhöhten Synchtonisations Sequenz Nummer, die dem Flag vom Server zugewiesen wurde (34009). Von nun an werden keine weiteren SYN Flags mehr benötigt, die Server verständigen sich nur noch über ACK Flags.

Der Header des vom Client gesendeten Pakets:

Protokoll: TCP
Quelladresse: 114.115.12.11
Quellport: 24000
Zieladresse: 195.20.202.1
Zielport: 80
Flags: ACK

Die beiden Flags SYN und ACK sind sehr wichtig für das Aufsetzen einer Firewall. Das SYN Flag wird gesetzt, wenn ein Client und ein Server die ersten beiden Pakete beim Verbindungsaufbau austauschen. Alle weiteren Pakete haben nur das ACK Flag gesetzt.
Beim Beenden einer Verbindung gibt es noch weitere Flags, die jedoch für eine Paketfilter Firewall nicht zur Auswertung zur Verfügung stehen und deshalb nicht von Interesse sind.
 
 

Verweise im Text
1 Vgl. Grennan, Mark. Firewall and Proxy Server HOWTO, S.5
2 Vgl. Stähle, Samuel. Firewalling unter Linux, S.2
3 Vgl. Stähle, Samuel. Firewalling unter Linux, S.2
   Vgl. Bernard, Frank. Brandschutz 2.2, S.86
4 Weitere Maßnahmen werden in Kapitel 5 vorgestellt
5 Vgl. Bernard, Frank. Brandschutz 2.2, S.86
6 Siehe Kapitel 2.5 NAT - Masquerading
7 Weitere Informationen zu Application Level Gateways finden sich auf folgenden Webseiten:
   http://www.informatik.uni-halle.de/~rauber/firewalls_dir/uhlig/anwen_ag.htm
   http://www.genua.de/sicherheit/broschuere-97/node18.html
8 Vgl. Diedrich, Oliver; Lubitz, Holger. Sichere Reise - Ein Firewall mit Linux, S.154f
9 Vgl. Request for Comments (RFC) 1918, http://www.denic.de
10 Vgl. ftp://venera.isi.edu/in-notes/iana/assignments/multicast-addresses
   Vgl. Request for Comments (RFC) 1112, http://www.faqs.org
11 Vgl. Request for Comments (RFC) 1812, http://www.faqs.org
12 Siehe Kapitel 4.7.9 IP Spoofing: IANA Adreßbereiche
13 Vgl. Diedrich, Oliver; Lubitz, Holger. Sichere Reise - Ein Firewall mit Linux, S.154f
14 Vgl. Emmrich, Henning. Netzwerk in Ketten, S.194f
15 Vgl. Emmrich, Henning. Netzwerk in Ketten, S.194f
16 Vgl. Emmrich, Henning. Netzwerk in Ketten, S.194f
17 Vgl. Ziegler, Robert. Linux Firewalls, S.718 Vgl. Ziegler, Robert. Linux Firewalls, S.7
19 Vgl. Emmrich, Henning. Netzwerk in Ketten, S.194f
20 Vgl. Stähle, Samuel. Firewalling unter Linux, S.6f
21 Vgl. Kofler, Michael. Linux - Installation Konfiguration Anwendung, S367f und S.387f
22 Vgl. Ziegler, Robert. Linux Firewalls, S.9f
23 URL steht für "Uniform Ressource Locator", z.B. http://www.pro-linux.de
Feedback ist wichtig für die Verbesserung des Service
Autor: Felix Mack
Datum: 20. November 2000 - Pro-Linux.de