28.4. Paket Filter (PF) von OpenBSD und ALTQ

Im Juli 2003 wurde PF, die Standard-Firewall von OpenBSD, nach FreeBSD portiert und in die FreeBSD-Ports-Sammlung aufgenommen. Die erste FreeBSD-Version, die PF als Teil des Basisssytems enthielt, war FreeBSD 5.3 im November 2004. Bei PF handelt es sich um eine komplette, vollausgestattete Firewall, die optional auch ALTQ (Alternatives Queuing) unterstützt. ALTQ bietet Ihnen Quality of Service (QoS)-Bandbreitenformung. Dadurch können Sie, basierend auf Filterregeln, unterschiedlichen Diensten eine bestimmte Bandbreite garantieren. Da das OpenBSD-Projekt bereits über eine hervorragende Dokumentation verfügt, wurde das PF-Handbuch nicht in dieses Kapitel aufgenommen.

Weitere Informationen finden Sie unter http://pf4freebsd.love2party.net/.

28.4.1. PF aktivieren

PF ist in Standardinstallationen von FreeBSD 5.3 oder neuer als eigenes, zur Laufzeit ladbares Kernelmodul enthalten. Das System lädt das PF-Kernelmodul automatisch, wenn die Anweisung pf_enable="YES" in /etc/rc.conf enthalten ist. Das ladbare Kernelmodul wurde mit aktivierter pflog(4)-Protokollierung erstellt.

Anmerkung: Das Kernelmodul geht davon aus, dass die Einträge options INET sowie device bpf in Ihrer Kernelkonfigurationsdatei vorhanden sind. Haben Sie NO_INET6 (seit FreeBSD 6.X) oder NOINET6 (in FreeBSD-Versionen vor 6.X) nicht definiert, benötigen Sie (etwa in make.conf(5)) zusätzlich die Option options INET6.

Nachdem Sie das Kernelmodul geladen oder die PF-Unterstützung statisch in Ihren Kernel kompiliert haben, können Sie pf über den Befehl pfctl aktivieren beziehungsweise deaktivieren.

Das folgende Beispiel zeigt, wie Sie pf aktivieren:

# pfctl -e

pfctl ermöglicht es Ihnen, die pf-Firewall zu steuern. Lesen Sie pfctl(8), bevor Sie das Programm einsetzen.

28.4.2. Kernel-Optionen

Es ist nicht zwingend nötig, dass Sie PF durch die Angabe der folgenden Optionen in den FreeBSD-Kernel kompilieren. Kompilieren Sie die PF-Unterstützung in Ihren Kernel, so wird das Kernelmodul nie verwendet werden. Die folgenden Angaben dienen daher nur als Hintergrundinformationen.

/usr/src/sys/conf/NOTES enthält Beispiele für die Kernelkonfigurationsoptionen von PF:

device pf
device pflog
device pfsync

device pf aktiviert die Unterstützung für die “Packet Filter”-Firewall.

device pflog aktiviert das optionale pflog(4)-Pseudonetzwerkgerät, das zum Protokollieren des Datenverkehrs über einen bpf(4)-Deskriptor dient. pflogd(8) ist in der Lage, diese Protokolldateien auf Ihre Platte zu speichern.

device pfsync aktiviert das optionale pfsync(4)-Pseudonetzwerkgerät für die Überwachung von “Statusänderungen”. Da es sich dabei nicht um einen Bestandteil des Kernelmoduls handelt, muss diese Option auf jeden Fall in den Kernel kompiliert werden, bevor man sie verwenden kann.

Diese Einstellungen werden erst dann übernommen, wenn man einen Kernel mit diesen Optionen kompiliert und installiert.

28.4.3. Verfügbare rc.conf-Optionen

Um PF beim Systemstart zu aktivieren, benötigen Sie die folgenden Einträge in /etc/rc.conf:

pf_enable="YES"                 # PF aktivieren(Modul, wenn nötig, aktivieren)
pf_rules="/etc/pf.conf"         # Datei mit Regeldefinitionen für pf
pf_flags=""                     # zusätzliche Parameter für den Start von pfctl
pflog_enable="YES"              # stare pflogd(8)
pflog_logfile="/var/log/pflog"  # wo soll pflogd die Protokolldatei speichern
pflog_flags=""                  # zusätzliche Parameter für den Start von pflogd

