Bei der Einrichtung der Firewall spielen zwar auch persönliche Nutzungsgewohnheiten eine Rolle. Für viele Nutzer kann man aber von einer gewissen Standardkonfiguration ausgehen, die man dann noch verfeinern kann.

Im dritten Teil haben wir die Standardregeln erstellt, die für die Funktion von Mac OS X immer notwendig sind. Damit haben wir jetzt allerdings lediglich konfiguriert, dass eingehende Zugriffe verweigert werden (deny), die eine Adresse des 127-er Netzes als Quell- oder Zieladresse verwenden. Die Schreibweise a.b.c.d/n ist vielleicht nicht jedem geläufig. Sie kommt aus dem sog. Classless Interdomain Routing (CIDR). Mit der Ziffer n wird hier die Subnetzmaske angegeben. /8 steht für die Subnetzmaske (SNM) 255.0.0.0, /16 wäere die SNM 255.255.0.0 und /24 die SNM 255.255.255.0. Es sind aber bei CIDR auch andere als die Standardsubnetzmasken möglich wie z. B. /10 = >255.192.0.0.

Hinzufügen von weiteren Firewall-Regeln

Nun wollen wir also unsere eigenen Regeln hinzufügen. Zuvor geben wir aber die aktuellen Einstellungen 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 allow ip from 224.0.0.0/3 to any in
02040 allow tcp from any to 224.0.0.0/3 in
65535 allow ip from any to any
Beispiel 5

Ich entscheide mich für die restriktive Konfiguration, bei der die Firewall jeden Datenverkehr unterbindet, für den keine allow Regel vorliegt. Hier wird deutlich, wie wichtig es ist, überlegt vorzugehen. Würden wir jetzt nämlich voreilig die obligatorische deny Regel am Ende einfügen, würden wir damit die Verbindung zum Internet abschneiden. Regeln werden nämlich sofort wirksam nachdem sie eingetragen wurden. Wir überlegen also vorher, welche Kommunikation wir auf keinen Fall verlieren wollen und bauen eine entsprechende Regel in unsere Firewall Konfiguration ein. Im Augenblick ist es vielleicht wichtig, dass Ihr weiter Webseiten in Eurem Browser aufrufen könnt, damit Ihr nicht die Verbindung zu dieser Webseite verliert. Der Webbrowser arbeitet mit dem HTTP Protokoll. Der Webbrowser (als Client) spricht den Webserver auf Port 80 an. Port 80 ist also der Zielport für die Anfrage die nach draußen durchgelassen werden muss. Das ist aber nicht genug, den schließlich muss un auch die Antwort des Webservers erreichen können. Wir benötigen also zusätzlich eine Regel, die Antworten mit dem Quellport 80 auch nach innen hereinlassen.

# ipfw add 03000 allow ip from any to any 80 out
03000 allow ip from any to any 80 out
# ipfw add 03010 allow ip from any 80 to any in
03010 allow ip from any 80 to any in
Beispiel 6

So, und schon können wir Webseiten im Internet auch dann noch aufrufen, wenn wir die nachfolgende deny Regel im Firewall ruleset eintragen. Diese Regel setzen wir ans untere Ende der Liste, unmittlbar über die abschließende allow Regel.

# ipfw add 65534 deny ip from any to any
65534 deny ip from any to any
Beispiel 7

Fassen wir also zusmmen:

  • Zuerst haben wir einige Standardregeln eingerichtet, die für das System Mac OS X wichtig sind.
  • Dann haben wir uns für eine restriktive Firewallkonfiguration entschieden und uns überlegt, welche Kommunikation erlaubt sein soll
  • Im nächsten Schritt haben wir die entsprechenden allow Regeln eingetragen
  • Zu guter Letzt haben wir die globale deny Regel am Ende der Konfiguration eingefügt.

Wir prüfen unsere Konfiguration indem wir eine beliebige Webseite aufrufen. Das sollte klappen. Als nächstes versuchen wir unsere Emails abzurufen und stellen fest, das klappt nicht. Kein Wunder, wir haben ja eine restriktive Firewall Konfiguration gewählt. Emails werden aber nicht über Port 80 transportiert und so können wir nicht erwarten, dass die Firewall diesen Datenvekehr erlaubt. Aber halt! Die Firewalleinstellung entspricht in zwei Punkten noch nicht ganz unseren Vorgaben! Wir wollten eine möglichst restriktive Konfiguration der Firewall erreichen. Mit den Regeln 03000 und 03010 erlauben wir Datenverkehr mit der Protokollbezeichnung ip, Webserver verwenden aber ausschließlich das TCP Protokoll für verbindungsorientierte Übertragung. Wir habe also unnötigerweise Datenverkehr auf Port 80 UDP erlaubt. Außerdem müssen wir berücksichtigen, dass nicht alle Webserver (nur) auf dem Port 80 lauschen. Auf den Fall, dass Server auf nicht Standard Ports laufen möchte ich gar nicht eingehen, aber zumindest HTTPS Seiten sollten wir auch erlauben. Andernfalls könnten wir z. B. kein Onlinebanking durchführen. Auf diese Punkte werden wir im nächsten Abschnitt eingehen.

1   2   3   4   5