| ||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Einführung | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Der Firewall-Versuch kann als Fortsetzung des vorangegangenen Versuchstages angesehen werden.
Die Einführung und die Theorie-Fragen geben einen Einblick in die Themen Firewall und Sicherheit.
Im Praxisteil werden Sie sich - am Beispiel von Netfilter/iptables - mit der Konfiguration eines
Paket-Filters vertraut machen. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Diejenigen Studenten, die iptables oder seinen Vorgänger ipchains
schon verwendet haben, werden die Versuche ebenso schnell lösen können, wie das beireits bei der
Netzkonfiguration der Fall war. Alle anderen sollten sich vor dem Versuchstag
mit der Architektur von iptables vertraut machen (z.B. mittels der
iptables manpage). Denn nur bei ausreichender Vorbereitung sind die Aufgaben in moderater
Zeit zu lösen. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EINLEITUNG | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Der Zusammenschluß verschiedener Netze, insbesondere der Anschluß an das Internet, ist mit
Sicherheitsrisiken verbunden. Zum Schutze privater oder behördeninterner Netzes werden Firewalls
eingesetzt. In einem Gebäude dient eine Brandmauer (Firewall) dazu, das Übergreifen eines Feuers auf
andere Gebäudeteile zu verhindern. Eine Internet-Firewall verfolgt im Prinzip ein ähnliches Ziel:
Sie soll verhindern, dass die Gefahren des Internets auf das interne Netz übergreifen. Aber auch
innerhalb eines Firmennetzes können Firewalls nützliche Dienst leisten.
Hier werden Sie häufig eingesetzt, um einzelne Abteilungen voneinander abzugrenzen. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Im Szenario des Praktikums ist eine Firewall ein Gerät, welches die einzige physische
Verbindung zwischen einem privaten Netz und einem öffentlichen Netz darstellt und gegenüber
"dahergelaufenen" IP-Paketen als eine als "mürrischer Türsteher" fungiert. Die Firewall ist
- natürlich - sowohl mit dem privaten Netz als auch mit dem öffentliche Netz verbunden. Hierbei
ist von entscheidender Wichtigkeit, dass keine vergessenen "Hintereingänge" existieren, die
das private und das öffentlich Netze verbinden und hierbei an der Firewall vorbeiführen.
[gren96] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SICHERHEITSPOLITIK | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Die Installation einer Firewall sollte in Verbindung mit einer Sicherheitspolitik
stehen. Die Sicherheitspolitik ist vorab zu definieren, um die Rahmenbedingungen der Sicherheit
im Netz festzulegen. Es muß darauf geachtet werden, dass die Benutzer in den Rahmen der Sicherheitspolitik
eingebunden werden. Dienste die von der Sicherheitspolitik ausgeschlossen werden, sollten auf eine
dem Benutzer verständliche Art und Weise begründet werden. Auch ist es wichtig, dass der Benutzer die
Sicherheitsproblematik erkennt und somit den Einsatz von Sicherheitsmaßnahmen akzeptiert. Im Idealfall
gilt es eine Benutzerordnung zu erstellen. Diese sollte allerdings nicht aus Ver-
und Geboten sondern - wie bereits erwähnt - aus Informationen für die Benutzung
bestehen. Für eine Sicherheitspolitik sind mindestens folgende Fragen zu beantworten
(siehe auch [fuhr98]):
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GRUNDSÄTZLICHE HINWEISE | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Alle Rechner im Intranet müssen, um aus dem zu schützenden Netz auf das Internet zuzugreifen,
die Firewall als Gateway benutzen. Ist diese Voraussetzung nicht gegeben, kann,
je nachdem welche Dienste von diesem Rechner angeboten werden, die Sicherheit des gesamten Intranets
ausgehebelt werden. Man sollte deshalb alle ISDN-Geräte und Modems aus den Rechnern soweit als möglich
entfernen. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Auch wenn eine Firewall einsetzt wird, sollte man trotzdem die Sicherheit der lokalen Rechner
nicht aus dem Auge verlieren. Je mehr Hürden ein Angreifer zu überwinden hat, desto eher wird er vor
Erreichen seines Ziels aufgeben oder bemerkt [died98]. Auch die Möglichkeit, dass ein
Angreifer von innen kommt, ist nicht außer acht zu lassen. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
VORGEHENSWEISE | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Als erstes werden alle nicht benötigten Netz- und Systemdienste deaktiviert.
Auf einem Firewallrechner sollten keine zusätzlichen Dienste angeboten werden, da jeder
zusätzliche Dienst, wiederum Sicherheitslücken aufweisen kann. Handelt es sich um eine
Softwarelösung, sollte der Rechner als Minimalsystem ausgelegt sein (z.B. ohne graphische
Oberfälche). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bei der Konfiguration der Firewall selbst gibt es zwei grundsätzlich unterschiedliche
Vorgehensweisen. Zum einen die optimistische Vorgehensweise. Hierbei werden
zunächst alle Dienst freigeschaltet und anschließend wird versucht, diejenigen Dienste, die
eine Sicherheitsrisiko darstellen, abzuschalten. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Diesem optimitischen Ansatz steht der sog. pessimistische
gegenüber; i.e. alles, was nicht ausdrücklich erlaubt ist, ist verboten. Zunächst werden als
sämtliche Dienste abgeschaltet. Anschließend werden nur solche Ports und IP Addressen
freigeschaltet, die für die anzubietenden Dienste zwingend erforderlich sind. Letzteres Vorgehen
hat den Vorteil, dass auch viele bis dato noch unbekannte Sicherheitsrisiken ausgeschlossen
werden und stellt mithin - zumindest soweit es Firewalls betrifft - den einzig richtigen
Ansatz dar. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Firewall-Typen | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Generell unterscheidet man zwei verschiedene Typen von Firewalls. Zum einen die sog.
Paket-Filter und zum anderen die Application Level Firewalls
(auch Proxies genannt). Im Rahmen dieses Versuchstages werden Sie nur Paket-Filter kennenlernen.
Typischerweise werden die beiden Firewalltypen allerdings kombiniert verwendet. Falls Sie zu
dem schönen Themengebiet der Firewalls weitergehendes Interesse aufbauen sollten, so steht Ihnen
mit dem IT-Sicherheitspraktikum eine hervorragende Möglichkeit offen, Ihre einschlägigen Kenntnisse
zu vertiefen. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PAKET FILTER | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ein Paket-Filter Firewall arbeitet typischerweise auf den OSI Schichten 3 und 4.
Die - überaus klar durchkonzipierte - Paket-Filter Firewall 'Netfilter/iptables' bietet
Ihnen überdies Zugriff auf Informationen der MAC-Teilschicht der OSI Schicht 2 (MAC-Adressen).
Die Paket Filter Firewall überprüft alle ankommenden und ausgehenden Protocol Data Units (PDUs),
auf bestimmte Informationen, welche dem jeweiligen Protokollheader entnommen werden.
Der Firewalladministrator hat die Möglichkeit, hierfür spezielle Regeln zu definieren.
Die PDUs werden dann gegenüber diesen Regeln ausgewertet. Eine Regel kann das Passieren
('accept') oder Zurückgeweisen der Pakete durch die Firewall bewirken.
Existiert eine accept-Regel, wird das Paket weitergeroutet. Bei zurückweisenden Regeln
unterscheidet man zwischen 'reject' und 'deny'. Im 'reject' Fall wird eine Meldung an den
Benutzer zurückgegeben (not reachable oder permission denied), im 'deny' Fall wird keine
solche Rückmeldung erzeugt. Um einen Dienst freizuschalten, müssen zwei Regeln pro Interface
eingetragen werden. Das liegt daran, dass die meisten Protokolle bidirektional sind.
Man definiert eine Regel, die den Datenstrom von der Quelle zum Ziel erlaubt und eine
weitere Regel, die den Antwortdatenstrom passieren läßt. Die Abbildungen 1.1,
1.2, 1.3 und 1.4 zeigen
die Protokollheader der im Internetumfeld wichtigsten Protokolle [fuhr98, Seite 137/138].
Die Optionen, nach denen gefiltert werden kann, wurden grau unterlegt.
Übrigens ist auch das Interface, über welches ein IP-Paket eingeht, eine wertvolle Information
für den Paket-Filter. Diese Information ist nämlich absolut fälschungssicher. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BEISPIELKONFIGURATION EINES STATISCHEN PAKETFILTERS | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ein Regelsatz eines statischen Paketfilters, der Telnetsitzungen von dem zu
schützenden Netz aus zu Rechnern im Internet erlaubt, könnte z.B. folgendermaßen
aussehen: Regel A erlaubt, dass aus dem zu schützenden Netz (intern) eine Verbindung
auf Port 23 (Telnet) in Richtung des Zielrechners (out) hergestellt werden darf.
Regel B erlaubt die Kommunikation vom Server zurück zum Client. Regel C resultiert aus
dem pessimistischen Ansatz und verbietet jeden anderen Dienst.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DYNAMISCHE PAKET-FILTER (STATEFUL INSPECTION) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gewöhnliche Paket-Filter Firewalls (statische Paket-Filter) bieten gerade
für TCP/IP eine gute Möglichkeit der Filterung. Schwieriger wird es, möchte man z.B.
das verbindungslose Protokoll UDP filtern. Durch das Fehlen von
Verbindungsstatusinformationen, ist für die Firewall am Header einer ankommenden UDP-
Protocol Data Unit nicht erkennbar, ob es sich um ein Datagramm einer bereits bestehende
Verbindung oder um eine Verbindungsanforderung handelt. Dynamische Paket-Filter
sind eine Weiterentwicklung herkömmlicher Paket-Filter, die genau dieses Problem lösen.
Der dynamische Filter führt über die augenblicklichen Kommunikationsvorgänge
eigenständig Buch (in einer Verbindungsstatustabelle) und ist überdies in der Lage,
seine Filterregeln kurzzeitig zu ändern, um somit bestimmte erwartete
Pakete (und nur diese) die Firewall passieren zu lassen. Für diese Art der Paketfilterung
haben sich die beiden Ausdrücke Stateful Inspection und
Connection Tracking eingebürgert. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FILTERMÖGLICHKEITEN IP | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Der Header einer IP-PDU (Abbildung 1.1) bietet eine Fülle von
Filteroptionen.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FILTERMÖGLICHKEITEN ICMP | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bei ICMP Paketen (Abbildung 1.2) enthält das Typenfeld
die entscheidende Information. Als Typ kann beispielsweise "Echo Request" oder "Echo Reply"
eingetragen sein (siehe auch Tabelle 1–1). Der Paketfilter
iptables ermöglich aber durchaus auch Filterung aufgrund des Inhaltes
des Code-Feldes im ICMP-Header (auch das Code-Feld ist grau zu unterlegen). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FILTERMÖGLICHKEITEN TCP | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Für die Filterung von TCP Paketen (Abbildung 1.3) kommen die Portnummern
und Flags in Frage. Die Portnummer dient als Schnittstelle zur nächsthöheren Schicht. Dabei ist
jedem Dienst eine Portnummer zugeordnet. Bei Unix Systemen wird die Zuordnung über die Datei
/etc/services konfiguriert. Die Tabelle 1–2 zeigt
typische Portnummern von TCP-basierten Diensten. Über die Flags läßt sich beispielsweise bestimmen,
ob es sich um einen Verbindungsaufbau handelt, oder um eine bereits bestehende Verbindung.
Möchte man von außen keinen Zugriff über TCP auf das interne Netz erlauben, muß man nur alle
eingehenden Pakete herausfiltern, die das ACK-Flag nicht gesetzt haben. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FILTERMÖGLICHKEITEN UDP | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
APPLICATION LEVEL FIREWALL | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hierunter versteht man sogenannte Proxy Dienste
(Proxy = Bevollmächtigter). Proxy Dienste kommunizieren stellvertretend für einen
Client mit einem Server außerhalb des Subnetzes. Der Verbindungsaufbau geschieht
in zwei Phasen. Zuerst stellt der Client eine Verbindung zum Proxy Server her.
Dieser entscheidet dann, ob der angeforderte Dienst vom Client am Zielrechner genutzt werden darf.
Ist das der Fall, baut der Proxy Server stellvertretend für den Client eine Verbindung zum
angewählten Server auf. Aus Sicht des Clients ist der Proxy Server der kontaktierte Zielrechner.
Aus Sicht des angewählten Servers spielt der Proxy Server die Rolle des Clients; siehe Abbildung
1.5. Proxy Server arbeiten auf Schicht 7 (Application Layer).
Der Verbindungsaufbau geschieht dabei weitestgehend transparent, so daß der Benutzer davon nichts
mitbekommen sollte. Es werden zwei verschiedene Funktionsweisen unterschieden:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bei den Application Level Firewalls unterscheidet man den Application Level Proxy
und den Circuit Level Proxy. Das Application Level Proxy spricht das Protokoll, für das es
Proxy Dienste leistet. Es kann die Kommandos des Anwendungsprotokolls verstehen und interpretieren.
Application Level Proxies arbeiten häufig mit modifizierten Verfahren. Der Benutzer muß in den
meisten Fällen die Kommunikation nicht explizit mit dem Proxy führen, da dieser ja das Protokoll
spricht und sich aus diesem die erforderlichen Informationen ergeben. Viele Proxy Server bieten
außerdem zusätzliche Funktionalität, wie das Zwischenspeichern von Daten. Diese Daten müssen
dann nicht immer von neuem geholt werden, sondern werden aus dem Cache des Proxies geladen.
Darüber hinaus bieten Sie bessere Protokollierungsmöglichkeiten und Zugangskontrollen.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Circuit Level Proxies arbeiten auf der Sitzungsschicht. Sie sind nicht in der Lage
das Protokoll der Anwendungsschicht zu interpretieren. Ein Circuit Level Proxy kontrolliert
das Handshaking beim Verbindungsaufbau. Erst wenn der Proxy feststellt, daß Client und Server
authorisiert sind, eine Verbindung herzustellen, werden Daten über den Proxy hinweg übertragen.
Die Daten werden dann vom Circuit Level Proxy für die Sitzungsdauer nur noch kopiert und
weitergeleitet. Der Vorteil von Circuit Level Proxies ist, dass sie Dienste für eine Vielzahl
verschiedener Protokolle bieten bzw. an diese angepaßt werden können. Außerdem können mehrere
Anwendungsprotokolle von einem Proxyprozeß verarbeitet werden. Das hat zum einen den Vorteil,
dass man das Risiko fehlerhafter Software verkleinert und zum anderen, dass sich Aufwand und
Fehler bei der Konfiguration verkleinern, da diese nicht mehr für jeden Proxy separat
vorzunehmen ist. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Da Circuit Level Proxies eine Verbindung nur auf Sitzungsschicht auswerten, kann
nicht überprüft werden, welches Anwendungsprotokoll tatsächlich über die Verbindung läuft. Ist eine
Sitzung erst einmal initiiert, kann prinzipiell jedes Anwendungsprotokoll gefahren werden. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Circuit Level Proxies gibt es sowohl mit modifizierten Verfahren (beispielsweise
könnte man beim Aufruf eine Portnummer angeben, über die der Zielhost identifiziert werden kann)
als auch mit angepaßten Clients. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Üblicherweise werden Circuit Level Proxies nicht stand-alone, sondern gebündelt mit
Application Level Proxies angeboten. Nicht jedes Protokoll eignet sich gleichermaßen für einen
Proxy Einsatz. Store and Forward Protokolle eignen sich beispielsweise gut, da die Daten kurzfristig
zwischengespeichert werden. Andere Protokolle eignen sich weniger z.B. talk (Verbindungsaufbau
über UDP, Daten werden über TCP übertragen (siehe [chap96]) oder RPC basierte Dienste
(verwenden oftmals keine festen Portnummern). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Architekturen | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Firewalls lassen sich in beinahe beliebiger Kombination aus den beiden Funktionen
Paket-Filter und Application Gateway zusammenstellen. Als Grundsatz für jede Architektur gilt, dass
die Position der Firewall immer soweit außen wie möglich liegen sollte. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Die einfachste Möglichkeit eines Firewallaufbaus besteht aus einem Packet Filter.
Dieser wird zwischen das Internet und das zu schützende Netz geschaltet. Diese Lösung reicht
für kleine Netze mit einem begrenzten Dienstangebot aus, das zudem nur vom zu schützenden Netz aus
genutzt wird. Packet Filter können auch sinnvoll im Intranet eingesetzt werden, indem Sie einzelne
Teilnetze voneinander trennen. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DUAL-HOMED-APPLICATION-GATEWAY | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Eine Erhöhung der Sicherheit gegenüber einfachen Paketfiltern bietet der Einsatz von
Application Level Proxies, die den Netzverkehr zwischen Internet und dem zu schützenden Netz
kontrollieren (siehe Abbildung 1.6). Ein solcher Rechner
wird mit mindestens zwei Netzschnittstellen ausgestattet (mit mehr als zwei Netzschnittstellen
wird ein solcher Rechner auch als Multi-Homed-Application Gateway bezeichnet. Ist ein Application
Gateway als erster oder einziger Rechner aus dem Internet erreichbar, bezeichnet man ihn auch als
Bastion Host. Eine Auftrennung in mehrere Netzschnittstellen hat den Vorteil,
dass der Netzverkehr nur innerhalb des Subnetzes sichtbar ist und jede Verbindung über den Gateway
geroutet werden muß. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SCREENED SUBNET ARCHITECTURE | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bei dieser Architektur wird zwischen dem zu schützenden Netz und dem Internet zusätzlich
ein weiteres Netz aufgebaut (siehe Abbildung 1.7. Dieses Subnetz
wird in der Literatur häufig als Perimeter Netz, Grenznetz oder DeMilitarised Zone (DMZ) bezeichnet. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bei Verwendung eines Subnetzes baut man eine zusätzliche Sicherungsschicht zwischen dem
Internet und dem zu schützenden Netz auf. Das hat zur Folge, dass im Falle eines Einbruchs in den
Bastion Host, der Eindringling nicht den gesamten Netzverkehr abhören kann, sondern nur den
Netzverkehr im Grenznetz (bei moderneren Netzinfrastrukturen wie Switched Ethernet tritt dieses
Problem nicht mehr auf). Soll das innere Netz erreicht werden, müssen die Daten aus dem Internet
durch das Grenznetz geschickt werden. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Der äußere Router wird häufig dazu benutzt, IP Pakete mit gefälschten Absenderadressen
auszufiltern, indem er Pakete mit Quelladressen des Subnetzes ausfiltert. Außerdem werden alle
Pakete ausgefiltert, die als Ziel nicht den Application Gateway adressieren. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Der innere Router bildet eine zusätzliche Barriere. Er schützt das innere Netz zum
einen vor Angriffen aus dem Internet, zum anderen gegen Angriffe aus dem Grenznetz. Außerdem
sollte der innere Router sicherstellen, dass Dienste, für die ein Application Level Proxy
bereit steht, nur über das Gateway benutzbar sind. Typischerweise ist der innere Router so
konfiguriert, dass nur der Application Level Proxy des Grenznetzes Zugriff auf das zu
schützende Netz erhält. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Das Grenznetz kann neben den Firewallkomponenten noch weitere Rechner enthalten
(z.B. DNS-Server, WWW-Server, ...), die so ebenfalls einen gewissen Schutz erhalten.
Weitere Hinweise zur Positionierung von Diensten im Grenznetz finden Sie in
[fuhr98, Kapitel 5/6] und [chap96, Kapitel 4]. Was bei der Konfiguration eines
Bastion Hosts zu beachten ist, wird detailliert in [chap96, Kapitel 5] erörtert. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Aufgaben zur Theorie | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Theoriefragen zu Netfilter/iptables | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|