Firewall und Masquerading
Willemers Informatik-Ecke
siehe auch: Firewalls mit iptables

Eine wirkungsvolle Firewall kann nur von jemandem konzipiert werden, der TCP/IP komplett verstanden hat. Diese Kurzerläuterung ist darum nicht als Anleitung zum Aufbau einer Firewall fehl zu interpretieren. Aber auch für den einfachen Anwender ist es wichtig zu verstehen, was eine Firewall tut, wie sie es tut und wo ihre Grenzen liegen.

Funktionsweise einer Firewall

Ein Firewall soll einen Einbruch in ein privates Netz verhindern, obwohl das Netz nach aussen mit einem öffentlichen Netz verbunden ist. Ist eine TCP/IP-Verbindung einmal hergestellt, wird auch jedes Protokoll transportiert.

Firewall leitet Pakete weiter

Vom Prinzip funktioniert eine Firewall so, dass die Verbindung nach außen aufgebrochen wird und ein Rechner mit zwei Netzwerkschnittstellen dazwischen gesetzt wird. Dieser Rechner arbeitet fast wie ein Router. Allerdings schickt er nicht jedes Paket auf die andere Seite, sondern überprüft anhand seiner Regeln, ob das Paket passieren darf, ob es zurückgewiesen werden soll oder einfach nur verworfen wird.

Paketanalyse

Da jedes Paket die IP Nummer des Senders und des Empfängers enthält und darüber hinaus die Portnummer der beiden, kann der Firewall Rechner erkennen, was das Paket tut. Beispielsweise wird eine Anfrage an einen Webserver im Internet als Empfänger eine IP-Nummer haben, die nicht zum Firmennetz gehört und eine Portnummer 80. Der Absender hat eine IP-Nummer aus dem Firmenbereich und als Portnummer eine beliebige Nummer, die nicht zu den well known ports gehört. Bei der Antwort des Servers werden Empfänger und Absender umgetauscht. Dagegen würde ein Versuch, den firmeninternen Intranetwebserver anzugreifen so aussehen, dass der Empfänger eine Firmen IP Nummer ist und eine Portnummer 80 haben. Es ist also an den Paketrahmen bis zu einem gewissen Grad erkennbar, wer Client und wer Server ist.

Alles ist verboten, was nicht explizit erlaubt ist

Üblicherweise startet man die Firewallregeln damit, alle Kommunikation zu unterbinden. Anschließend werden sukzessive die ungefährlichen Kommunikationswege zugelassen. Es muss also der Zugriff auf Webserver über den Port 80 nach außen explizit frei gegeben werden.

ipchains und iptables

siehe auch: Firewalls mit iptables

Das Paket ipchains wird mit den Linuxversionen bis Kernelversion 2.2 ausgeliefert. Das ab Version 2.4 verwendete Paket iptables ist weitgehend aufrufkompatibel.

Regelwerk in einem Skript

In Regeln wird festgelegt, wie mit einem Paket verfahren werden soll. Dabei gibt es verschiedene Aktionen, die in Abhängigkeit von der Art des Paketes eingeleitet werden können. Die Regeln werden in einem Skript durch den mehrfachen Aufruf von ipchains definiert. Dieser wird normalerweise beim Start in den rc-Skripten ausgeführt.

Aktion Wirkung
ACCEPT Paket darf seinen Weg fortsetzen
DENY Verwerfen und schweigen
REJECT Ablehnen und Fehlermeldung an Absender
REDIRECT schickt die Pakete an einen Proxy

Zu Anfang werden alle Regeln gelöscht. Das macht die Option -F (flush).

ipchains -F input
ipchains -F output
ipchains -F forward

Mit der Option -A (add) werden Regeln hinzugefügt. Diese zwei Regeln besagen, dass Pakete von den Schnittstellen eth0 und lo erlaubt sind.

ipchains -A input -i lo -j ACCEPT
ipchains -A input -i eth0 -j ACCEPT

Dagegen sind Zugriffe von außen mit den freien Netzwerkadressen verdächtig. An sich werden diese im Internet nicht geroutet, also sollten sie gar nicht auftreten können. Entsprechend kann man von IP--Adres­sen­fäl­schung ausgehen und sie werden abgelehnt.

ipchains -A input -i ppp0 -s 192.168.0.0/16 -j DENY
ipchains -A input -i ppp0 -s 172.16.0.0/12 -j DENY
ipchains -A input -i ppp0 -s 10.0.0.0/8 -j DENY

Von außen wollen wir alle Zugriffe per telnet (Port 23) ausschließen. Aber SMTP (Port 25) und SSH (Port 22) soll erlaubt sein.

