Csomagszűrő

Csomagszűrő (PF)
Típusú Tűzfal
Fejlesztő OpenBSD projekt
Beírva C [1] [2]
Operációs rendszer BSD rendszerek
Első kiadás 2001. december 1. [3]
legújabb verzió 4.8 ( 2010. november 1. )
Engedély BSD
Weboldal GYIK

A Packet Filter (PF) egy tűzfal , amelyet az OpenBSD projekt részeként fejlesztettek ki . Nagy sebességgel, egyszerű konfigurációval és nagyszerű funkciókkal rendelkezik, beleértve az IPv6 támogatását . Jelenleg az OpenBSD mellett a NetBSD -ben [4] és a FreeBSD -ben [5] , valamint az e háromra épülő MirOS BSD - ben, DesktopBSD -ben, pfSense -ben és másokban használatos. A 10.7 PF verzió óta a Mac OS X rendszerben használatos. A PF-et a Microsoft Windows rendszerre portolták , és ez képezte a Core Force tűzfal alapját [6] .

Történelem

A PF története 2000-ben kezdődött, amikor Darren Reid , az OpenBSD-ben akkoriban használt IPFilter tűzfal fejlesztője megváltoztatta a licencét. Ezután az ipf-t kizárták a CVS -tárból, és a helyére a semmiből írt OpenBSD 3.0 kiadása került.

Az OpenBSD 3.3 bevezette a pfsync -et  , egy pszeudo-interfészt, amely lehetővé teszi a kapcsolati környezet információinak replikálását két (és később több) gazdagép között. CARP vagy más hasonló technológia használatakor a pfsync különösen lehetővé teszi több fizikai tűzfalból hibatűrő konfigurációk létrehozását: ha az egyik gazdagép meghibásodik, a második a kapcsolatok megszakítása nélkül folytatja a hálózati forgalom feldolgozását.

Kezdetben a PF nagyon hasonlított az IPFilterhez. A belső építészet jelentős átalakítása 2005-ben kezdődött [7] Henning Brower és Ryan McBride erőfeszítései révén . Ennek a projektnek a részeként a PF támogatást kapott egy új típusú egyezési szabályokhoz , egy új sémához a kapcsolatok kontextusának elszámolására ( az eredeti terminológiában az angol  kijelentések ). Egy másik jelentős változás a szabálykészletek típusonkénti szétválasztásának megtagadása volt: korábban a PF-nek az IPFilterhez hasonlóan külön szabálykészletei voltak a NAT -hoz és a forgalomszűréshez. Az OpenBSD általános fejlesztésének részeként a PF több tábla és útválasztási tartomány támogatását is megkapta .

Építészet

A PF két részből áll: magából a csomagszűrőből [8] és a pfctl segédprogramból [9] , amely interfészt biztosít a tűzfal kezeléséhez. A szűrő teljes mértékben az operációs rendszer kernel környezetében működik, a vele való interakció az ioctl rendszerhíváson keresztül történik . [10] Ezért a pfctl szigorúan véve nem szükséges része a PF-nek.

A PF-t eredetileg nem többszálú csomagfeldolgozásra tervezték. Másrészt a zárak hiánya pozitív hatással van a teljesítményre.

Optimalizálás

A PF képes kihagyni a szükségtelen ellenőrzéseket, miközben átadja a szabálylistát. Például, ha két szabály egymás után csak a TCP protokollra hivatkozik , akkor bármely más protokoll (például UDP ) csomagja, miután az nem felel meg az első szabálynak, nem kerül ellenőrzésre a másodikon. Ehhez először is egy szabálykészlet összeállításakor a pfctl az ellenőrzések optimális sorrendjének ismeretében több egymást követő szabály kölcsönös sorrendjét tudja megváltoztatni; majd az elkészített halmazt elemzik a PF-be való betöltéskor, és minden szabályhoz egy átmeneti térképet állítanak össze az egyik vagy másik paraméter eltérésére.

A szabályok listájának optimalizálásakor a PF figyelembe tudja venni a szabályok ellenőrzési gyakoriságának halmozott statisztikáit is, és ezeknek a statisztikáknak megfelelően módosíthatja az átmenet térképét.

Hogyan működik

A szűrő egyben dolgozza fel a hálózati csomagokat (ha ugyanarról a számítógépről küld csomagot , amelyre a szűrő telepítve van, vagy fordítva) vagy kettőben (ha a számítógépen belül továbbítja, vagy amikor a szűrőt tartalmazó számítógép hálózati átjáróként működik ) feldolgozási ciklus.

