A netfilter csomagszűrő tűzfal
Történelem A linux kernelben 1994 óta létezik csomagszűrési lehetőség. A nagyobb állomásokat, lépcsőket általában a usertérbeli konfigurációs program nevéhez kötik: kernel verzió fejlesztő név megjegyzés 1.1 Alan Cox ipfw BSD alapján 2.0 Jos Vos ipfwadm új név 2.2 Rusty Russel, Michael Neuling ipchains teljes átírás 2.3 Rusty Russel iptables továbbfejlesztés Magyar fejlesztők: Kadlecsik József, Kis-Szabó András Az iptables kernelbeli párja a netfilter (2.4-ben és 2.6-ban is ez van). A visszafele kompatibilitás miatt vannak ipfwadm és ipchains modulok, de ezek használata nem javasolt.
Csomagszűrő Rendszer, mely képes a hálózat csomagjait szétválogatni. A szempontokat a rendszer fejlettsége határozza meg. A linux kernel csomagszűrői egyre fejlettebbek: ipchains megbízahtó, viszonylag kis tudású iptables nagytudású, modulokkal bővíthető Állapottartó / nem állapottartó csomagszűrők csomagok egységként kezelése (kapcsolattábla) újraindításnál, sok kapcsolatnál vigyázni
A netfilter A linux hálózati stackjeinek (pl. IPv4) belépési pontjain hívódik meg. Komponensekből, alrendszerekből áll, melyek a pontokhoz regisztrálják magukat különböző prioritásokkal. Az alrendszerek megvizsgálják / megváltoztatják a csomagot: ACCEPT folytassa útját a netfilterben és a veremben DROP dobja el STOLEN az alrendszer kezeli tovább, a stack felejtse el QUEUE kerüljön át a usertér várakozási sorába A netfilterhez tartozik még: dokumentáció, howto, FAQ, levelezőlista, patch-o-matic és forráskód.
IPv4 belépési pontok
IPv4 alrendszerek raw connection tracking mangle NAT filter
Raw alrendszer A PREROUTING és OUTPUT pontokon juthatunk hozzá. Legelső alrendszer, a későbbi alrendszerek viselkedését módosítja: TRACE megjelölés naplózáshoz NOTRACK megjelölés figyelmen kívül hagyáshoz
Connection tracking connection tracking = kapcsolat nyomkövetés: ezért állapottartó PREROUTING, OUTPUT: automatikus defregmentáció kell POSTROUTING, INPUT pontoknál lagalacsonyabb prioritású, mert a kapcsolattábla csak a túlélő csomagokat jegyzi Csomagok állapota: NEW, ESTABLISHED, RELATED, INVALID RELATED: ICMP hibaüzenetek (már létező kapcsolatra) és segédcsatornákat használó protokollok helper modulok segítségével (FTP, IRC, H.323, stb.) A kapcsolattábla maximális mérete állítható (a fizikai memória függvénye)
Mangle alrendszer Minden belépési ponton elérhető 2.4.19 óta. Az általános IP és routing paramétereket módosítja. MARK megjelölés speciális routinghoz TTL életciklus növelés / csökkentés DSCP/TOS továbbítási prioritás átállítása MSS maximális szegmensméret ECN ha nincs támogatva
NAT alrendszer SNAT forráscím / port átírás: POSTROUTING, INPUT MASQUERADE DNAT célcím / port átírás: PREROUTING, OUTPUT REDIRECT Ameddig lehet, megmarad az eredeti port, ütközés elkerülése végett pedig tartományon belüli forrásport átírás történik. A tartományok: 0 511 512 1023 1024 65535
Filter alrendszer Az INPUT, FORWARD és OUTPUT pontoknál érhető el. Az eredeti IP-ket látja (nem a NAT-oltat). Szűrőszabályokat definiálhatunk, melyekben a csomagok szűrésére / egyeztetésére rengeteg lehetőrég van. Megadhatjuk az egyező csomagok további útját / célját.
Csomag-egyeztetés Néhány megadható egyezési feltétel: MAC cím interfész forrás- és célcím / maszk protokoll TCP: port, flagek, paraméterek UDP: port ICMP: típus / kód állapot (connection tracking-beli) tos, ttl, length, mark, stb. érvénytelen csomag típusa helyi csomagindításnál: uid, gid, pid, sid, cmd...
Patch-o-matic A netfilter keretrendszer könnyen bővíthető, de az ütközések elkerülése miatt szükséges egy patch kezelő. Olyan nagy, hogy az iptables-től különvált, CVS-sel érhető el. Minden patch-hez segítő és kiegészítő fájlok vannak. Patch csoportok vannak: submitted a jelenlegi kernelben vannak pending következő kernelben lesznek base egyszerűek, teszteltek, nem ütköznek extra ütköznek, nem teszteltek, kérdésesek
http://www.netfilter.org