Firewall - Konfiguration ipfw

(2002 Georg Roden)

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.

root

Der User "root" ist unter Mac OS X nicht automatisch aktiviert - eine Schutzmaßnahme gegen Unerfahrene, da der root-Benutzer sogar das gesamte System löschen kann. Spezielle Arbeiten wiederum darf ausschließlich root durchführen; zum Beispiel eine Firewall einrichten. Ist root noch nicht aktiviert, öffne den "NetInfo Manager" im Verzeichnis "Applications/Utilities". Im Menü "Domain" aktiviere dann den Punkt "Sicherheit". Im Klappmenü des Befehls wähle "Identifizieren". Nach der Eingabe deines Administrator-Kennworts wähle im selben Untermenü "Root-Benutzer aktivieren". Beim ersten Aktivieren müsst du auch für den root-Benutzer ein Kennwort festlegen.
Sehr viel einfacher geht diese Prozedur im Terminal. Tippe
sudo passwd root
Nach 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
su
und der Eingabe des Root-Passworts bist du der Super-User und kannst die Firewall einrichten.

Konfiguration ipfw

Die Konfigurationsdateien unter Unix enden meist mit dem Kürzel ".conf" und sind im Verzeichnis "etc" untergebracht. Um eine solche in pico anzulegen, tippe im Terminal zunächst
pico /etc/ipfw.conf
Danach 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

Log-Datei

Um die Funktionsfähigkeit der Firewall zu überprüfen, muss man das System dazu veranlassen, sämtliche Ereignisse eine Log-Datei zu schreiben. Der Befehl dazu lautet:
sysctl -w net.inet.ip.fw.verbose=1
Was 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.

Firewall einschalten

Alle Vorbereitungen sind getroffen, du kannst die Firewall jetzt mit folgendem Befehl aktivieren:
ipfw -q /etc/ipfw.conf
Der Befehl
ipfw list
zeigt, 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 any
Da 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.
Alle Regeln in der Konfigurationsdatei kann man mit pico wieder modifizieren. Da die Änderungen nach dem Speichern aber nicht automatisch wirksam werden, muss man die dann noch aktiven Regeln löschen, und zwar mit dem Befehl
ipfw flush
Danach muss man die Firewall erneut wie gezeigt scharf schalten.
Da die Firewall nach einem Neustart des Rechners nicht automatisch aktiv ist, sollte man noch ein Skript erstellen, das die digitale Schutzmauer nach jedem Start aktiviert:

Das Start-Skript

Zum Anlegen des Start-Skripts für die Firewall muss man als Root-User arbeiten (Befehl: su). Man benötigt das Terminal und den Texteditor pico. Lege zunächst im Verzeichnis
/Library/StartupItems/
einen Ordner namens "ipfw" an:
mkdir /Library/StartupItems/ipfw
Dort lege mit pico wiederum eine neue Datei namens "ipfw" an:
pico /Library/StartupItems/ipfw/ipfw
Tippe folgende Zeilen ein:
#!/bin/sh
# Dieses Shell-Script startet die Firewall
/sbin/ipfw -q /etc/ipfw.conf
Speichern sie die Datei (ctrl-O) und beenden sie pico (ctrl-X). Nun legen sie mit pico eine zweite Datei mit Namen "StartupParameters.plist" an:
Tippe die folgenden Zeilen in die Datei:
{
  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/ipfw
Durch Implementierung des Start-Skripts ist die Firewall nach einem Systemstart automatisch aktiv. Während des Hochfahrens siehst du kurz die Meldung "Starting ipfw firewall".

Creative-Commons-Lizenz BY-NC-ND 3.0 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.

zurück zur Übersicht