Firewall OS X - Das kann sie wirklich

maceis

maceis

Aktives Mitglied
Thread Starter
Dabei seit
24.09.2003
Beiträge
16.880
Reaktionspunkte
626
hallo zusammen,

nachdem der letzte Fred zum Thema Firewall unter OS X ein wenig abgedriftet ist, gibt es hier sozusagen die Antwort.
Das kann Sie - und
Das kann sie nicht!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ich möchte hier nicht mehr in die Diskussion einsteigen, ob oder ob nicht man eine Firewall einsetzten sollte.
Eher schon die Diskussion, was man tun muss um was zu erreichen und in welcher Situation ist welche Konfiguration sinnvoll.

Wer sich dazu entscheidet, die Firewall einzusetzen, wird hier einigen Hinweise finden, was man wie erreichen kann.
Außerdem möchte ich erklären, wie man die Firewall überwacht, und wie man über die von Apple verordnete Grundfunktionalität hinauskommt.
Das wird sehr einfach anfangen und - je nach Interesse und feedback - auch ein wenig in die Tiefe gehen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Noch ein paar Punkte vorab:

1. Ich behaupte nicht, dass ich alles weiss, was man wissen kann.

2. Ich gebe mir Mühe, das Ganze so zu erklären, dass mich einerseits sowohl völlig "Ahnungslose" verstehen und andererseits auch "Poweruser" sich nicht langweilen. Wenn mir das nicht immer gelingt, bitte ich um Nachsicht.

3. Ich hoffe, dass in meinen Ausführungen keine Fehler enthalten sind.
Wer Fehler entdeckt: immer her damit; wer was beitragen kann: auch her damit.
Die Benutzung der Informationen, die ich hier zu geben versuche erfolgt auf eigene Verantwortung und eigene Gefahr.

4. Jede Art von feedback ist hoch-willkommen nur eine nicht: Wen das Thema nicht interessiert, der möge die Welt mit dieser "Information" verschonen und woanders hinsurfen!

Wer noch Interesse hat, kann nun den nächsten Beitrag lesen :D
 
Zunächst ein (ganz kleines) wenig background-Theorie, die aber zum Verständnis des Folgenden notwendig (wenn auch nicht ausreichend) ist.

Wie wohl fast alle wissen, ist eine Firewall - allgemein gesprochen - ein Instrument um den Datenverkehr zwischen vernetzten Computern zu kontrollieren und ggf. zu beeinflussen.

Die Firewall, die mit OS X ausgeliefert wird heisst "ipfw" und ist schon sehr alt.
Deswegen hatte ich sie auch schon - nicht ganz zu recht - als "verschlafenen alten Hund" bezeichnet, denn sie ist eigentlich sehr leistungsfähig in Ihrem Bereich.

Bei der ipfw handelt es sich um eine sog. stateful packet inspection firewall
Was heisst das ?
packet inspection --> einfach gesagt: es werden IP Pakete untersucht
stateful --> es werden nicht starre Regeln angewendet, sondern es wird auch der Zustand (state) der Verbindung geprüft und danach entschieden, ob oder ob nicht eine Regel anzuwenden ist.
Das ist sehr wichtig, wie wir noch sehen werden.

~~~~~~~~~~~~~~~~~~~~~
Was kann die ipfw ?
~~~~~~~~~~~~~~~~~~~~~
Die ipfw untersucht also IP-Pakete und wendet - je nach dem Ergebnis der Untersuchung - bestimmte Regeln an.
Untersucht werden im Wesentlichen folgende Eigenschaften, wobei nicht immer alle geprüft werden müssen:
- Netzwerkprotokoll
- Quell- und Ziel-IP-Adresse
- Quell- und Zielport
- die Schnittstelle von der das Paket kommt, und/oder zu dem das Paket (wieder) hinausgeht
- die Richtung des Datenverkehrs
- Der Zustand der Verbindung, bzw. bestimmte flags der IP-Header
- in bestimmten Fällen können auch Inhalte geprüft und selektiv verarbeitet werden.

Nach der Prüfung entscheidet die Firewall anhand eines Regelsatzes (mehr dazu später), was mit einem Pakete geschehen soll.
einige wichtige Möglichkeiten wären:
- einfach weiterleiten (= Datenverkehr ist erlaubt)
- einfach wegwerfen(= Datenverkehr ist verboten)
- wegwerfen und eine bestimmte "Nachricht" zurückschicken.
- umleiten des Paketes

