4. Aufbau eines Firewallsystems
7. Interne Abläufe
einer Firewall
Jeder möchte heute im Internet mitreden, doch mit dem rassanten Anstieg des Internets stieg auch die Zahl der Angriffe auf Internet-Server. Das Knacken von Passwörtern und Ausnützen der Sicherheitslöcher in Betriebssystemen sind hingänglich bekannt. Doch wie schützt man sich an besten vor solchen Angriffen aus dem Internet?Es gibt zwei Möglichkeiten um den PC zu schützen, entweder man nimmt ihm das Diskettenlauferk,das CD-Rom und alles was ihm eine Verbindung zur Aussenwelt ermöglich weg oder man enscheidet sich für eine Firewall. Was ist aber eine Firewall? Worauf muss ich achten? Was für Angriffsformen sind bekannt? Im folgendem Text werden sie nun über einige Punkte einer Firewall aufgeklärt.
Fakten:
Im Jahr 1998 wurden Einrichtungen des Verdeidigungsministeriums um die 250`000 Mal angegriffen. Zusätzlich dazu waren Testangriffe der DISA(Defense Information System Agency) auf Verdeidigungssystemen verschiedener Firmen zu 65% erfolgreich!
Beispiele:
Im April 1998 gaben Mitglieder des Verdeidigunsministeriums bekannt, das die gestohlene Software DISN der Schlüssel zum amerikanischen Netzwerk der militärischen GPS-Sateliten sei. Die Software wird u.a auch benutzt, um Raketenschläge genau festzulegen.
Im Fall der CIA erlangte ein Cracker am 18. September
1996 die Kontolle über die Website und ersetzte das Eröffnungslogo
in "The Central Stupid Agency".
Systeme können auf verschiedene Art und Weise angegriffen werden. Imfolgenden Abschnitt werden die drei rundlegenden kategorien erläutert.
Einrüche sind wohl die häufigsten Angriffe.Durch Einbrüche können Angreifer fremde Computer für sich nutzen. Die meisten Einbrecher wollen diese Computer dann wie legitime Benutzer verwenden.
Eine Angriffsmethode besteht in der Manipulation von Benutzern. Dabei sucht man den Namen einer leitenden Person heraus und gibt sich bei der Systemverwaltung für diese aus und bittet um die sofortige Änderung des Passwortes um äusserts wichtige Arbeiten zu erledigen.
Eine weitere Methode ist einfaches Raten. Solche Angiffe werden Brute-Force genannt, was etwa soviel heisst wie rohe Gewalt. Ein solcher Angriff wird meist nur von sehr verzweifelten Angreifer gestartet, welche keinen anderen Weg mehr sehen um in das System zu gelangen. Solche Angriffe werden in der Regel schnell aufgedeckt.
Bei dieser Angriffsform handelt es sich um das Lahmlegen eines Dienstes, er ist einzig darauf ausgerichtet, andere an der Benutzung des Computers zu hindern. Solche Angriffe wurden z.B auf den Yahoo-Server oder den Server von E-Bay verübt.
Der Eindringling überlastet ein Sytem oder ein Netzwerk derart mit Nachrichten, Prozessen oder Netzanfragen das keine Effektive Arbeit mehr möglich ist. Ein geschickter Angreifer kann Dienste aber auch deaktivieren, sie umleiten oder sogar ersetzen.
Manchmal sind Angreifer in einer Stellung, in der sie kaum verlieren können. Viele Standort setzen zum z.B Kennungen ein , die nach einer bestimmten Zahl von gescheiterten Logins deaktiviert wird. Dies hindert zwar Angreifer daran, Kennungen solange durchzuversuchen, bis sie die richtige Kennung gefunden haben, aber anderseits kann so auch für den "richtigen" User der Dienst lahmgelegt werden.
Die meisten Informationsdiebe versuchen sich Benutzernamen und Passwörter zu fremden Computern zu verschaffen. Dummerweise sind gerade diese am leichtesten zugänbglichsten Informationen beim Abhöhren eines Netzwerkes. Bei vielen Netzwerkinteraktionen befinden sich der Benutzername und das Passwort am Anfang und können in derselben Form wiederverwendet werden.
Hinzu kommt noch, das die gängigsten Netzwerktopologien wie Ethernet und Tokenring jedes Paket an jeden Rechner geschickt wird, allerding nur von Zielclient angenommen wird. So kann der ganze Netzwerkverkehr mitgehört werden, in dem das man dem Computer nun Befiehl sich diese Daten zu ergattern. Daten, welche über das Internet gesendet werden, durchqueren aber nun zahlreiche solcher lokalen Netzwerke, und jedes dieser Netze kann ein Schwachpunkt darstellen. Service-Provider und allgemein zugängliche Systeme sind beliebte Angriffsziele. Inforamtionsdiebstahl muss nicht unbedingt Spurren hinterlassen, und selbst die darauffolgenden Einbrüche werdem selten entdeckt. Jemand der einbricht, Daten kopiert und ohne etwas zu zerstören wieder verschwindet hat an den meisten Standorten gute Chancen, unentdeckt zu bleiben.
Es gibt verschiedene Möglichkeiten sich vor Inforamtionsdiebstahl zu schützen. Eine gut konfigurierte Firewall schützt vor einem Benutzer der mehr Inforamtionen zu erlangen versucht als man herausgeben möchte.
Bleibt noch anzumerken, dass die meisten Katastrophen nicht durch Bösswilligkeit hervorgerufen werden, sondern Folgen von Unfällen oder dummen Fehlern sind. In einer Studie ( Richard Power, Current and Future Danger: A CSI Primer on Computercrime and Inforamtion Warfare, San Francisco, Computer Security Institute 1995) wird geschätz, dass 55% aller sicherheitsrelevanten Vorfälle durch naive oder schlecht geschulte Benutzer verursacht werden, die Dinge tun, die sie besser nicht tun sollten.
Als Firewall wbezeichnet man den Rechner, der durch geeignete Sicherheitstechniken eine Sicherheitssperre zwischen zwei Netzwerken implementiert. Häufig stellt die Firewall die Verbindung zwischen einem Internen Netz (Intranet) und dem externen Netz (Internet) dar. Es kann aber auch der Fall sein, das ein Teil des Intranets gesondert gesichert werden muss, so kann auch hier eine Firewall zum Einsatz kommen. Die Firewall kontroliert den Zugriff von aussen nach innen und von innen nach aussen; der Zugriff wird auf Grund von bestimmten Regeln überwacht und beschränkt. Dabei ist wichtig, das die Daten die Firewall passieren, die ganze Angelegenheit nützt nichts, wenn z.B ein Computer im Intranet mit einer DFÜ-Verbindung der Zugang zum Internet ermöglicht wird.
3.1 Die Stärken einer Firewall
Wie kann man von den guten Seiten des Internets profitieren, ohne den schlechten zum Opfer zu fallen? Dazu muss der Verkehr zwischen dem eigenen Netz und dem Internet kontrolliert sorgfälltig werden. Die effektivste Lösung stellt eine Firewall dar.
Viele Dienste, die Anwender benötigen, sind von Haus aus unsicher. Die Firewall fungiert als eine Art Wächter für diese Dienste. Sie lässt nur Dienste passieren welche in der Sicherheitspolitik der Firewall erlaubt wurden.
Aber auch eine Firewall hat seine Schattenseiten. Der Aufbau verursacht enorme Kosten und einen sehr hohen Aufwand. Auch gewisse Einschränkungen die eine Firewall mit sich bringt, können für interne Benutzer sehr kästig sein.
Firewalls bieten zwar sehr guten Schutz gegen Bedrohungen von aussen, sind aber keine 100% Sicherheitslösung. Manche Gefahren lassen sich auch mit einer Firewall nicht abwenden.
3.2 Die Schwächen einer Firewall
Eine Firewall verhindert, das ein Benutzer vertrauliche Informationen über die Netzwerkverbindung nach drausen bringt, die gleichen Dateien könnten aber auch auf Disketten, Magnetbändern oder auf Papier hinausgeschmuggelt werden.
Befindet sich der Angreifer bereits im innerhalb der Firewall, so nützt diese überhaupt nichts mehr. Interne benutzer können Daten stehlen, Festplatte und Software beschädigen oder Programme verändern, ohne jemals mit der Firewall in Kontakt zu kommen.
Eine Firewall kann den Verkehr über ihr sehr effektiv kontrollieren, allerdings kann sie mit dem Verkehr, der nicht über sie läuft rein gar nichts anfangen. Technisch versierte Benutzer oder Systemverwalter richten sich manchmal selbst ein Hintertürchen zum Internet ein, weil sie sich über die Einschränkungen der Firewall aufregen. Die irewall ist dagegen machtlos. Es handelt sich hier nicht um ein technisches Problem, sondern um ein Personalproblem.
Eine Firewall wird so geplannt, das sie vor bekannten Gefahren schützen kann. Eine gute Firewall schütz auch vor möglichen zukünftigen Gefahren, in dem sie nur Dienste erlaubt, welche ausdrücklich erlaubt worden sind. Man kann bei der Einrichtung aber nicht davon ausgehen, das sie für immer einen angemessenen Schutz bietet.
Eine Firewall kann aber ein Netz nicht vor Viren schützen. Die meisten Firewalls untersuchen zwar den gesamten Verkehr der eingeht, um festzustellen das die Daten das interne Netz erreichen dürfen. Dabein werden allerdings nur Quell- und Zieladressen sowie Portnummern. Nicht aber den Inhalt der Daten. Die pragamatische Lösung des Virenproblems sind Schutzprogramme auf den einzelnen Rechnern und die Aufklärung der Benutzer über die Gefahren der Viren und über geeignete Vorsichtsmassnahmen.
3.3 Allgemeine Grundprinzipien
Unabhängig von den verwendeten Firewall-Konzepten
gelten einige Grundregeln bei allen Konzepten:
Auf dem Firewall sollten auf gar keinen Fall User-Logins
existieren, sondern lediglich ein Wartungsaccount. Dies vermeidet schon
eine ganze Ladung Probleme.
Auf der Firewall sollten nur die allernotwendigsten
Dienste laufen. Effektiv sollte man bis auf SSH praktisch alle Dienste
abklemmen. Und auch diese SSH sollte nur Verbindungen aus dem inneren Netz
annehmen. Jeder laufende Dienst auf einer Firewall ist ein potentieller
Angriffspunkt.
Falls doch ein Einbruch auf das Firewall-System
erfolgen sollte, so kann man damit den akktuellen Zustand der Firewall
sicher, um in später in Ruhe analysieren zu können. Anschliesslich
plättet man die gesamte Installation (Filesystem neu anlegen) und
spielt das Firewall-System vom obigen Snapshot zurück. Dies reduziert
im worst-case die Ausfallzeiten der Firewall erheblich.
Vieleicht ist das fundamentalste Prinzip für
Sicherheit- und dies nicht nur in Bezug auf Computer und Netze- das der
minimalsten Zugriffsrecheten. Es besagt, das jede Einheit - ob Benutzer,
Verwalter, Programme, System, etc. - gerade so viele Zugriffsrechte erhält,
wie für die Aufgabe notwendig sind. Das Prinziep der minimalem Zugriffsrechte
verkleinert die Angriffsfläche und begrenzt den Schaden, der durch
gezielte Attacken entsteht.
Ein anderes Prinziep der Sicherheit liegt in der
mehrschichtigen Verteidigung. Velassen Sie sich nicht auf einen einzigen
Schutzmechanismus, so überzeugend er auch zu sein scheint. Bauen Sie
stattm dessen mehrere, sich gegenseitig verstärkende Mechanismen.
Eine Passierstelle zwing Angreifer dazu, einen schmalen
Pfad zu benutzen, den Sie sicher überwachen und kontrollieren können.
Im Zusammenhang mit der Netzwerksicherheit stellt die Firewall eine solche
Passierstelle dar, sofern dort die einzige Verbindung zwischen dem internen
Netz und dem externen Netz besteht. Jeder, der das interne Netz betretten
will, muss diesem Pfad folgen. Eine Passierstelle wird aber nutzlos, sobald
es eine wirkungsvolle Möglichkeit gibt, sie zu umgehen.
Als grundlegende Regel für die Sicherheit im
Netz gilt: eine Kette ist nur so stark, wie ihr schwächstes Glied.
Geschickte Angreifer versuchen diese Stelle ausfindig zu machen und richten
ihre ganze Aufmerksamkeit darauf. Man sollte sich der Schwachstellen im
System bewusst sein, um Schritte zur Beseitigung unternehmen zu können.
Ein weiteres Grundlegendes Prinzip für die
Sicherheit im Internet besteht darin, so weit wie nur möglich die
Fehlersicherheit des Systems zu gewährleisten. Das bedeutet, das bei
Auftretten eines Fehlers Angreifern der Zugriff verweigert wird, anstatt
ihnen dadurch den Zugang zu ermöglichen. Dies kann dazu führen,
das berechtige User ebenfalls abgewiessen werden, solange der Fehler nicht
behoben ist. Die meisten hier erörterten Anwendungen reagieren automatisch
fehlersicher. Fällt zum Beispiel ein Router mit Paketfilterung aus,
so gibt er keine Pakete weiter. Wenn ein Proxy abstürtzt, so leistet
er keine Dienste mehr.
Es gibt zwei grundlegende Standpunkte im Hinblick
auf die Sicherheitstrategie. Bei Verwirklichung der einschränkenden
Grundhaltung erlaubt man nur das, was man zulassen will und verbietet alles
andere. So wird alles was unbekannt ist, und gefährlich sein könnte,
verboten.
Der zweite grundlegende Standpunkt ist die freizügige Haltung, diese wird von den Anwendern und Managern bevorzugt und besagt, das alles erlaubt ist, was nicht ausdrücklich verboten wurde. Dies ist zweifellos der unsichere Standpunkt, da es praktisch unmöglich ist, alle Fallstricke in einem System oder dem Internet zu kennen. Es gibt einfach zu viele potentiele Gefahren.
4. Aufbau eines Firewallsystemes
Grundsätzlich gilt:
Eine Firewall verbessert zwar die Sicherheit, ist aber kein 100% Schutz vor Angreifern.
> Sicherheit hat ihren Preis.
Die Sicherung eines Systems ist immer mit Aufwand (materiell, personell, zeitlich,...) verbunden.
> Sicherheit ist selten bequem.
Wer sicher sein will, muss im allgemeinen Abstriche an der Bequemlichkeit machen, weil manche Dinge zwar bequem sind, aber auch zugleich unsicher sind.
Grundsätzlich muss man beim Aufbau einer
Firewall immer Aufwand und Nutzen gegeneinander abwägen.
Eine Paketfilterungsfirewall filtert auf Paketebene,
das heisst sie entscheidet anhand von:
ob ein Paket weitergeleitet wird oder nicht.
In Linux ist seiz 1.3.x der Code für Packetfilterung im Kernel - der
IP firewalling code, der in Zukunft vom IPChains Code abgelöst wird.
Ein Appliaktions Level Gateway setzt auf der High-Level Protokolle (HTTP, FTP, ...) an. Dabei wird der Gateway als Proxy zwischen den Clienten und den eigentlichen Server geschaltet. Der Gateway nimmt Anfragen des Client entgegen und reicht sie, entsprechend seiner Konfiguration, an den eigentlichen Server weiter - oder auch nicht.
Dies ist wohl die aufwendigste Variante. Dabei befinden
sich zwischen zwei Firewall-Systemen eine sogenannte DMZ (DeMilitarisierte
Zone) in der sich die öffentlich erreichbaren Dienste (Webserver,
...) befinden :
Dabei befindet sich in der DMZ alle anch aussen exportierten Systeme (WWW-Server, FTP- Server, Gateways,...). Diese Maschienen werden von Maschienen des inneren Netzes als nicht vertrauenswürdig eingestuft - es könnte ja sein, das jemand in diese Maschienen eingebrochen ist. Die Idee hinter der DMZ ist es, einem potentiellen Angreifer zu einem mehrere Barrieren in den Weg zu stellen, und zum anderen die sensitiven Systeme so weit wie möglich aus seiner Reichweite zu enfernen.
Bis ein Angreifer es in eine Maschiene des internen Netz geschaft hat, muss es mindestens zwei Firewalls und eventuell weitere Maschiene "knacken" - und dabei sollte er wohl einige Alarme auslösen.
Grundsätzlich sollte das Prinzip gelten, es
ist alles verboten, was nicht grundsätzlich erlaubt ist. Es sollten
nur Verbindungen durch die Firewall erlaubt werden, die als sicher betrachtet
werden kann und die auch notwendig erachtet werden, zum Beispiel bei incoming:
Mit Ausnahme von ssh sollten diese Verbindungen
jedoch nur zu den für diese Dienste vorgesehenen Maschienen erlaubt
werden. Bei den outgoing Verbindungen kann man entweder den offenen Ansatz
verfolgen und prinzipiel alles erlauben oder man bleibt auf der Sicherheitsbewussten
Seite und erlaubt nur bestimmte Verbindungen. So ist es zum Beispiel durchaus
üblich, lediglich outgoing http zu erlauben und das auch nur über
einen Proxy.
Während TCP relativ gut zu verfolgen ist, da es sich um ein verbindungsorientiertes Protokol handelt, ist dies bei UDP praktisch nicht möglich, da es bei diesem Paket um ein verbindungslosen Paket handelt. Es ist deshalb durchaus üblich (und sinnvoll) UDP entweder bis Port 53 (DNS) oder auch vollständig beidseitig zu sperren.
Auch wenn dies von einigen Firewall-Admins gemacht wird, so sollte man ICMP durch die Firewall entweder überhaupt nicht oder zumindest nicht vollständig sperren. Es sollten zumindest "fragmenttation needet" und "unreachable" zugelassen werden. Gerade erstes wird dringend für die MTU-Discovery benötigt ohne die die Datenrate katastrophal niedrig werden kann.
Linux 2.2 ipchains ist eine komplette Neuentwicklung des Linux IPv4 Firewall Codes, der hauptsächlich auf den Quellen von BSD 4.4 mit all seinen hervorragenden Eigenschaften beruht. Es ist eine Portierung des ipfw Toolkits, welches aus der Feder von Darren Reed stammt, der auch an der Portierungen auf Solaris 2.5/2.6/2.7 und an den BSD Derivaten NetBSD, OpenBSD und FreeBSD mitgewirkt hat.
6.2 Allgemeine Netzwerksicherheit
Viele Linux-Distributionen haben per default relativ
offene Konfigurationen. Eine der ersten Aktionen nach der Installation
sollte deshalb das Überarbeiten der Netzwerk-Konfiguration sein:
Standartmässig sind dort einige Dienste aktiviert die man besser deaktivieren sollte. Was soll zum Beispiel ein ein offener POP3 oder IMAP Port auf einem Rechner der nicht dedizierter Mailhost ist? Und die r-Dienste sollte man tunlichst deaktivieren, da sie zu grosse Sicherheitslöcher darstellen.
> Benutzen der tcp-wrapper
Sofern dies nicht der Fall ist ( bei aktuellen Distributionen ist dies mittlerweile der Fall) sollte man unbedingt die tcp-wrapper aktivieren. Neben dem Logging erlauben sie eine host-basierte Zugriffssteuerung.
6.3 Ip Chains als
Überwachungstool
Man kann IPChains auch sehr gut zur Netzüberwachung einsetzen. Dazu schaltet man das entsprechende Interface in den promicous mode (wenn es nicht schon ist), definiert entsprechende loggende Überwachungsregeln (ohne Target, nur mit Log-Option) für verdächtige IP-Pakete (z.B. BackOriffice) und findet dann entsprechende Einträge im Syslog vor.
6.4 Pakete über die Firewall routen
Grundlage von IPChains ist das Filtern auf Paketebene.
Dabei durchlaufen die Pakete mehrere Filterebenen. Der Kernel beginnt dabei
mit 3 Regellisten, diese werden als Firewall-Ketten (firewallchains) oder
einfach nur als chains bezeichnet. Diese 3 anfänglichen chains sind
:
Wenn ein Paket, z.B. durch ein Ethernet-Interface,
hereinkommt; so duchläuft es zuerst zwei Tests: einen Prüfsummentest,
um sicherzustellen, dass das Paket unbeschädigt ist, sowie einen Sanity-Test
der verdrehte Pakete, die ansonsten die Filterlogik verwirren könnten,
wegwirft und dies im syslog vormerkt. Erst dann verwendet der Kernel die
Regel input chain um über das weitere Schicksal dieses Paketes zu
entscheiden. Wenn diese Stufe geschaft ist, dann wird anhand von Routingtabellen
über den weiteren Weg des Paketes entschieden. Ist es für eine
Maschiene bestimmt, so wird die forward chain konsultiert. Schliesslich,
bevor es die Maschiene wieder verlässt, werden die Regel der output
chain angewendet.
Jede Kette besteht dabei aus einem Satz Regeln, die das weitere Schicksal des Paketes anhand der Paketheader entscheiden. Wenn keine Regel auf das Paket zutrifft, so testet der Kernel die nächtste Regel in der Kette. Bleib keine Regel mehr zum testen übrig, so wird schliesslich die chain policy befragt.
In den Nachfolgenden Schritten wird aufgezeigt was im Kernel passiert:
Checksum
Die Checksum ist eine Prüfsumme in dem IP- Header, die feststellt, ob ein Paket bei der Übertragung verändert wurde. Stimmt die Prüfsumme nicht, so wird das Paket abgelehnt.
Sanity:
Hier werden die sehr wichtigen Überprüfungen auf Pakete mit besonderen Flags im Header durchgeführt, die eventuell die korrekte Abarbeitung der Firewall-Regeln verhindern könnten. (IP- Fragmente). Falls dieser Fall eintreten sollte, wird eine Nachricht an den SYSLOGD übergeben.
input chain:
Hier werden zum ersten male die Pakete anhand von Filterregeln getestet. Pakete werden hier zurückgewiesen oder verworfen.
Demasquerade:
Hier werden maskierte Pakete, also Pakete, die von einem Host im Intranet stammen, und deren Absender in denjenigen der Firewall umgestempelt wurde, und deren Antwort nun eintrifft, korrekt zugeordnet und weitergeleitet. Dies dient dem Verdecken der internen Netzwerk - Adressen. Wenn kein Masquerading aktiviert worden ist, ist diese Routine deaktiviert.
Routing decision:
Die Zieladresse wird von der Routing Unterroutine untersucht. Hierbei entscheidet sich, an welchen output chain das Paket übergeben wird.
Local process:
Hier kann das Paket von einem Programm entgegen genommen und weiterverarbeitet werden. An dieser Stelle kann z.B. ein Proxy oder ähnliches zur weiteren Filterung der Pakete installiert werden. Danach wird das Paket an die output chain übergeben.
lo interface:
Falls Pakete eines lokalen Programms an einen anderes Programm übergeben werden müssen, dann sind diese an das Interface lo, welches das loopback Interface ist, übergeben. Für diese Interface existiert also auch eine input chain, welche Ausgaben eines Programmes wieder an den Kernel zwecks Weiterleitung übergeben kann.
local:
Wenn ein Paket nicht von einem lokalen Programm erzeugt wurde, dann wird dieses an die forward chain übergeben, ansonsten wird das Paket an die output chain direkt übergeben.
forward chain:
Diese Chain muss von jedem Paket durchlaufen werden, welches von einem Interface kommend, an ein anderes weitergeleitet werden möchte.
output chain:
Hier werden nochmals alle Pakete gefiltert, bevor sie das Interface verlassen.
7. Interne Abläufe einer Firewall
Hier nun ein èberblick darüber, welche
Prozesse innerhalb der Firewall stattfinden:
Die Regel Anweisungen sind für den Kernel bestimmt, damit dieser darüber informiert ist, was mit dem Paket zu geschehen hat, auf welches eine Regel zutrifft. ipchains benutzt hierbei die Option -j (jump-to) für die Angabe einer Ziels. Der Name des Ziels darf nur max. 8 Buchstaben lang sein, wobei Groß-und Kleinschreibung unterschieden wird.
Die Einfachste Anweisung ist diejenige, wo kein
Ziel angegeben wird. Diese wird oft auch accounting rule genannt, weil
sie nur zum Zählen von Paketen, dem Accounting geeignet ist:
Diese Regel zählt alle Pakete von dem Host 192.168.1.1 mit. Der Befehl ipchains -L -v zeigt die Summe von Bytes und Paketen an, die das Interface passiert haben, nachdem die Regel zutreffend war. Es läßt sich somit nach Port, Zieladresse und Quelladresse das Datenaufkommen zählen.
Es gibt sechs spezielle Anweisungen. Die ersten drei sind bereits bekannt, diese sind ACCEPT, REJECT und DENY. ACCEPT besagt, das das Paket passieren kann. DENY verwirft das Paket in aller Stille, REJECT verwirft das Paket ebenso, generiert aber eine ICMP Nachricht, Code Nummer 3.
Die vierte ist die Anweisung MASQ. Sie beauftragt den Kernel, die Absendeadresse, also die Quell IP - Nummer durch die IP - Nummer des eingehenden Interfaces zu ersetzen. Hier zu muß der Kernel mit der Option masquerading kompiliert worden sein. Diese Anweisung ist nur zulässig für Pakete, die die forward chain durchlaufen. Der Zweck dieser Regel ist es, interne IP - Nummern nicht in das Internet zu verraten, um einem Angreifer möglichst wenig Informationen über die Zahl und den Ort der Hosts im Intranet zu verraten.
Die fünfte Anweisung ist die Option REDIRECT. Diese besagt, daß der Kernel das Paket auf einen lokalen Port umleiten soll. Diese Anweisung wird nur für TCP und UDP Pakete ausgeführt. Als Ergänzung kann nach der Regel -j REDIRECT ein Port angegeben werden, auch wenn das Paket an einen anderen Port weitergeleitet wurde. Diese Anweisung kann nur in der input chain verwendet werden. Sinnvoll kann diese Option zur Umleitung von Paketen auf Port 80 auf einen Proxy-Server auf Port 8080 sein. Bei UDP Paketen können diese an den UDP nach TCP Umsetzer (udprelay) übergeben werden, um Protokolle, wie NFS, NIS/YP sicherer gegen Angriffe zu machen. Diese Option kann auch auf Filter zeigen, die auf der Firewall installiert wurden, um JAVA und Active-X aus dem Datenstrom herauszufiltern, ohne auf einen Proxy verzichten zu müssen, quasi als Kaskade von Proxy und Filter. Bitte beachten: Diese Option funktioniert zuverlässig nur mit der Kernelversion 2.2 . Ein Update von RedHat Linux 5.2 auf die neue Kernelversion ist aber problemlos. Updates und Patches findet man auf den Seiten von RedHat.
Zum Schluß kommt die Anweisung RETURN. Diese Anweisung besagt, daß alle folgenden Regeln über gangen werden können.
Alle weiteren Anweisungen, die nicht diesen sechs entsprechen zeigen auf eine User definierte Regel. Das Paket wird alle Regeln in der chain durchlaufen, bis sich eine Regel findet, die beschreibt, was mit dem Paket geschehen soll.
Ein Nebeneffekt der Paketfilterung ist das Mitloggen von Paketen, falls die Regel mit der Option -l definiert wurde. Nun werden alle Pakete mit protokolliert. Hierfür muß der Kernel Log-Dämon aktiviert werden (klogd). In den Handbüchern man klogd oder man dmesg werden die Eigenschaften genauer beschrieben.
7.3 Manipulation im Paket-Header
Es gibt insgesamt vier selten gebrauchte Bits in
dem Paket-Header, die Type of Service ToS-Bits genannt werden. Sie beeinflussen
die Art, wie Pakete behandelt werden. Die vier Bits beschreiben folgende
Funktionen:
Es darf laut Definition nur eiens der Bits gesetzt
sein. Der Autor des Code Abschnittes beschreibt seine Eigenschaft so:
Allgemein behindern sich telnet und ftp Datenströme
aufgrund ihrer unterschiedlichen Bits. Während FTP Datenströme
stets auf maximalen Durchsatz ausgelegt sind, ist telnet auf minimale Verzögerungszeiten
ausgelegt. Um beides unter einen Hut zu bekommen, sollten folgende Regeln
eingesetzt werden:
Der Option -t folgen zwei zusätzliche Parameter,
die beide in hexadezimaler Schreibweise angegeben sind. Sie erlauben es,
mit den TOS Bits zu spielen. Die erste Maske wird mit den TOS Bits in dem
Paket über AND verknüpft, während die zweite Maske mit den
TOS Bits über XOR verknüpft sind.
TOS Name | Value | Typical Uses |
Minimum Delay | 0x01 0x10 | ftp, telnet |
Maximum Throughput | 0x01 0x08 | ftp-data |
Maximum Reliability | 0x01 0x04 | snmp |
Minimum Cost | 0x01 0x02 | nntp |
Andi Kleen hat deren Einsatz so beschrieben:
Soweit die Hinweise auf die TOS Manipulationen
für Modem und ISDN Verbindungen. Hierzu muß nur die Syntax in
dem /etc/ppp/ip-ip Skript in ifconfig $1 txqueuelen verändert werden.
Die einzusetzende Zahl hängt ganz von der Anwendung und der Modemgeschwindigkeit
ab.
Diese Art Tuning ist als Aprilscherz 99 von
der Zeitschrift c´t beschreiben worden. Tatsächlich ist hier
aber auch ein Funken Wahrheit dran. Man kann seinem WWW-Server bei einem
Provider so erhebliche Priorität vor benachbarten Servern geben, insbesondere
wenn diese mit in ein- und derselben Collision Domain stehen. In vielen
Fällen werden ausgehende Datenpakete von diesem Server von CISCO´s
vorrangig geroutet.
Dieses erlaubt komplexe und leistungsfähige Kombinationen mit Alexey Kuznetsov's neuer QoS Implementierung (Quality of Service), ebenso, wie das Forwarding in dem Kernel 2.2, in welchem Pakete markiert werden können.
In diesem Abschnitt befinden sich Inforamtionen und häufig gestellte Fragen, welche nicht in die oberen Abschnitte passen.
8.1 Erstellen von Firewallregeln
Hier sollte man sich Gedanken machen, wie man die Firewallregeln aufbaut. Sie können nach Geschwindigkeit und Übersichtlichkeit geordnet werden.
Für eine Modem- oder ISDN Verbindung sollte
die Policy als erstes gesetzt werden, und dies bereits beim Booten des
Systems. Hier könnte folgendes in dem Skript /etc/ppp/ip-up eingetragen
sein.
# Nun die DENY Regel durch ein Sprung auf die ppp-in
chain ersetzen
ipchains -R input 1 -i ippp0 -j ppp-in
Im ip-down Skript müßte dann folgender
Eintrag stehen:
8.2 Pakete, die man nicht filtern sollte
ICMP Pakete
ICMP Pakete werden benutzt, um Fehler zu übermitteln, die bei anderen Protokollen aufgetreten sind, z.B. TCP und UDP. Hier gibt es verschiedenste Fehlermeldungen, z.B. destination-unreachable, Host unreachable oder No route to host. Ohne diese Fehlermeldung würde der Host immer wieder versuchen, den Server zu kontaktieren. Das kann eine erhebliche Belastung der Netzwerkbandbreite bedeuten. In einigen Fällen kann dies dazu führen, daß die Firewall "hängt".
Ein schwierigeres Problem ist die Rolle der ICMP Pakete in der MTU (Maximun Transfer Unit). Alle guten TCP/IP Stacks benutzen diese, um herauszufinden, welche maximalen Paketgrößen bei der Übertragung verwendet werden können, ohne daß diese fragmentiert werden müssen. Die Ermittlung erfolgt schrittweise, es werden Pakete in absteigender Paketgröße mit dem dont fragment bit gesetzt. Der Router würde dann zurückmelden: fragmentation needed. Wenn keine Fehlermeldung mehr kommt, dann ist die maximale Größe für ein Fragment erkannt worden. Werden also diese Fehlermeldungen gesperrt, dann ist mit Fehlern bei der Übertragung oder mit Einbrüchen der Performance zu rechnen.
8.3 Verbindungen zu DNS Nameservern
Beim Sperren von DNS-Anfragen, sollte man wissen, daß die DNS-Server nicht immer die Daten über UDP austauschen. Wenn die Paketgröße 512 Byte überschreitet, dann wird eine TCP Verbindung hergestellt, die größere Datenmengen sicher übertragen kann. Hierzu wird der Port 53 TCP benötigt. Auch wenn DNS-Anfragen bereits über die Firewall hinweg funktionieren, bedeutet das nicht, daß auch komplexere Zonentransfers über UDP abgewickelt werden können.
Wenn DNS-Anfragen stets an dieselbe externe Quelle gerichtet sind, Beispielsweise den DNS-Server des Providers, dann sollte dieser in der nameserver Zeile der Datei /etc/resolv.conf eingetragen sein, oder, falls ein caching nameserver im forward mode aktiviert wurde, dann ist nur eine TCP Regel erforderlich.
Das klassische Problem beim Filtern von FTP ist, daß FTP zwei völlig unterschiedliche Modi besitzt, active mode und passive mode, auch PASV genannt. WWW-Browser melden sich standardmäßig im passiven Modus an. Da FTP über einen Steuer und einen Datenkanal (Port 20+21) die Daten austauscht, ergeben sich gewisse Probleme.
Im aktiven Modus versucht der Server, zu dem Client aktiv eine Verbindung für den Datenkanal aufzubauen. Die Firewall kann diesen Vorgang nicht erlauben, ohne Ports oberhalb von 1024 komplett frei zu schalten.
Im passiven Modus bestimmt der Client beide Kanäle, also für den Verbindungs - und den Datenkanal. Damit nicht aus versehen ein Port für X-Windows angesprochen wird, sind die Ports zwischen 6000 und 6010 zu sperren.
8.5 Filter gegen Ping of Death
Für Linux Server war schon eine halbe Stunde nach der Veröffentlichung des Problems ein Patch im Internet verfügbar. Dieser Angriff basiert auf zu großen ICMP Paketen.
Um Server im Intranet oder Extranet gegen diesen Angriff zu sichern, müssen ICMP Fragmente gesperrt werden. Damit nicht das letzte Fragment die Server korrumpiert, müssen alle Fragmente gesperrt werden, also nicht nur das erste mit SYN Flag, sondern auch alle mit ACK Flag.
8.6 Filtern von Teardrop und Bonk
Teardrop und Bonk sind Angriffe, die hauptsächlich gegen Windows NT 4.0 Server gerichtet sind. Diese basieren auf überlappenden Fragmenten. Um diesen Angriff zu verhindern, müssen alle Fragmente gesperrt werden, oder es muß eine Reassemblierung im IP-Stack durchgeführt werden.
8.7.Filtern von Fragment Bomben
Einige altere TCP Stacks haben Probleme mit größeren Fragmenten von Paketen. Obige Maßnahmen sind bereits als Schutz ausreichend.
IP Spoofing ist ein Angriff, bei dem Pakete mit falscher Absende- Adresse vorgetäuscht werden. Viele der exploits im Internet, die Teardrop, Ping of Death Angriffe ausführen, verwenden spoofing.
Der einfachste Weg ist die Überprüfung
der Quell-IP - Nummer und dem zugehörigen Interface. Diese Überprüfung
findet im IP Routing Code statt, also nicht in dem Firewall-Code selber.
Um dieses zu überprüfen, sollte das Vorhandensein der Datei:
/proc/sys/net/ipv4/conf/all/rp_filter überprüft werden. Wenn
diese existiert, dann können die Regeln aktiviert werden.(Debian Users
sollten diese Regeln in die Datei /etc/init.d/netbase eingeben.
Falls dieses so nicht möglich ist, dann
muß für jedes Interface eine eigene anti spoofing Regel aufgesetzt
werden. Im Kernel von Linux 2.2 ist ein Schutz gegen Angriffe auf 127.x.x.0,
also im loopback interface, standardmäßig aktiviert.
Angenommen, es existieren drei Interfaces eth0,
eth1 und ippp0. ifconfig wird die Netzwerkadressen und Netzmasken anzeigen.
Nun muß verhindert werden, daß Pakete mit falscher oder gefälschter
Absende - Adresse am falschen Interface eintreffen. Diese müssen in
der input chain gesperrt werden:
Die allgemeine Variante, spoofing vom Linux
Kernel Routing Code zu aktivieren, ist die bessere, weil bei der Änderung
der Netzwerkadresse die Firewallregeln nicht geändert werden müssen.
Für den Kernel Version 2.0 muß explizit
noch eine anti spoofing Regel implementiert werden.