nätfilter | |
---|---|
Sorts | Brandvägg |
Utvecklaren | Netfilter Core Team |
Skrivet i | Xi |
Operativ system | på Linux-kärnan |
Licens | GNU GPL |
Hemsida | netfilter.org |
Mediafiler på Wikimedia Commons |
netfilter är en brandvägg (brandvägg) inbyggd i Linux-kärnan sedan version 2.4.
iptables är namnet på ett användarverktyg ( körs från kommandoraden) som är utformat för att hantera nätfiltersystemet. Administratörer använder det för att skapa och ändra regler som kontrollerar paketfiltrering och vidarebefordran . För att arbeta med IPv6- protokollfamiljen finns det en separat version av iptables-verktyget - ip6tables .
Vissa författare under ordet netfilter menar bara de element i brandväggen som är direkt del av kärnprotokollstacken , och allt annat (systemet med tabeller och kedjor) kallas iptables [1] . På grund av den inte helt tydliga terminologin [2] kallas ibland hela projektet (intrakärnans brandvägg tillsammans med användarverktyget) helt enkelt netfilter/iptables .
Netfilter/iptables-projektet grundades 1998 av Rusty Russell ( sv:Rusty Russell ); han är också författaren till ipchains föregångare projekt . När projektet utvecklades bildades 1999 Netfilter Core Team (förkortat coreteam). Den utvecklade brandväggen fick officiellt namnet netfilter. I mars 2000 inkluderades den i Linux 2.3-kärnan. I augusti 2003 blev Harald Welte chef för kärnteamet . 2004 inledde Welte och vann en rättegång mot Sitecom GmbH, som använde netfilter i sina produkter men vägrade följa GNU GPL [3] .
Före tillkomsten av iptables användes Linux 2.2 ipchains och Linux 2.0 ipfwadm- projekten , som i sin tur är baserade på ipfw från BSD- systemet , för att tillhandahålla brandväggsfunktioner på Linux . ipchains och ipfwadm-projekten förändrade hur Linux-kärnprotokollstacken fungerade, eftersom innan netfilter kom, fanns det inget sätt i kärnarkitekturen att ansluta ytterligare pakethanteringsmoduler. iptables behöll grundidén med ipfwadm - en lista över regler som består av kriterier och en åtgärd som ska vidtas om ett paket matchar kriterierna. Ett nytt koncept introducerades i ipchains – möjligheten att skapa nya regelkedjor och övergången av paket mellan kedjor, och i iptables utökades konceptet till fyra tabeller som avgränsar regelkedjor efter uppgift: filtrering, NAT och paketmodifiering. Dessutom har iptables utökat statusen för Linux, så att du kan skapa brandväggar som fungerar på sessionsnivå .
I nätfiltersystemet förs paketen genom kedjor . En kedja är en ordnad lista med regler , och varje regel kan innehålla kriterier och en åtgärd eller övergång . När ett paket passerar genom kedjan kontrollerar nätfiltersystemet i sin tur om paketet matchar alla kriterier för nästa regel, och i så fall utför det en åtgärd (om det inte finns några kriterier i regeln, utförs åtgärden för alla paket som passerar genom regeln). Det finns många möjliga kriterier. Till exempel matchar ett paket --source 192.168.1.1 om pakethuvudet anger att avsändaren är 192.168.1.1. Den enklaste typen av övergång, --jump, vidarebefordrar helt enkelt paketet till början av en annan kedja. Du kan också specificera en åtgärd med --jump . Standardåtgärderna som är tillgängliga i alla kedjor är ACCEPT (hoppa över), DROP (radera), QUEUE (överför till ett externt program för analys) och RETURN (återgå till föregående kedja för analys). Till exempel kommandon
iptables -A INPUT --källa 192.168.1.1 --jump ACCEPTERA iptables -A INPUT --hoppa annan_kedjabetyder "lägg till följande regler i slutet av INPUT -kedjan : hoppa över paket från 192.168.1.1 och skicka allt som återstår att skicka till den andra_kedjan för analys ".
Det finns 5 typer av standardkedjor inbyggda i systemet:
Du kan också skapa och förstöra dina egna kedjor med hjälp av iptables-verktyget. [fyra]
Kedjorna är organiserade i 4 tabeller:
Kedjor med samma namn men i olika tabeller är helt oberoende objekt. Till exempel innehåller rå PREROUTING och mangle PREROUTING vanligtvis en annan uppsättning regler; paket går först genom den råa PREROUTING-kedjan och sedan genom manglen PREROUTING .
Tillståndsmaskinen (anslutningsspårning) är ett anslutningsspårningssystem, en viktig del av netfilter, som implementerar en tillståndsfull brandvägg på sessionsnivå. Systemet låter dig bestämma vilken anslutning eller session ett paket tillhör. Tillståndsmotorn analyserar alla paket förutom de som är markerade med NOTRACK i råtabellen .
I nätfiltersystemet kan varje paket som passerar genom tillståndsmekanismen ha ett av fyra möjliga tillstånd:
Denna klassificering av paket skiljer sig i många fall från den officiella beskrivningen av nätverksprotokoll. Till exempel, enligt netfilter, är ett TCP SYN ACK-paket en del av en befintlig session, medan ett sådant paket enligt TCP-definition bara är ett sessionsöppningselement.
Att definiera sessioner för vissa protokoll är mycket enkelt; till exempel ett tecken på en UDP- session - en klient från port X skickar paket till servern på port Y (eller vice versa) minst en gång var 30:e sekund. För andra protokoll ( FTP , SIP , H.323 , etc.) är sessionen svårare att fastställa, och nätfilter måste analysera innehållet i paketen för att korrekt bestämma deras tillstånd.
Du kan se attributen för aktiva anslutningar i pseudo -filen /proc/net/nf_conntrack (eller /proc/net/ip_conntrack) . För varje anslutning anges följande information:
tcp 6 117 SYN_SENT src=192.168.1.6 dst=192.168.1.9 sport=32775 dport=22 [UNREPLIED] src=192.168.1.9 dst=192.168.1.6 sport=22 dport=32775 [ASSURED] use=2Conntrack- verktyget låter dig styra tillståndsdetekteringsmekanismen.
nftables är ett projekt som är designat för att ersätta det befintliga {ip,ip6,arp,eb}tabellpaketet.
Brandväggar | ||
---|---|---|
Fri | ||
Fri |
| |
Kommersiell |
| |
Hårdvara |