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 iptablesDas 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--Adressenfälschung 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:
- Der Internetzugriff kann auf einzelne Rechner beschränkt werden.
- Dienste für das Internet werden auf einzelne Rechner im Netz beschränkt. Dabei kann zwischen den Diensten FTP, WWW, Mail, News und Newsfeeder unterschieden werden.
- Einzelne Dienste für das Internet können auf einen internen Rechner umgeleitet werden, der beispielsweise als Proxy arbeitet.
- Der gesamte Internetverkehr kann protokolliert werden. Dies betrifft sowohl jeden Angriffsversuch als auch >>legale<< Verbindungen.
- Aufgrund der Position in der Netztopologie ist der Rechner für das Masquerading prädestiniert.
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.
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 |