Ipfw
# Ipfw

ipfw oder ipfirewall ist eine Internet-Protocol-Firewall des Betriebssystems FreeBSD.

## Architektur

ipfw besteht aus 7 Komponenten:
* Paketfilter
* Logging
* Network Address Translation
* Traffic-Shaping
* Forwarding
* Bridge
* Stealth
Hinzu kommt eine Benutzerschnittstelle gleichen Namens, die Befehle entgegennimmt.

## Geschichte

ipfw wurde ursprünglich von Daniel Boulet für das Unternehmen Berkeley Software Design Incorporated programmiert. Für FreeBSD programmierte Ugen J. S. Antsilevich die Software neu. FreeBSD 2.0 war die erste Version mit ipfw. Mit FreeBSD 2.2.8 wurde ipfw um die Komponente dummynet für Traffic-Shaping ergänzt, die Luigi Rizzo programmiert hatte.
Seit FreeBSD 4.0 unterstützt ipfw auch Stateful Packet Inspection.
2002 löste ipfw2 mit neu gestaltetem Kern die erste Generation ab. In FreeBSD 4.7 war die zweite Generation erstmals enthalten und fasste auch die separaten Benutzerschnittstellen für IPv4 und IPv6 zusammen.
Die Implementierung von Network Address Translation erfolgte 2005.
Seit FreeBSD 6.2 kann ipfw je nach Bedarf beim Booten als Modul geladen werden und muss nur noch für Network Address Translation dauerhaft bei der Kompilierung des Kernels eingebunden werden.
Ipfw war Bestandteil von Mac OS X bis Version 10.9, ersetzt wurde es durch pf.

## Anwendung

In Grundeinstellung unterbindet ipfw jeglichen Netzwerkkontakt. Die zentrale Konfiguration erfolgt in den Dateien /etc/rc.conf und /etc/rc.firewall. Dort kann ipfw aktiviert und eine grundlegende Konfiguration gewählt oder auf eine Datei mit selbst erstellten Regeln verwiesen werden. Alternativ kann auf ein Skript verwiesen werden, das alle Befehle der Benutzerschnittstelle enthalten kann und dadurch vielfältige Möglichkeiten eröffnet. So können auch Präprozessoren aufgerufen werden, um mittels Programmiersprachen wie C Regeln zu erzeugen.
Trotz der vielfältigen Möglichkeiten kann eine Befehlsfolge für eine komplette Konfiguration übersichtlich sein:
Dieses Beispiel erlaubt eingehende Verbindungen auf dem Port 80 für das Hypertext Transfer Protocol, alle eingehenden Verbindungen aus einem bestimmten Bereich von IP-Adressen, sowie alle abgehenden Verbindungen, aber keine anderen Verbindungen.
Die Regeln werden bis zur ersten ohne unzutreffende Bedingung durchlaufen, worauf die betreffende Freigabe oder Ablehnung wirksam wird. Eine Konfiguration kann bis zu 65535 Regeln umfassen. Jede Regel erhält eine Nummer, die manuell oder automatisch gesetzt wird und als Sprungmarke dienen kann.

## Portierung auf Linux

Der erste Paketfilter von Linux war eine Portierung von ipfw. Die ursprüngliche Benutzerschnittstelle wurde später durch ipfwadm ersetzt. ipfw mit ipfwadm wurde anschließend durch ipchains abgelöst und letztlich durch netfilter mit iptables.

## Portierung auf Windows

wipfw ist eine Portierung von ipfw auf Microsoft Windows NT. Seit Ende 2006 unterstützt sie auch unmittelbar 64-Bit-Architekturen. Einstweilen ist allerdings nur die Unterstützung von Windows NT 5 gegeben und die Unterstützung von Windows NT 6.1 experimentell. Traffic-Shaping und das Ändern von Datenpaketen ist in wipfw nicht implementiert.