Wenn Sie ein lokales Netzwerk hinter dieser Firewall betreiben, und Pakete für dessen Rechner weiterleiten oder NAT verwenden wollen, benötigen Sie zusätzlich die folgende Option:

gateway_enable="YES"            # LAN Gateway aktivieren

28.4.4. ALTQ aktivieren

ALTQ muss vor der Verwendung in den FreeBSD-Kernel kompiliert werden. Beachten Sie, dass ALTQ nicht von allen verfügbaren Netzwerkkartentreibern unterstützt wird. Sehen Sie daher zuerst in altq(4) nach, ob Ihre Netzwerkkarte diese Funktion unter Ihrer FreeBSD-Version unterstützt. Die folgenden Kerneloptionen aktivieren ALTQ sowie alle Zusatzfunktionen:

options         ALTQ
options         ALTQ_CBQ        # Class Bases Queuing (CBQ)
options         ALTQ_RED        # Random Early Detection (RED)
options         ALTQ_RIO        # RED In/Out
options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)
options         ALTQ_PRIQ       # Priority Queuing (PRIQ)
options         ALTQ_NOPCC      # Wird von SMP benötigt

options ALTQ aktiviert das ALTQ-Framework.

options ALTQ_CBQ aktiviert das Class Based Queuing (CBQ). CBQ erlaubt es, die Bandbreite einer Verbindung in verschiedene Klassen oder Warteschlangen zu unterteilen, um die Priorität von Datenpaketen basierend auf Filterregeln zu ändern.

options ALTQ_RED aktiviert Random Early Detection (RED). RED wird zur Vermeidung einer Netzwerkverstopfung verwendet. Dazu ermittelt RED die Größe der Warteschlange und vergleicht diesen Wert mit den minimalen und maximalen Grenzwerten der Warteschlange. Ist die Warteschlange größer als das erlaubte Maximum, werden alle neuen Pakete verworfen. Getreu seinem Namen verwirft RED Pakete unterschiedlicher Verbindungen nach dem Zufallsprinzip.

options ALTQ_RIO aktiviert Random Early Detection In and Out.

options ALTQ_HFSC aktiviert den Hierarchical Fair Service Curve -Paketplaner. Weitere Informationen zu HFSC finden Sie unter http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html.

options ALTQ_PRIQ aktiviert Priority Queuing (PRIQ). PRIQ lässt Verkehr einer Warteschlange mit höherer Priorität zuerst durch.

options ALTQ_NOPCC aktiviert die SMP Unterstützung von ALTQ. Diese Option ist nur auf SMP-System erforderlich.

28.4.5. Filterregeln generieren

Der Packetfilter liest seine Konfiguration aus der Datei pf.conf(5) ein, um entsprechend der dort definierten Regeln Pakete durchzulassen oder zu verwerfen. Die Standardinstallation von FreeBSD enthält bereits eine beispielhafte Version der Datei /etc/pf.conf mit einigen hilfreichen Beispielen und Erklärungen.

Obwohl FreeBSD eine eigene Version der Datei /etc/pf.conf enthält, wird dennoch die gleiche Syntax wie unter OpenBSD verwendet. Das OpenBSD-Team hat eine großartige Dokumentation zur Konfiguration von pf geschrieben, die unter http://www.openbsd.org/faq/pf/ erhältlich ist.

Warnung: Denken Sie beim Lesen des pf-Handbuch daran, dass die verschiedenen FreeBSD-Versionen unterschiedliche Versionen der pf-Firewall einsetzen. So wird unter FreeBSD 5.X noch die OpenBSD-Version 3.5 der Firewall verwendet, während in den FreeBSD-6.X-Versionen die OpenBSD-Version 3.7 zum Einsatz kommt.

Haben Sie weitere Fragen zur pf-Firewall, so können Sie diese auf der Mailingliste FreeBSD packet filter mailing list stellen. Vergessen Sie aber nicht, vorher die Archive der Mailinglisten zu durchsuchen, bevor Sie dort eine Frage stellen.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.