Zusätzlich, und das finde ich besonders interessant, können noch sehr differenzierte Logs geführt werden.
Standardmäßig ist diese Funktion jedoch aus unerklärlichen Gründen deaktiviert, obwohl ein entsprechendes Logfile unter /var/log/ipfw.log bereits vorbereitet ist
Unter Jaguar ließ sich das noch einigermaßen einfach einschalten.
Bei Panther ist diese Möglichkeit aufgrund einer Fehlkonfiguration in der Standardinstallation jedoch nur mit zusätzlichen Schritten möglich.

~~~~~~~~~~~~~~~~~~~~~~~~~~
Was kann die ipfw nicht?
~~~~~~~~~~~~~~~~~~~~~~~~~~
Bis auf ganz wenige und eingeschränkte Ausnahmen kann die ipfw keine aktiven Angriffe abwehren.
Diese Funktionalität bleibt wohl den sog. Hardware Firewalls vorbehalten (ja, ich weiss auch auf denen läuft eine Software und ein Betriebssystem)
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Und wie setzt man die Firewall ein ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Anmerkung: Für Beispiele verwende ich die "tcsh" mit einer erweiterten Beispielkonfiguration und gelegentlich die "zsh".
Falls also bei euch Befehle nicht funktionieren: Bitte posten (denn manchmal vergesse ich einfach anstelle der aliasse die richtigen Befehle einzusetzen).
Außerdem sind für alle ipfw root rechte erforderlich (eh klar, oder ?); ich verzichte daher auf das vorangestellte sudo
Eingaben sind blau, Ausgaben der Shell rot dargestellt

Wir gehen nun einmal davon aus, dass der Rechner sich nicht in einem LAN befindet, aber gelegentlich mit dem Internet verbunden wird.
Dies dürfte für die meisten user zutreffen und außerdem die einfachste aller denkbaren realistischen Situationen sein.
Nun muss man zunächst wissen, dass die Firewall entweder in den Kernel oder in Kernelerweiterungen einkompiliert ist und grundsätzlich nicht abgeschaltet werden kann.
Das ist sehr sehr wichtig !
Wenn die Firewall in der grafischen Oberfläche gestoppt ist, heisst das nur: Alles ist erlaubt.

Die aktuelle Einstellung der ipfw werden wir immer so auslesen:
ipfw list
Die Ausgabe wird dann so aussehen:
65535 allow ip from any to any

Dazu kann man folgendes sagen.
- für jede Regel gibt "list" ein Zeile aus.
- die Regeln sind durchnummeriert bis 65535 (= 2^16)
- eine Nummer kann mehrmals verwendet werden (ob das sinnvoll ist sei dahingestellt, notwendig ist es jedenfalls meistens nicht)
- die Regeln werden von oben nach unten durchgeprüft
- trifft eine Regel zu, wird die Prüfung i. d. R. beendet und eine Aktion ausgeführt.
- die hier ausgegebene Regel ist eine der wichtigsten; fehlt eine "allow" Regel, ist kein Datenverkehr (traffic) möglich.
- den Aufbau einer Regelzeile bekommt man erklärt, wenn man einfach ipfw eingibt.

Der einfachste Gebrauch der Firewall unter Mac OS X besteht wohl darin, dass man Sie einfach einschaltet.
Dazu sollte man sich bewusst sein, dass die Firewall (wohl aus Gründen des Komforts) eng mit der Systemeinstellung "Sharing" zusammen arbeitet.
Wenn wir nun also die Firewall aktivieren und keine "Sharing" Dienste aktivieren passiert folgendes:
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
02050 allow tcp from any to any out
02060 allow tcp from any to any established
02070 allow tcp from any to any 25 in
02080 allow tcp from any to any 514 in
02090 allow tcp from any to any 69 in
12190 deny tcp from any to any
65535 allow ip from any to any

Nun wird es schon interessanter:
Die Regeln bedeuten der Reihe nach folgendes (es ist wichtig, daran zu denken, dass die Regeln von oben nach unten durchlaufen werden)
02000 allow ip from any to any via lo*
> erlaube ip (= jedes Protokoll) von any (=jede IP-Adresse)nach any über io(=loopback-Interface)
02010 deny ip from 127.0.0.0/8 to any in
> verbiete ip von 127.0.0.0/8 nach any in (hereinkommend)
02020 deny ip from any to 127.0.0.0/8 in
> verbiete ip von 127.0.0.0/8 nach any in; dadurch wird eine bestimmte Art von spoofing-Angriffen unmöglich gemacht, die aber eher theoretischer Natur ist oder sehr großes know-how benötigt
02030 deny ip from 224.0.0.0/3 to any in
02040 deny tcp from any to 224.0.0.0/3 in