A csomag tényleges feldolgozása egy szabályrendszer szerint történik. A feldolgozás végén a csomagot eldobják vagy kihagyják. Minden szabály egy feltételkészletből és egy utasításkészletből áll, amelyek akkor hajtódnak végre, ha a feltételek teljesülnek. Háromféle szabály létezik:

mérkőzés Ha a csomag megfelel a szabály feltételeinek, akkor a szabályból származó utasítások azonnal végrehajtásra kerülnek. Az egyezési szabályokat általában a NAT-hoz, a forgalomnaplózáshoz, a QoS -hez és így tovább használják. Blokk Ha a csomag nem felel meg a szabály feltételeinek, akkor blokkolhatóként jelöli meg. A PF lehetővé teszi, hogy egyszerűen eldobja a csomagot, vagy ICMP hibaüzenetet generáljon. pass Ha a csomag megfelel a szabály feltételeinek, akkor továbbadandónak jelöljük.

A blokk- és átadási szabályokhoz írt utasítások a szabálykészleten való áthaladás befejezése után végrehajtásra kerülnek. Ha egy blokk- vagy átengedési szabályt ennek megfelelően jelölünk meg, akkor ha a csomag megfelel ennek a szabálynak a feltételeinek, a szabálykészleten való áthaladás megszakad a megfelelő utasítások végrehajtásával. Ez a sorrend lehetővé teszi egy sor szabály beállítását, amelyek fokozatosan szűkítik a hatókört, ami természetesebbnek tűnik, mint a fordított sorrend. Ha egyetlen blokk- vagy átengedési szabály sem egyezik, akkor a csomag átadásra kerül: ez a tűzfal beállításakor fellépő véletlen hiba elleni védelem mértéke.

A szabályok a következő irányelveket tartalmazhatják:

normalizálás töredezett és nyilvánvalóan hibás csomagok összeállítása, valamint egyéb, a további feldolgozást egyszerűsítő műveletek; adás a forgalom átirányítása az OSI modell 2. rétegében (finomabb, mint amit a hagyományos útválasztó eszközök biztosítanak ) és 3. rétegében, a NAT és a célcímkészletek támogatásával ; fontossági sorrend a csomag szolgáltatástípusának kényszerített beállítása , a csomag egyik vagy másik sorba helyezése ALTQ ; szűrés meghozza a végső döntést egy hálózati csomag átadására vagy blokkolására.

Szűrési lehetőségek

A PF a következő paraméterekkel tudja szűrni a csomagokat:

Az utolsó lehetőség lehetővé teszi olyan szabályok létrehozását, amelyek "néha" aktiválódnak, ami segít leküzdeni (néha nem szándékos) DDoS-támadásokat .

A címkéket PF-szabályok rendelik hozzá. Minden csomag legfeljebb egy címkét tartalmazhat. Egy címkét beállíthat/lecserélhet szabállyal, de nem távolíthat el egy meglévőt. A címkét a csomag mindaddig megtartja, amíg áthalad a hálózati veremen.

A PF lehetővé teszi a használt útválasztási tábla felülbírálását is, így a csomagok átvihetők az útválasztási tartományok között. Ennek persze csak a bejövő forgalomnál van értelme, aminek az útvonalat még nem határozták meg szabványos eszközökkel.

Megadhat címkéket a szabályokhoz . Ugyanaz a címke több szabálynak is megfelelhet. A címkék lehetővé teszik a szabályok jobb azonosítását a felhasználói térből, valamint letiltják bizonyos szabályok beépített szabálykészlet-optimalizálását; ez utóbbira például számlázórendszereknél lehet szükség.

A PF nemcsak a kontextus alapján tudja szűrni, hanem három lehetőséget is támogat ebben a módban (az eredeti dokumentáció terminológiája):

állapot megtartása egyszerű mód, csak a hálózati cím- és portpárok megfeleltetése emlékszik; ez a mód nem csak a TCP-re, hanem az UDP-re is vonatkozik. modulál állapot összetettebb mód, amelyben a PF függetlenül választja ki a TCP-csomagszámlálók kezdeti értékeit; ez jobb védelmet biztosít azokban az esetekben, amikor az egyik fél ezeknek a számlálóknak az értékeit rossznak választja a találgatás valószínűsége szempontjából. szinproxy állapot ebben az üzemmódban a PF önállóan létesít TCP kapcsolatot a másik oldallal, és csak ezután küldi el a megfelelő csomagokat a kezdeményezőnek; ez védelmet nyújt a feladó címét meghamisító SYN árvíztámadások ellen .

