OpenBSD PF

A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen Epe (vitalap | szerkesztései) 2007. november 24., 23:58-kor történt szerkesztése után volt.

(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

A PF (Packet Filter) az OpenBSD beépített tűzfal rendszere, az OpenBSD 3.0 óta a hivatalos kernel része. Megtalálható a legtöbb egyéb BSD rendszerben is, így a FreeBSD, a NetBSD és a DragonFlyBSD is támogatja.

Tartalomjegyzék

1 A PF aktiválása

A PF boot idejű elindításához a /etc/rc.conf.local fájlba a pf=YEY bejegyzést kell rögzíteni, mely beállítás a következő reboot hatására lép életbe.

A PF az operációs rendszer működése közben is aktiválható és deaktiválható az általános sedédprogram a pfctl segítségével:

# pfctl -e
# pfctl -d

2 Konfiguráláció

2.1 A konfigurációs fájl betöltése

Az tűzfal beállításai a /etc/pf.conf fájlban találhatók, ahonnan a PF a konfigurációt az indulása közben beolvassa. A konfiguráció módosítása a fájl szerkesztésével történhet, mely a pfctl -f /etc/pf.conf parancs hatására kerül a működő rendszerbe betöltésre. A parméter módosításával természetesen más konfigurációs fájl is használható.

2.2 A pf.conf felépítése

A pf.conf fájl hét részből áll, melyek opcionáliask, de az első kettőt kivéve a sorrend rögzített:

  • Makrók: a felhasználó által definiált változók: IP címek és tartományok, interfész nevek...
  • Táblázatok: (nagy számú) IP cím tárolására kitalált struktúrák, melyekben a keresés nagyon gyors
  • Beállítások: általános beállítások a PF viselkedésével kapcsolatban
  • Forgalom tisztítás: a csomagok darabjainak összeállítása, hibás (illegális tartalmú) csomagok eldobása
  • Várakozási sorok: a sávszélesség elosztása, illetve csomagok prioritásának beállítása
  • Címfordítás és port-forwarding: a NAT beállításai és port-forwarding továbbítási szabályok
  • Szűrési szabályok: a csomagok szűrése a megadott szabályok alapján

2.2.1 Listák és makrók

Listák és makrók segítéségvel egy szabály több IP-cmíre vagy interfészre is alkalmazható:

block out on fxp0 from { 192.168.0.1, 10.5.32.6 } to any

A listák a szabályok betöltése során felbontásra kerülnek, így az előző sor a betöltés után két szabályt eredményez majd:

block out on fxp0 from 192.168.0.1 to any
block out on fxp0 from 10.5.32.6 to any

A makrók segítségével a listáknak nevek adhatók, illetve listák egymásba ágyazására is lehetőség nyílik. A makrók a későbbiek során a beállítások között bárhol felhasználhatóak, így nagyban egyszerüsítik a konfiguráció átláthatóságát, illetve a módosításokat is csak a makró definíciójában kell végrehajtani.

host1 = "192.168.1.1"
host2 = "192.168.1.2"
all_hosts = "{" $host1 $host2 "}"


2.2.2 Táblázatok

A táblázatok célja nagy mennyiségű IP címet hatékonyan tárolni. Táblázat használata esetén a keresés nagyon gyors, a tábla méretétől szinte függetlenül. Amennyiben a táblákat a konfiguráció során a persist paraméterrel hozzuk létre, akkor lehetőség van a tábla tartalmát futási időben módosítani is.

table <goodguys> { 192.0.2.0/24 }
table <rfc1918> const { 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }
table <spammers> persist
block in on fxp0 from { <rfc1918>, <spammers> } to any
pass in on fxp0 from <goodguys> to any

A spammers táblához egy külső fájl is rendelhető, melynek tartalma a konfiguráció betöltése közben a táblába kerül. A pftcl segítségével lehetőség van a táblák tartalmát működés közben módosítani, elemeket felvenni és törölni.


2.2.3 Csomagszűrés

A szabályok általános alakja az alábbi:

action [direction] [log] [quick] [on interface] [af] [proto protocol] \
[from src_addr [port src_port]] [to dst_addr [port dst_port]] \
[flags tcp_flags] [state]

Amennyiben egy interfész neve zárójelben szerepel egy szabályban, akkor a PF minden alkalommal az interfész aktuális IP címét fogja halsználni, így a helyi dinamikus IP címek könnyen kezelhetőek.

Az utolsó




3 Egyéb szolgáltatások




Személyes eszközök