> diese beiden Regeln beziehen sich auf bestimmte multi-cast Adressen, die exakte Bedeutung ist mir in diesem Fall nicht bekannt
> Zum Nachdenken darüber hatte ich bisher keine Lust
02050 allow tcp from any to any out
Diese Regel und die zwei folgenden sind sehr wichtig
Diese erlaubt es tcp-Verbindungen von jeder internen Adresse nach draußen (=Internet oder ggf. zu anderen Rechnern im LAN) aufzubauen
02060 allow tcp from any to any established
> Hier kommt die erste "stateful" Analyse;
> Sie sagt: erlaube tcp-traffic in beiden Richtungen, wenn eine Paket die Eigenschaft "established" aufweist.
> einfach gesagt: erlaube Traffic, wenn die Kommunikation von innen begonnen wurde
> Beispiele wären, das abrufen von email oder Surfen im Web
12190 deny tcp from any to any
> verbiete alle anderen tcp-Pakete
65535 allow ip from any to any
> erlaube alle ip Pakete, auf die keine der o. g. Regeln zutrifft.

Nun die drei große Preisfrage für Mitdenker:
1. Was ist noch erlaubt ???
2. Welches Bedürfnis vieler User kann so niemals befriedigt werden ?
3. Wo ist der große Haken an der ganzen Sache ?

kleiner Tip, manche Antworten sind als Fragen im letzten Fred zu finden:
----------
So, hier mach ich mal für´s erste Schluss (Verdauungspause).
Bei entsprechendem Interesse kann ich noch ein paar Sätze zur weiteren Konfiguration schreiben.
 
Ich sage nur WOW - bin begeistert… das sind doch jetzt genau die Infos, auf die ich von Anfang an gehofft hatte, als ich den ursprünglichen Thread eingestellt hab… clap
 
hab mir gerade mal die ipfw mit "ipfw list" angeschaut… Normaler User im Terminal geht nicht, Admin User auch nicht - jedes Mal kommt die Meldung "operation not permitted". Erst als ich root freigeschaltet habe und unter root eingeloggt war, hat die ipfw ihre Einstellungen ausgespuckt… finde ich ein bißchen hart gelöst - hast Du eine Erklärung für diese Restriktion?

Grüsse,

micha
 
...zu Preisfrage 3: Der Haken ist

02050 allow tcp from any to any out

denn das heisst, daß mal grundsätzlich jeder Datenverkehr von innen nach außen möglich ist… rein theoretisch würde ich es also nichtmal mitbekommen, wenn irgendeine Software mal eben "nach Hause" telefoniert... richtig?

Noch eine Frage die mir einfällt: hier sind nur TCP Regeln besprochen. Wie verhält es sich mit UDP, das von Sound-Streams benutzt wird und auch - soweit ich weiss - von Apple Remote Desktop…
 
ups... überlesen :rolleyes:

na dann ist ja alles klar! Oder zumindest fast… jetzt fehlt nur noch die Anleitung "wie richte ich die ipfw nach meinem Geschmack ein und wo sind ihre Grenzen"
 
hallo echt

denn das heisst, daß mal grundsätzlich jeder Datenverkehr von innen nach außen möglich ist… rein theoretisch würde ich es also nichtmal mitbekommen, wenn irgendeine Software mal eben "nach Hause" telefoniert... richtig?
richtig, aber das dachte ich mir eigentlich als Antwort auf Frage 2
---
och eine Frage die mir einfällt: hier sind nur TCP Regeln besprochen. Wie verhält es sich mit UDP, das von Sound-Streams benutzt wird und auch - soweit ich weiss - von Apple Remote Desktop…
Frage 1: Was ist noch möglich ? u. a. UDP
---
und der Haken ist: man kann mit der grafischen Oberfläche überhaupt keinen Datenverkehr von innen nach außen unterbinden.
Kritisch z. B., wenn man den Mac als Router benutzt oder Windows Sharing aktiv hat
 
- gelöscht, falscher Fres - :D
 
noch was - hätt ich fast vergessen:
denn das heisst, daß mal grundsätzlich jeder Datenverkehr von innen nach außen möglich ist… rein theoretisch würde ich es also nichtmal mitbekommen, wenn irgendeine Software mal eben "nach Hause" telefoniert... richtig?
Nicht nur das; eine software (sprich ein trojaner), die von innen eine tcp-Verbindung öffnet, ermöglicht damit, dass man über diese offene Verbindung von außen auf den Rechner zugreifen kann. - nicht schön.
 
...garnicht schön. Aber das weiß Apple auch, wieso setzen sie uns dann die ipfw vor? Reine Schikane nach dem Motto "unser System kann mit einer Firewall protzen und wir haben wenig Stress mit dem GUI"? Trojaner stellen doch mal grundsätzlich ein Risiko für jeden User dar… und vor allem für DAUs, die Apple ja scheinbar als Zielgruppe anvisiert :D

