Hinweis: Wer noch unter Mac OS X < 10.4 arbeitet, wird bei den Listings geringfügige Unterschiede bemerken. Dies hängt mit der erweitereten Syntax der neuen ipfw2 zusammen und erklärt sich eigentlich von selbst.

Wer eine Firewall konfigurieren, möchte benötigt gute Kenntisse über den TCP/IP Protokollstapel und muss außerdem wissen, welche Anwendungen auf welchen Ports kommunizieren. In diesem Abschnitt wollen wir die Konfiguration der Firewall verfeinern, die Nachlässigkeiten der bisherigen Konfiguration ausbügeln und Regeln erstellen, die und auch die Benutzung von Email, Newsservern erlaubt. Dazu müssen wir wissen, auf welchen Ports mit diesen Servern kommuniziert wird und welche Protokolle verwendet werden. Wir werden auch auf einige möglich Fehler stoßen, und lernen, wie man diese vermeiden kann. Mit dieser Seite endet auch die Aufarbeitung der "alten" Artikel.

Feintuninig und Erweiterung der Konfiguration

Da wir im letzten Abschnitt etwas zu großzügig bei der Wahl des Transportprotokolls waren, wollen wir nun nachträglich die auf dem Port 80 erlaubten Verbindungen auf das TCP Protokoll einschränken. Dazu geben wir folgende Regeln ein:

# ipfw add 03000 allow tcp from any to any 80 out
03000 allow tcp from any to any 80 out
# ipfw add 03010 allow tcp from any 80 to any in
03010 allow tcp from any 80 to any in
Beispiel 8

Um unsere Konfiguration zu prüfen, geben wir wieder ein Listing aus:

# ipfw list
02000 allow ip from any to any via lo*
02010 deny ip from 127.0.0.0/8 to any in
02020 deny ip from any to 127.0.0.0/8 in
02030 deny ip from 224.0.0.0/3 to any in
02040 deny tcp from any to 224.0.0.0/3 in
03000 allow ip from any to any dst-port 80 out
03000 allow tcp from any to any dst-port 80 out
03010 allow ip from any 80 to any in
03010 allow tcp from any 80 to any in
65534 deny ip from any to any
65535 allow ip from any to any
Beispiel 9

Hhm - wenn wir bedenken, dass die Regelliste von oben nach unten abgearbeitet und bei Antreffen einer passenden Regel verlassen wird, haben wir damit unser Ziel nicht erreicht. Genaugenommen haben die beiden zuletzt eingegebenen Regeln gar keine Wirkung, da sie nie erreicht werden. Wir lernen daraus, dass die Reihenfolge, in der die Firewall die Regeln abarbeitet von größter Bedeutung ist. Wir lernen weiterhin, dass die Firewall selbsttätig keine Regeln löscht, auch dann nicht, wenn wir eine Regel mit derselben Nummer definieren. um das von uns angestrebte Ziel zu erreichen, müssen wir also folgendes machen:

# ipfw delete 03000
# ipfw delete 03010
# ipfw add 03000 allow tcp from any to any 80 out
03000 allow tcp from any to any 80 out
# ipfw add 03010 allow tcp from any 80 to any in
03010 allow tcp from any 80 to any in
Beispiel 10

Wir können also mehrere Regeln mit einer Nummer anlegen, die dann hintereinander abgearbeitet werden. Man könnte in Versuchung geraten, auf diese Weise zusammengehörige Regeln zu strukturieren, Das ist aber nicht empfehlenswert, da wir die Reihenfolge der Regeln nur schwer beeinflussen können. Die neue Firewall ipfw2 bietet dafür einen sehr nützlichen Mechanismus, die sog. sets an, die aber hier vorerst nicht behandelt werden. Wenn wir nun ein Listing ausgeben, sieht die Sache so aus:

# ipfw list
02000 allow ip from any to any via lo*
02010 deny ip from 127.0.0.0/8 to any in
02020 deny ip from any to 127.0.0.0/8 in
02030 deny ip from 224.0.0.0/3 to any in
02040 deny tcp from any to 224.0.0.0/3 in
03000 allow tcp from any to any dst-port 80 out
03010 allow tcp from any 80 to any in
65534 deny ip from any to any
65535 allow ip from any to any
Beispiel 11

Zm Abschluss möchte ich Euch nun eine kleine Aufgabe stellen. Erweitert die Konfiguration so, dass Ihr Emails über smtp versenden könnt (Port 25), Emails abholen könnt (erforderliche/n Port/s selber herausfinden) und Webseiten über https abrufen könnt. Ziel ist eine möglichst restriktive Konfiguration. Hier heisst es also nachdenken.

Ich hoffe die Anleitung hat Euch bis hierher Spass gemacht und Ihr habt etwas dabei gelernt. Für Anregungen, Feedback und Korrekturen könnt Ihr das Email Formular verwenden.

1   2   3   4   5