iptables

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

NAMN

iptables/ip6tables — administrationsverktyg för IPv4/IPv6 paketfiltrering och NAT

SAMMANFATTNING

iptables [-t table] {-A|-C|-D|-V} chain rule-specification

ip6tables [-t table] {-A|-C|-D|-V} chain rule-specification

iptables [-t table] -I chain [rulenum] rule-specification

iptables [-t table] -R chain rulenum rule-specification

iptables [-t table] -D chain rulenum

iptables [-t table] -S [chain [rulenum]]

iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...]

iptables [-t table] -N chain

iptables [-t table] -X [chain]

iptables [-t table] -P chain policy

iptables [-t table] -E old-chain-name new-chain-name

rule-specification := [matches...] [target]

match := -m matchname [per-match-options]

target := -j targetname [per-target-options]

BESKRIVNING

Iptables och ip6tables används för att konfigurera, underhålla och inspektera tabeller med IPv4 och IPv6 paketfilterregler i Linuxkärnan. Flera olika tabeller kan definieras. Varje tabell innehåller ett antal inbyggda kedjor och kan också innehålla användardefinierade kedjor.

Varje kedja är en lista över regler som kan matcha en uppsättning paket. Varje regel specificerar vad som ska göras med ett paket som matchar. Detta kallas ett "mål", vilket kan vara en hopp till en användardefinierad kedja i samma tabell.

MÅL

En brandväggsregel specificerar kriterier för ett paket och ett mål. Om paketet inte matchar, granskas nästa regel i kedjan; om det matchar, bestäms nästa regel av värdet på målet, vilket kan vara namnet på en användardefinierad kedja, ett av målen som beskrivs i iptables-extensions, eller ett av de speciella värdena ACCEPT, DROP eller RETURN.

ACCEPT innebär att paketet släpps igenom. DROP innebär att paketet slängs. RETURN innebär att man slutar traversera denna kedja och återupptar vid nästa regel i den tidigare (anropande) kedjan. Om slutet på en inbyggd kedja nås eller en regel i en inbyggd kedja med målet RETURN matchas, bestämmer målet som anges av kedjepolicyn paketets öde.

TABELLER

För närvarande finns fem oberoende tabeller (vilka tabeller som är närvarande vid en given tidpunkt beror på kärnkonfigurationsalternativ och vilka moduler som är närvarande).

-t, --table table

Detta alternativ specificerar den paketmatchande tabell som kommandot ska verka på. Om kärnan är konfigurerad med automatisk modul-laddning, kommer ett försök att göras att ladda den lämpliga modulen för den tabellen om den inte redan finns där.

Tabellerna är följande:

filter
Detta är standardtabellen (om inget -t alternativ anges). Den innehåller de inbyggda kedjorna INPUT (för paket destinerade till lokala sockets), FORWARD (för paket som routas genom boxen), och OUTPUT (för lokalt genererade paket).
nat
Denna tabell konsulteras när ett paket som skapar en ny anslutning påträffas. Den består av fyra inbyggda: PREROUTING (för att ändra paket så snart de kommer in), INPUT (för att ändra paket destinerade till lokala sockets), OUTPUT (för att ändra lokalt genererade paket före routning), och POSTROUTING (för att ändra paket precis innan de skickas ut). IPv6 NAT-stöd finns tillgängligt sedan kärna 3.7.
mangle
Denna tabell används för specialiserad paketmanipulation. Fram till kärna 2.4.17 hade den två inbyggda kedjor: PREROUTING (för att ändra inkommande paket före routning) och OUTPUT (för att ändra lokalt genererade paket före routning). Sedan kärna 2.4.18 stöds tre andra inbyggda kedjor: INPUT (för paket som kommer in i boxen själv), FORWARD (för att ändra paket som routas genom boxen), och POSTROUTING (för att ändra paket precis innan de skickas ut).
raw
Denna tabell används huvudsakligen för att konfigurera undantag från anslutningsspårning i kombination med NOTRACK-målet. Den registrerar sig vid netfilter-hookarna med högre prioritet och kallas därför innan ip_conntrack, eller andra IP-tabeller. Den tillhandahåller följande inbyggda kedjor: PREROUTING (för paket som anländer via vilket nätverksgränssnitt som helst) och OUTPUT (för paket som genereras av lokala processer).
security
Denna tabell används för regler för obligatorisk åtkomstkontroll (MAC), som de som möjliggörs av SECMARK- och CONNSECMARK-målen. Obligatorisk åtkomstkontroll implementeras av Linux Security Modules såsom SELinux. Säkerhetstabellen anropas efter filtertabellen, vilket tillåter att eventuella diskretionära åtkomstkontrollregler (DAC) i filtertabellen träder i kraft innan MAC-regler. Denna tabell tillhandahåller följande inbyggda kedjor: INPUT (för paket som kommer in i boxen själv), OUTPUT (för att ändra lokalt genererade paket före routning), och FORWARD (för att ändra paket som routas genom boxen).