Ups hab ich da jetzt am Ende was falsches gesagt..? :rolleyes:
 
65535 allow ip from any to any
> erlaube alle ip Pakete, auf die keine der o. g. Regeln zutrifft.

Wenn keine der Regeln oben zutrifft, dann hat man doch theoretisch keine Firewall vor sich, wenn man weiß wie man die Regeln austrickst. Sehe ich das richtig?
Oder liege ich falsch?

Björn
 
hallo Lucky,

Wenn keine der Regeln oben zutrifft, dann hat man doch theoretisch keine Firewall vor sich, wenn man weiß wie man die Regeln austrickst.
weisst du das denn ?

Wenn du die Regel wegmachst, kommst du nicht mehr ins Internet und kannst deine mails nicht mehr abrufen!
Weisst du warum ?
Wenn Du diese Frage beantworten kannst (an die anderen - nicht helfen *ggg*) , reden wir weiter, okay ? :D
 
Super Antwort, eigentlich wollte ich nur eine Antwort auf meine Frage. Und nicht sowas.

Danke

Und ja, ich kenn ipfw nicht, deswegen habe ich gefragt.

EOD

Björn
 
na na na Lucky,

wer wird denn gleich beleidigt sein?

Das Konzept der ipfw in der Standardeinstellung von Apple heisst:
Alles was nicht verboten ist, ist erlaubt.
Wenn keine der Regeln oben zutrifft, dann hat man doch theoretisch keine Firewall vor sich...
Der Trick besteht dann darin, dass "oben" alle erforderlichen Regeln drin stehen.
Ansonsten gilt das, was dem aufmerksamen Leser nicht entgangen ist:
...
- die hier ausgegebene Regel ist eine der wichtigsten; fehlt eine "allow" Regel, ist kein Datenverkehr (traffic) möglich.

Man kann das natürlich auch umgekehrt machen (auch mit der ipfw).
Alles was nicht erlaubt ist, ist verboten.
Dann ist´s aber leider nicht mehr ganz so klicki-bunti-einfach apple-like.
Wie auch immer, die letzte Regel würde dann heissen:
65535 deny ip from any to any

Was EOD heisst weiss ich ned - lass mal raten:
Ein Ober Dummkopf ?
End of Day ?

Und die Antwort auf meine Frage an Dich lautet:
Weil dann DNS nicht mehr funktioniert und Deinem Browser niemand mehr sagen kann, welche IP-Adresse zu "www.macuser.de" gehört.
 
Nun ja, EOD steht für End Of Discussion.

Warum bekommt man nicht einfach direkt so eine Antwort?

Danke

Björn
 
uuups - ganz vergessen:
...garnicht schön. Aber das weiß Apple auch, wieso setzen sie uns dann die ipfw vor? Reine Schikane nach dem Motto "unser System kann mit einer Firewall protzen und wir haben wenig Stress mit dem GUI"? Trojaner stellen doch mal grundsätzlich ein Risiko für jeden User dar…
Nun ja, ganz so schlimm ist es auch wieder nicht, weil die ipfw immer noch besser ist als keine Schutz.
Gut ist auch, dass Apple FileSharing nicht wie Dosen sämtliche Freigaben im ganzen Internet herumposaunt; standardmäßig ist Apple FileSharing sogar über Internet gar nicht so einfach möglich.

Außerdem ist Trojanern mit IP-Firewalls sehr schwer beizukommen.

Ein Verbesserungsansatz, wäre der, alle "in"-Regeln nicht mit "destination any" sondern mit der IP Adresse der Schnittstelle anzulegen und nur traffic auf Ports zuzulassen, die man verwenden möchte.
Und natürlich dial-on-demand abschalten.
Dann noch bei jeder Internetverbindung ein Blick auf "netstat" und die Sicherheit wächst in dem Maß, in dem der Komfort sinkt.

Und wenn ich jetzt nich aufhöre, werd´ich geteert und gefedert auf einer Eisenbahnschiene aus dem web getragen (oder gar fest verschnürt in einem IP Paket in meiner eigenen Firewall verheizt) :D
 
@TBLucky: Will mich nicht einmischen… aber man bekommt immer dann keine direkte Antwort, wenn man mitdenken soll und jemand anders das erwartet ;) Kann das schon nachvollziehen… hihi…
 
Hallo Lucky,
Warum bekommt man nicht einfach direkt so eine Antwort
Weil selber denken schlau macht und dein Kommentar
... wenn man weiß wie man die Regeln austrickst ...
so klang als wüsstest Du das.

Und ned immer gleich maulen - okay? :D
 
Zurück
Oben Unten