Alapértelmezés szerint minden átadási szabály figyelembe veszi a kontextust (keep state), a TCP-vel kapcsolatosak pedig a SYN-csomag zászlóit is ellenőrzik. Ez azért van így, mert lehetővé teszi a szabályok mennyiségének jelentős csökkentését (mind számuk, mind a konfigurációs fájlban való leírásuk tekintetében) tipikus helyzetekben. Ugyanakkor ezeket a funkciókat egy adott szabályhoz vagy a teljes készletükhöz erőszakosan visszautasíthatja. Figyelembe kell venni azt is, hogy ha a csomag nem esik egyetlen átengedési szabály alá sem, akkor nem történik ellenőrzés és kontextus létrehozása.

Címtáblázatok

A PF egyik legérdekesebb funkciója a címtáblázatokkal való munka:

Például az összes privát cím [11] [12] [13] beírható egy táblázatba egyetlen táblában, majd a kívülről érkező csatlakozási kísérletek állítólag ezekről a címekről egyetlen szabállyal blokkolhatók.

Ezenkívül a címkizárási jelzők (címtartományok) használatával a következő konfigurációt lehet megadni mindössze három bejegyzés segítségével a táblázatban: a táblázat tartalmazza a tartományt 10.0.0.0/8, kivéve a 10.0.3.192/26, plusz a következőt is 10.0.3.211. A táblázat megfelelő bejegyzései tetszőleges sorrendben adhatók meg, a PF ezeket az előtagjaik szerint fogja használni (alhálózati maszk).

A harmadik féltől származó programok az ioctl rendszerhíváson vagy a pfctl programhíváson keresztül módosíthatják a táblák tartalmát. Például az OpenBSD DHCP szerver dhcpd (nem elérhető hivatkozás) legfeljebb három PF táblát támogat:  

Szabályblokkok

A szabályok blokkokba kombinálhatók ( horgonyok az eredeti dokumentációban). Ebben az esetben minden blokkhoz beállíthat általános paramétereket, amelyek a blokkban lévő összes szabályra érvényesek lesznek.

A blokkok feldolgozása a szabályokkal megegyezően történik, és egymásba ágyazhatók. Ugyanakkor a blokkok tartalma egymástól függetlenül, valamint az általános szabálylistából is változtatható. Ez utóbbi valójában ugyanaz a blokk.

A szabályblokkok kényelmesen használhatók olyan programokban, amelyek valamilyen módon kezelik a forgalom áramlását. Program példák:

Irodalom

Jegyzetek

  1. http://openbsd.su/src/sys/net/
  2. http://openbsd.su/src/sbin/pfctl/
  3. Angol Wikipédia közösség Wikipédia  (angol) - 2001.
  4. Változások és NetBSD hírek 2005-ben . netbsd.org. Letöltve: 2020. február 4. Az eredetiből archiválva : 2020. január 17.
  5. FreeBSD/amd64 5.3-RELEASE Kiadási megjegyzések . www.freebsd.org. Letöltve: 2020. február 4. Az eredetiből archiválva : 2010. december 23.
  6. CORE FORCE Archiválva : 2009. május 6.
  7. Henning Brauer. "Placeholder: valami OpenBSD-vel kapcsolatos" (6. dia) . Az eredetiből archiválva : 2012. február 14.
  8. pf(4) man page (downlink) . Letöltve: 2008. október 6. Az eredetiből archiválva : 2010. november 25.. 
  9. pfctl(8) man page (downlink ) . Letöltve: 2008. október 6. Az eredetiből archiválva : 2011. április 22.. 
  10. ioctl(2) kézikönyvoldal  (lefelé hivatkozás)
  11. RFC 1918 archiválva : 2008. október 20. a Wayback Machine -nél (privát internetcímek)
  12. RFC 3927  (lefelé irányuló kapcsolat) ( Zeroconf címei )
  13. IP Filter HOGYAN Archiválva : 2006. április 27. a Wayback Machine -nél, jó listát tartalmaz a privát címekről magyarázatokkal

Linkek