ALTERNATIV

Alternativen som känns igen av iptables och ip6tables kan delas in i flera olika grupper.

KOMMANDON
Dessa alternativ specificerar den önskade åtgärden att utföra. Endast ett av dem kan anges på kommandoraden om inte annat anges nedan. För långa versioner av kommandot och alternativnamnen behöver du bara använda tillräckligt många bokstäver för att iptables ska kunna skilja det från alla andra alternativ.
-A, --append chain rule-specification
Lägg till en eller flera regler i slutet av den valda kedjan. När käll- och/eller destinationsnamn löses till fler än en adress, kommer en regel att läggas till för varje möjlig adresskombination.
-C, --check chain rule-specification
Kontrollera om en regel som matchar specifikationen finns i den valda kedjan. Detta kommando använder samma logik som -D för att hitta en matchande post, men ändrar inte den befintliga iptables-konfigurationen och använder sin utgångskod för att indikera framgång eller misslyckande.
-D, --delete chain rule-specification
Ta bort en eller flera regler från den valda kedjan. Det finns två versioner av detta kommando: regeln kan specificeras som ett nummer i kedjan (börjar på 1 för den första regeln) eller en regel att matcha.
-I, --insert chain [rulenum] rule-specification
Infoga en eller flera regler i den valda kedjan som det angivna regelnummret. Om regelnummret är 1, infogas regeln eller reglerna i kedjans början. Detta är också standard om inget regelnr anges.
-R, --replace chain rulenum rule-specification
Ersätt en regel i den valda kedjan. Om käll- och/eller destinationsnamn löses till flera adresser, kommer kommandot att misslyckas. Reglerna numreras med start från 1.
-L, --list [kedja]
Lista alla regler i den valda kedjan. Om ingen kedja väljs, listas alla kedjor. Precis som alla andra iptables-kommandon gäller det för den specificerade tabellen (filter är standard), så NAT-regler listas med
 iptables -t nat -n -L. Observera att det ofta används med -n-alternativet för att undvika långa omvända DNS-uppslagningar. Det är tillåtet att specificera -Z (nollställa) alternativet också, i vilket fall kedjorna atomiskt listas och nollställs. Den exakta utgången påverkas av de andra argument som anges. De exakta reglerna undertrycks tills du använder 
 iptables -L -v eller iptables-save.
-S, --list-rules [kedja]
Skriv ut alla regler i den valda kedjan. Om ingen kedja är vald, skrivs alla kedjor ut som iptables-save. Precis som alla andra iptables-kommandon gäller det för den specificerade tabellen (filter är standard).
-F, --flush [kedja]
Rensa den valda kedjan (alla kedjor i tabellen om ingen anges). Detta motsvarar att radera alla regler en efter en.
-Z, --zero [kedja [rulenum]]
Nollställ paket- och byte-räknarna i alla kedjor, eller endast den givna kedjan, eller bara den givna regeln i en kedja. Det är tillåtet att specificera -L, --list (lista) alternativet också för att se räknarna omedelbart innan de nollställs.
-N, --new-chain kedja
Skapa en ny användardefinierad kedja med det angivna namnet.

Sidor som hänvisar till den här sidan


Exempel

Exempel 1: Blockera inkommande trafik från en specifik IP-adress

Den här regeln blockerar all inkommande trafik från IP-adressen 192.168.1.100.

 iptables -A INPUT -s 192.168.1.100 -j DROP
 

Exempel 2: Tillåt all inkommande SSH-trafik

Den här regeln tillåter all inkommande trafik på port 22 (standardporten för SSH).

 iptables -A INPUT -p tcp --dport 22 -j ACCEPT
 

Exempel 3: Omdirigera HTTP-trafik till en annan port

Den här regeln omdirigerar all inkommande HTTP-trafik (port 80) till port 8080 på samma maskin.

 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
 

Exempel 4: Tillåt trafik från ett specifikt nätverk

Den här regeln tillåter all trafik från nätverket 192.168.0.0/24.

 iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
 

Exempel 5: Logga och droppa all trafik som inte matchar någon regel

Den här regeln loggar alla paket som inte matchar någon annan regel och droppar dem sedan.

 iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: "
 iptables -A INPUT -j DROP
 

Sidslut


Det här är en maskinöversättning av linux kommando manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webserver.