netfilter | |
---|---|
Típusú | Tűzfal |
Fejlesztő | Netfilter alapcsapat |
Beírva | Xi |
Operációs rendszer | Linux kernelen |
Engedély | GNU GPL |
Weboldal | netfilter.org |
Médiafájlok a Wikimedia Commons oldalon |
A netfilter a 2.4-es verzió óta a Linux kernelbe beépített tűzfal (tűzfal).
Az iptables egy (a parancssorból futtatható) felhasználói segédprogram neve, amelyet a netfilter rendszer kezelésére terveztek. A rendszergazdák a csomagszűrést és -továbbítást szabályozó szabályok létrehozására és módosítására használják . Az IPv6 protokollcsaláddal való együttműködéshez létezik az iptables segédprogram külön verziója - ip6tables .
Egyes szerzők a netfilter szó alatt csak a tűzfal azon elemeit értik, amelyek közvetlenül a kernel protokoll verem részét képezik , és minden mást (a táblák és láncok rendszerét) iptables-nak nevezik [1] . A nem teljesen világos terminológia [2] miatt néha az egész projektet (a kernelen belüli tűzfalat a felhasználói segédprogrammal együtt) egyszerűen netfilter/iptables -nak nevezik .
A netfilter/iptables projektet 1998-ban Rusty Russell ( en:Rusty Russell ) alapította; ő a szerzője az ipchains előd projektnek is . A projekt fejlődésével 1999-ben megalakult a Netfilter Core Team (rövidítve coreteam). A kifejlesztett tűzfal hivatalosan a netfilter nevet kapta. 2000 márciusában bekerült a Linux 2.3 kernelbe. 2003 augusztusában Harald Welte lett a törzscsapat vezetője . 2004-ben a Welte pert indított és megnyert a Sitecom GmbH ellen, amely netfiltert használt termékeiben, de megtagadta a GNU GPL követését [3] .
Az iptables megjelenése előtt a Linux 2.2 ipchains és Linux 2.0 ipfwadm projektjei, amelyek viszont a BSD rendszer ipfw - jén alapulnak, a Linux tűzfalának biztosítására szolgáltak . Az ipchains és ipfwadm projektek megváltoztatták a Linux kernel protokollverme működését, mivel a netfilter megjelenése előtt a kernel architektúrában nem volt lehetőség további csomagkezelő modulok csatlakoztatására. Az iptables megőrizte az ipfwadm alapötletét - egy olyan szabálylistát, amely kritériumokból és egy olyan műveletből áll, amelyet meg kell tenni, ha egy csomag megfelel a kritériumoknak. Az ipchains-ben egy új koncepciót vezettek be - új szabályláncok létrehozására és a csomagok láncok közötti átmenetére, az iptables-ban pedig a koncepció négy táblázatra bővült, amelyek feladatonként határolják el a szabályláncokat: szűrés, NAT és csomagmódosítás. Ezenkívül az iptables kiterjesztette a Linux állapotát, lehetővé téve olyan tűzfalak létrehozását, amelyek munkamenet szinten működnek.
A netfilter rendszerben a csomagok láncokon haladnak át . A lánc szabályok rendezett listája , és minden szabály tartalmazhat feltételeket és egy műveletet vagy átmenetet . Amikor egy csomag áthalad a láncon, a netfilter rendszer sorra ellenőrzi, hogy a csomag megfelel-e a következő szabály összes feltételének, és ha igen, akkor végrehajt egy műveletet (ha nincs kritérium a szabályban, akkor a művelet végrehajtása a szabályon áthaladó összes csomag). Sok lehetséges kritérium létezik. Például egy csomag egyezik a --source 192.168.1.1 értékkel , ha a csomag fejléce azt határozza meg, hogy a küldő 192.168.1.1. Az átmenet legegyszerűbb típusa --jump, egyszerűen továbbítja a csomagot egy másik lánc elejére. A --jump paranccsal is megadhat egy műveletet . Az összes láncban elérhető szabványos műveletek a következők: ELFOGADÁS (kihagyás), DROP (törlés), QUEUE (átvitel külső programra elemzés céljából) és RETURN (visszatérés az előző lánchoz elemzés céljából). Például parancsokat
iptables -A BEMENET --forrás 192.168.1.1 --jump ELFOGADÁS iptables -A BEMENET --jump other_chainazt jelenti, hogy "adja hozzá a következő szabályokat az INPUT lánc végéhez : hagyja ki a csomagokat a 192.168.1.1-től, és küldje el a többi_láncra elemzés céljából mindent, amit el kell küldeni ".
5 féle szabványos lánc van beépítve a rendszerbe:
Saját láncokat is létrehozhat és megsemmisíthet az iptables segédprogrammal. [négy]
A láncok 4 táblázatba vannak rendezve:
Az azonos nevű, de különböző táblákban lévő láncok teljesen független objektumok. Például a raw PREROUTING és a mangle PREROUTING általában eltérő szabályokat tartalmaznak; A csomagok először a nyers PREROUTING láncon mennek keresztül , majd a PREROUTING mangle -n .
Az állapotgép (kapcsolatkövetés) egy kapcsolatkövető rendszer, a netfilter fontos része, amely munkamenet szinten állapottartó tűzfalat valósít meg. A rendszer lehetővé teszi annak meghatározását, hogy egy csomag melyik kapcsolathoz vagy munkamenethez tartozik. Az állapotmotor elemzi az összes csomagot, kivéve azokat, amelyek NOTRACK jelzéssel vannak ellátva a nyers táblában .
A netfilter rendszerben minden, az állapotmechanizmuson áthaladó csomagnak a négy lehetséges állapot egyike lehet:
A csomagok ezen osztályozása sok esetben eltér a hálózati protokollok hivatalos leírásától. Például a netfilter szerint a TCP SYN ACK csomag egy meglévő munkamenet része, míg a TCP definíció szerint az ilyen csomag csak egy munkamenet-nyitó elem.
Egyes protokollok szekcióinak meghatározása nagyon egyszerű; például egy UDP -munkamenet jele – egy kliens az X portról legalább 30 másodpercenként küld csomagokat az Y porton lévő szervernek (vagy fordítva). Más protokollok ( FTP , SIP , H.323 stb.) esetén a munkamenetet nehezebb meghatározni, és a netfilternek elemeznie kell a csomagok tartalmát, hogy helyesen meghatározza azok állapotát.
Az aktív kapcsolatok attribútumait a /proc/net/nf_conntrack (vagy /proc/net/ip_conntrack) pszeudofájlban tekintheti meg . Minden csatlakozásnál a következő információk jelennek meg:
tcp 6 117 SYN_SENT src=192.168.1.6 dst=192.168.1.9 sport=32775 dport=22 [VÁLASZTALAN] src=192.168.1.9 dst=192.168.1.6 sport=22 dport=32775 [BIZTOSÍTOTT] use=2A conntrack segédprogram lehetővé teszi az állapotészlelési mechanizmus vezérlését.
Az nftables egy olyan projekt, amely a meglévő {ip,ip6,arp,eb}tables csomagot helyettesíti.
Tűzfalak | ||
---|---|---|
Ingyenes | ||
Ingyenes |
| |
Kereskedelmi |
| |
Hardver |