Ausfürliche Informationen über Sinn und Zweck einer Firewall findet man auf folgender Webseite.
In dieser Anleitung geht es nur um die Konfiguration und Einbindung der mitgelieferten Software ipfw unter Mac OS X 10.1.x. Alle Angaben und die Benutzung dieser Anleitung erfolgen ohne Gewähr.
Die zu Mac OS X gehörige persönliche Firewall ipfw kann lediglich einen einzelnen Rechner schützen. Bei Installation des Betriebssystems ist sie zunächst so konfiguriert, dass alle Zugriffe von außen erlaubt sind. In dieser Form bietet sie keinerlei Schutz.
Die Firewall-Software arbeitet mit Zugriffsregeln und erlaubt oder verbietet IP-Paketen den Zugang zu bestimmten Ports, an denen die Serverdienste des Rechners laufen. Dazu analysiert sie die Header der IP-Pakete, in denen unter anderem die Zieladressen verzeichnet sind. Die Regeln lassen sich auf den eingehenden wie auf den ausgehenden Datenverkehr anwenden.
Die Konfiguration der Firewall, also das Tippen der Regeln, erfolgt über das Terminal. Jeder Eintrag ist mit einer Nummer versehen, anhand der die Liste später abgearbeitet wird. In der letzten Zeile verbieten wir alle IP-Pakete, die nicht explizit erlaubt sind. Ferner gewähren wir allen Paketen Durchlass, die der Rechner verschickt.
Wer die Regeln selbst eintippen muss, sollte dazu den im Lieferumfang von Mac OS X enthaltenen Texteditor pico benutzen. Alle Arbeiten, die die Sicherheit des Systems betreffen, kann der User übrigens nur unter der Kennung "root" vornehmen.
sudo passwd rootNach der Identifizierung als berechtigter Administrator fordert Mac OS X auf, ein Kennwort für root zu vergeben und dieses einmal zu bestätigen - fertig. Mit dem Befehl
suund der Eingabe des Root-Passworts bist du der Super-User und kannst die Firewall einrichten.
pico /etc/ipfw.confDanach gib die Regeln ein. Alle Zeilen mit einem führenden Rautenzeichen (#) sind Kommentare für Sie und werden von ipfw ignoriert. Durch Löschen oder Setzen eines Rautenzeichens vor einer Regel kann man diese aktivieren oder deaktivieren. Nach Eintippen der Regeln sichere die Datei mit der Kombination Controltaste-O (Buchstabe O, nicht Null) und bestätige mit der Eingabetaste. Über die Kombination Controltaste-X verlasse den Editor pico:
# Erlaube Loopback add 1000 allow ip from any to any via lo0 # Erlaube Pakete von bestehenden Verbindungen add 1010 allow tcp from any to any established add 1020 allow all from any to any frag # Erlaube notwendigen ICMP Traffic (etwa Ping) add 1030 allow icmp from any to any icmptype 0,3,4,11,12 # Erlaube Network Time (NTP) add 2010 allow udp from any 123 to any 123 # Erlaube FTP add 2020 allow tcp from any to any 21 in setup add 2021 allow tcp from any 20 to any 1024-65535 in setup # passive mode FTP erlauben - nicht empfohlen - wird ins log geschrieben # um Missbrauch nachvollziehen zu koennen # add 2022 allow log tcp from any 1024-65535 to any 1024-65535 in setup # Erlaube SSH add 2030 allow tcp from any to any 22 in setup # Erlaube Telnet # add 2040 allow tcp from any to any 23 in setup # Erlaube DNS add 2050 allow udp from any to any 53 out add 2051 allow udp from any 53 to any in # Erlaube Titeluebertragung Shoutcast mp3 Streaming (iTunes) # add 2090 allow udp from any 8000 to any in # Erlaube Websharing # add 3005 allow tcp from any to any 80 in setup # Resette Verbindungen auf den Authentication Service #und schreibe sie ins log. # Auf einen Reset antwortet ein Server schneller als auf einen Deny add 5010 reset log tcp from any to any 113 in # Verbiete alle uebrigen eingehenden Pakete und schreibe sie ins log add 5020 deny log all from any to any in
sysctl -w net.inet.ip.fw.verbose=1Was alles in der Log-Datei (/var/log/system.log) landet, legst du mit dem "log" in der jeweiligen Regel fest. Um fortlaufend Log-Einträge zu sehen, öffne ein neues Terminal-Fenster und gib folgenden Befehl ein - wozu man übrigens nicht Root sein muss:
tail -f /var/log/system.log | grep "ipfw:"Der Befehl "tail -f" zeigt fortlaufend ( -f) das Ende (tail) der Datei an, und der Befehl "grep" filtert alle Einträge heraus, bis auf die Zeilen, in denen "ipfw:" vorkommt.
ipfw -q /etc/ipfw.confDer Befehl
ipfw listzeigt, welche Regeln aktiv sind. Du wirst sehen, dass es am Ende der Liste eine Regel gibt, die das Betriebssystem eigenmächtig eingetragen hat und die alle Zugriffe erlaubt:
65535 allow ip from any to anyDa diese aber erst nach der letzten gesetzten Regel erscheint und vorher bereits die Annahme aller nicht erlaubten Pakete verboten wurde, wirkt sie nur noch auf ausgehende Daten.
ipfw flushDanach muss man die Firewall erneut wie gezeigt scharf schalten.
/Library/StartupItems/einen Ordner namens "ipfw" an:
mkdir /Library/StartupItems/ipfwDort lege mit pico wiederum eine neue Datei namens "ipfw" an:
pico /Library/StartupItems/ipfw/ipfwTippe folgende Zeilen ein:
#!/bin/sh # Dieses Shell-Script startet die Firewall /sbin/ipfw -q /etc/ipfw.confSpeichern sie die Datei (ctrl-O) und beenden sie pico (ctrl-X). Nun legen sie mit pico eine zweite Datei mit Namen "StartupParameters.plist" an:
{ Description = "ipfw firewall"; Provides = ("Firewall"); Requires = ("Resolver"); OrderPreference = "None"; Messages = { start = "Starting ipfw firewall"; stop = "Stopping ipfw firewall"; }; }Sichere die Datei und beende pico. Da die Datei "ipfw" ausführbar sein muss, tippe nun noch den Befehl:
chmod 750 /Library/StartupItems/ipfw/ipfwDurch Implementierung des Start-Skripts ist die Firewall nach einem Systemstart automatisch aktiv. Während des Hochfahrens siehst du kurz die Meldung "Starting ipfw firewall".
Hinweis: Dieser Artikel unterliegt den Bestimmungen der Creative-Commons-Lizenz BY-NC-ND 3.0. Ihr dürft ihn kostenfrei kopieren, verbreiten und veröffentlichen, solange ihr mit einem Link auf meinen Namen und die Quelle verweist, ihn nicht für kommerzielle Zwecke verwendet und unter gleichen Bedingungen weitergebt. Der Inhalt darf nicht bearbeitet oder in anderer Weise verändert werden.