ipchains -A input -i ppp0 -p tcp --dport 22 -j ACCEPT
ipchains -A input -i ppp0 -p tcp --dport 23 -j DENY
ipchains -A input -i ppp0 -p tcp --dport 25 -j ACCEPT

ipfw

ipfw ist eine andere Implementierung einer Firewall. Hier die Kommandos, die Kommunikationswege zu löschen und dann den Zugriff des SSH-Zugriffs über de0.

ipfw -f flush
ipfw add 600 allow tcp from any to any 22 in via de0

Letztlich ist das Vorgehen in beiden Fällen identisch, lediglich der Syntax unterscheidet sich.

Möglichkeiten und Grenzen

Mit der Firewall können je nach Einstellung folgende Ziele erreicht werden:

Firewall ist kein Virenschutz

Eine Firewall ist aber keineswegs in der Lage, einen Vireneinbruch zu verhindern, da sie auf die Ziele der Pakete, aber nicht auf den Inhalt der Pakete schaut.

Kein Schutz gegen innere Angreifer

Des weiteren ist eine Firewall ein Schutz gegen einen Einbruch über das Internet. Es schützt niemals gegen den Angriff aus den eigenen Reihen. Darum ist eine existierende Firewall kein Grund, die Sicherheit der einzelnen Rechner zu vernachlässigen.

Standardpaketfilter

Die Distributionen unter Linux bringen bereits Paketfilter für Rechner mit, die direkt an das Internet angeschlossen werden sollen. Diese Pakete sind zwar nicht individuell auf optimale Sicherheit gestrickt, aber sie sind sicher besser, als die ersten eigenen Versuche. Immerhin ist es ein kostenloser Schutz, auf den man nicht leichtfertig verzichten sollte.

Paketfilter am Arbeitsplatz contra Firewall

Da hier der Paketfilter auf dem Arbeitsplatzrechner installiert ist, kann er natürlich nicht so sicher sein wie eine separate Firewall, der man alle Zugänge von außen verrammelt, damit Angreifer keine Möglichkeit haben, sie zu knacken.

Die Konfiguration einer Firewall sollte man nur selbst machen, wenn man über eine gute Kenntnis der verschiedenen Protokolle von TCP/IP verfügt. Ferner hilft ein Gespür, an welchen Stellen Sicherheitslöchen entstehen und die Lektüre der aktuellen Sicherheitswarnungen. Unter der folgenden Adresse finden sich regelmäßig die aktuellsten Sicherheitshinweise direkt nach ihrem Bekanntwerden.

http://www.cert.org/

Masquerading

Beim Masqerading gibt es einen Rechner, der einen Zugang zum Internet hat und eine gültige IP-Nummer für das Internet besitzt. Ob dies eine dauerhafte Nummer ist oder eine dynamisch vom Provider zugeteilte, ist belanglos. Der Masqeradingrechner nimmt nun alle Pakete in Richtung Internet in Empfang, steckt sie in die Hülle seiner eigenen Pakete mit gültiger Absendernummer und sendet sie an das Internet. Die zurückkehrenden Pakete packt er wieder aus und sendet es an den Auftraggeber.

Ein Netz braucht nur ein IP-Nummer

Dies vermindert bei kleinen Firmen die Kosten für einen Komplettzugang zum Internet, da mehrere gültige Internetnummern zu haben inzwischen Luxus ist. Ferner bleiben die Rechner des lokalen Netzes für das Internet unerreichbar. Da auf diese Weise die Anzahl benötigter Adressen gering bleibt, sorgt diese Technik dafür, dass ein Wachstum des Internets möglich ist, auch wenn nicht sofort auf IPv6 umgestiegen wird.

Masquerading und Firewall

Man kann sich leicht vorstellen, dass das Umsetzen der IP-Nummern am besten an der Stelle geschieht, wo sowieso jedes Paket betrachtet und überprüft wird. Darum wird das Masquerading normalerweise durch die Firewallsoftware mit erledigt. Im folgenden eine Regel unter ipchains, die die Pakete des lokalen Netzwerkes 192.168.109.0 weiterleiten.

ipchains -A forward -i ppp0 -s 192.168.109.0/24 \
                            -d ! 192.168.109.0/24 -j MASQ

Mit ipfwadm lauten die Befehle:1)

ipfwadm -F -p deny
ipfwadm -F -a m -S 192.168.109.0 -D 0.0.0.0/0


1 Barkakati, Naba: LINUX Red Hat 6.0. Franzis', 2000. S. 578.

Diese Seite basiert auf Inhalten aus dem Buch Arnold Willemer: Wie werde ich UNIX-Guru
Verlagsrechte bei galileo computing