From Wikipedia, the free encyclopedia
Netfilter je framework obsažený v jádře Linuxu od verze 2.4.x, který nabízí mnoho možností při filtrování paketů, překladu síťových adres (NAT) a nebo překladu síťových portů (PAT). Netfilter nahrazuje zastaralý modul ipchains v Linuxovém jádře verze 2.2.
Vývojář | Netfilter Core Team |
---|---|
Aktuální verze | 3.19.3 (26. 3. 2015) |
Připravovaná verze | 4.0-rc5 (22. 3. 2015) |
Operační systém | Linux |
Platforma | Linux Linux-libre |
Vyvíjeno v | C |
Typ softwaru | Modul jádra Linux, Firewall |
Licence | GNU GPLv2 |
Web | http://www.netfilter.org/ |
Některá data mohou pocházet z datové položky. |
Netfilter představuje sadu hooků v jádře Linuxu, které povolují ostatním modulům jádra registrovat callbacky na network stack. Registrovaný callback je pak zavolán pro každý paket, který projde příslušným hookem v TCP/IP stacku.[1]
Rusty Russel odstartoval projekt netfilter/iptables v roce 1998. Postupem času projekt rostl a v roce 1999 založil Netfilter Core Team (zkráceně coreteam). Software, který vytvořili (později nazvaný jako netfilter) užíval GNU GPL a v březnu 2000 byl včleněn do hlavní vývojové větve jádra Linuxu verze 2.3.x.
V srpnu 2003 se stal vedoucím coreteamu Harald Welte. V dubnu 2004 proběhl zásah proti distributorům softwaru Netfilteru použitého v routerech, kteří nedodržovali podmínky GPL licence. Německý soud následně vydal soudní příkaz proti společnosti Sitecom Germany, která odmítala dodržovat podmínky GPL licence.[2] V září 2007 se stal vedoucím coreteamu Patrick McHardy, který v posledních letech vedl vývoj Netfilteru.
V roce 2013, během workshopu Netfilteru v Copenhagenu v Dánsku, převzal vedení coreteamu Pablo Neira Ayuso.
Moduly jádra ip_tables
, ip6_tables
, arp_tables
a ebtables
jsou významné součásti hook systému Netfilteru. Tyto moduly poskytují tabulkový systém pro definování pravidel firewallu pro filtrování, nebo transformování paketů. Tabulky lze obsluhovat pomocí nástrojů iptables
, ip6tables
, arptables
a ebtables
. Pravidla jsou organizovány do řetězů a slouží k ovlivňování paketů při průchodu TCP/IP stackem.
nftables
je user space část nového klasifikačního enginu pro průchod paketů jádrem systému, který by měl být nástupcem iptables
. Tento engine přidává jednoduchý virtuální stroj, který je schopný spouštět bajtkód, aby zkontroloval síťový paket a následně učinil rozhodnutí, jak má být s paketem dále zacházeno. Virtuální stroj může získat data z paketu, podívat se na přidružená metadata a spravovat data o sledování připojení. Dále je schopen virtuální stroj manipulovat se sady dat (typicky IP adresy), což umožňuje nahradit více porovnávacích operací pouze jedním vyhledáním v sadě dat.
Výhody oproti iptables
Modul nf_defrag_ipv4
defragmentuje IPv4 pakety, než dosáhnou modulu pro sledování připojení nf_conntrack_ipv4
. To je nezbytné pro spolehlivé fungování tohoto modulu a pro pomocné moduly pro NAT, které spolehlivě pracují pouze na celých paketech.
Pro defragmentaci IPv6 paketů neexistuje žádný samostatný modul, ale je přímo implementována v modulu nf_conntrack_ipv6
.
Jedna z nejdůležitějších funkcí Netfilteru je sledování připojení.
[3]
Sledování připojení umožňuje jádru sledovat všechna síťová připojení a tím udržovat přehled o tom, jaké pakety patří ke kterému připojení. Na této informaci závisí fungování NATu, aby mohl všechny pakety směrovat stejným směrem, nebo nástroje iptables
, který se díky těmto informacím může chovat jako stavový firewall.
Každé připojení Netfilteru je unikátně identifikováno n-ticí obsahující protokol síťové vrstvy, zdrojovou adresu, cílovou adresu, protokol transportní vrstvy a klíč transportní vrstvy. Klíč transportní vrstvy je závsilý na protokolu transportní vrstvy. Pro TCP/UDP protokol se jedná o číslo portu, pro síťový tunel se jedná o ID tunelu, v ostatních případech je klíč nulový. Kvůli zjištění TCP portu, musí být pakety povinně defragmentovány.
S připojeními Netfilteru může být manipulováno pomocí nástroje conntrack
.
Každé připojení může nabývat následujících stavů:
NEW
: začínající připojeníESTABLISHED
: již navázané připojeníEXPECTED
: očekávané připojení, které je přiřazeno k začínajícímu připojeníINVALID
: paket byl zjištěn jako neplatnýKaždému připojení náleží originální adresa a adresa odpovědi. NAT v Netfilteru je implementován jednoduchou změnou adresy odpovědi a pokud je to vyžadováno, tak i port. Pokud jsou přijímány pakety, jejich identifikační n-tice jsou porovnány s jejich adresami odpovědi (popřípadě i porty). Pro příchozí pakety je nutné, aby také nebyly fragmentované.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.