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