Vanaf juli 2003 is de OpenBSD firewalltoepassing PF geporteerd naar FreeBSD en beschikbaar gekomen in de FreeBSD Portscollectie. In 2004 was FreeBSD 5.3 de eerste release die PF bevatte is integraal onderdeel van het basissysteem. PF is een complete en volledige firewall die optioneel ALTQ bevat (Alternate Queuing). ALTQ biedt Quality of Service (QoS) functionaliteit.
het OpenBSD Project levert een uitstekend werk wat betreft het onderhouden van de PF FAQ. Zodoende zal deze sectie van het handboek zich richten op PF met betrekking tot FreeBSD terwijl het ook wat algemene informatie over het gebruik zal geven. Voor gedetailleerde gebruikersinformatie wordt naar de PF FAQ verwezen.
Meer informatie over PF voor FreeBSD staat op
http://pf4freebsd.love2party.net/
.
Voeg de volgende regel toe aan /etc/rc.conf
om
de kernelmodule PF te laden:
pf_enable="YES"
Draai vervolgens het opstartscript om de module te laden:
#
service pf start
Merk op dat de PF module niet laadt als het het instellingenbestand
met de regelverzameling niet kan vinden. De standaardlocatie is
/etc/pf.conf
. Als de regelverzameling voor PF zich
elders bevindt, kan PF worden verteld om daar te kijken een regel
analoog aan de volgende aan /etc/rc.conf
toe te
voegen:
pf_rules="/pad/naar/pf.conf
"
Het voorbeeld pf.conf
bestand
kan gevonden worden in /usr/share/examples/pf
De module PF kan ook handmatig vanaf de opdrachtregel geladen worden:
#
kldload pf.ko
Logondersteuning voor PF wordt geleverd door
pflog.ko
en kan worden geladen door de volgende regel
aan /etc/rc.conf
toe te voegen:
pflog_enable="YES"
Draai vervolgens het opstartscript om de module te laden:
#
service pflog start
Als u andere mogelijkheden van PF nodig heeft dient u ondersteuning voor PF in de kernel te compileren.
Hoewel het niet nodig is om ondersteuning voor PF in de kernel te compileren, biedt dit wel de mogelijkheid om van een van PF's geavanceerde mogelijkheden gebruik te maken die niet in de laadbare module zitten, namelijk pfsync(4), dat een pseudo-apparaat is dat zekere veranderingen aan de toestandstabel die door PF wordt gebruikt prijsgeeft. Het kan worden gecombineerd met carp(4) om failover firewalls aan te maken die gebruik maken van PF. Meer informatie over CARP kan gevonden worden in Paragraaf 31.13, “Common Address Redundancy Protocol (CARP)” van het Handboek.
De kernelopties voor PF kunnen gevonden
worden in /usr/src/sys/conf/NOTES
en zijn
hieronder gereproduceerd:
device pf device pflog device pfsync
De optie device pf
schakelt ondersteuning
voor de “Packet Filter” firewall (pf(4)) in.
De optie device pflog
schakelt het
optionele pflog(4) pseudo-netwerkapparaat in dat gebruikt
kan worden om verkeer te loggen naar een bpf(4)
descriptor. De pflogd(8) daemon kan gebruikt worden om
de logboekinformatie naar schijf te schrijven.
De optie device pfsync
schakelt het
optionele pfsync(4) pseudo netwerkapparaat in waarmee de
toestandswijzigingen gemonitord kunnen worden.
De volgende rc.conf(5) statements stellen PF en pflog(4) in tijdens het opstarten:
pf_enable="YES" # Schakel PF in (laad module als nodig) pf_rules="/etc/pf.conf" # bestand met regels voor pf pf_flags="" # aanvullende vragen voor opstarten pfctl pflog_enable="YES" # start pflogd(8) pflog_logfile="/var/log/pflog" # waar pflogd het logboekbestand moet opslaan pflog_flags="" # aanvullende vlaggen voor opstarten pflogd
Als er een LAN achter de firewall staat en er pakketten doorgestuurd moeten worden naar computers op het LAN of als NAT actief is, dan is de volgende optie ook nodig:
gateway_enable="YES" # Schakel in als LAN gateway
PF leest de instelregels van
pf.conf(5) (standaard /etc/pf.conf
) en
het verandert, verwijdert, of geeft pakketten door aan de hand
van de regels of definities die daar zijn gespecificeerd. De
FreeBSD-installatie bevat een aantal voorbeeldbestanden in
/usr/share/examples/pf/
. In de PF FAQ staat een
complete behandeling van de PF regels.
Houd tijdens het doornemen van de PF FAQ in de gaten dat
verschillende versies van FreeBSD verschillende versies van PF kunnen
bevatten. Momenteel gebruikt FreeBSD 8.X
dezelfde versie van PF als OpenBSD 4.1.
FreeBSD 9.X
en hoger gebruiken dezelfde
versie van PF als OpenBSD 4.5.
De FreeBSD pakketfilter mailinglijst is een goede plaats om vragen over het instellen en draaien van de PF firewall te stellen. Vergeet niet de mailinglijstarchieven te controleren alvorens vragen te stellen!
Gebruik pfctl(8) om PF te beheren. Hieronder staan wat nuttige commando's (bekijk de hulppagina pfctl(8) voor alle beschikbare opties):
Commando | Doel | ||
---|---|---|---|
pfctl -e | PF aanzetten | ||
pfctl -d | PF uitzetten | ||
pfctl -F all -f /etc/pf.conf | Spoel alle regels door (nat, filter, toestand,
tabel, etc.) en herlaad vanuit het bestand
/etc/pf.conf | pfctl -s [ rules | nat | state ] | Rapporteer over de filterregels, NAT-regels, of toestandstabel |
pfctl -vnf /etc/pf.conf | Controleer /etc/pf.conf op
fouten, maar laad de regelverzameling niet |
ALTQ is alleen beschikbaar ondersteuning ervoor in de FreeBSD Kernel te compileren. ALTQ wordt niet door alle netwerkkaartstuurprogramma's ondersteund. In altq(4) staat een lijst met ondersteunde stuurprogramma's voor de betreffende versie.
Met de volgende opties wordt ALTQ ingeschakeld en additionele functionaliteit toegevoegd:
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 # Required for SMP build
options ALTQ
schakelt het
ALTQ raamwerk in.
options ALTQ_CBQ
schakelt Class Based
Queuing (CBQ) in. Met
CBQ kan de bandbreedte van een verbinding
worden opgedeeld in verschillende klassen of wachtrijen om
verkeer te prioriteren op basis van filterregels.
options ALTQ_RED
schakelt Random Early
Detection (RED) in.
RED wordt gebruikt om netwerkverstopping te
voorkomen. RED doet dit door de lengte van de
wachtrij te meten en die te vergelijken met de minimale en maximale
drempelwaarden voor de wachtrij. Als de wachtrij groter is
dan de maximale waarde worden alle nieuwe pakketten genegeerd.
Het werkt naar zijn naam, dus RED negeert
willekeurig pakketten van verschillende verbindingen.
options ALTQ_RIO
schakelt Random Early
Detection In and Out in.
options ALTQ_HFSC
schakelt de
Hierarchical Fair Service Curve Packet Scheduler
in. Meer informatie over HFSC staat op http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html
.
options ALTQ_PRIQ
schakelt Priority
Queuing (PRIQ) in.
PRIQ laat verkeer dat in een hogere wachtrij staat
altijd eerder door.
options ALTQ_NOPCC
schakelt
SMP ondersteuning voor
ALTQ in. Deze optie is verplicht op
SMP systemen.