Den här guiden diskuterar hur du konfigurerar och använder regler för iptables i ett Ubuntu-system för att säkra ditt nätverk. Oavsett om du är en nybörjare Linux-användare eller en erfaren systemadministratör, från den här guiden och på ett eller annat sätt kommer du att lära dig något användbart om iptables.
Iptables är förinstallerade på Ubuntu och de flesta Debian-baserade distributioner. Ubuntu paketerar också GUFW-brandvägg, ett grafiskt alternativ som du kan använda för att arbeta med iptables.
NOTERA: För att använda och konfigurera iptables behöver du sudo-privilegier på ditt system. Du kan lära dig mer om sudo från följande handledning.
Nu när du vet vad Iptables är, låt oss dyka in!
Hur man använder iptables för att hantera IPv4-trafik?
För att använda Iptables för IPv4-nätverk och trafikhantering måste du förstå följande:
Iptables-kommandot
Iptables erbjuder ett urval av alternativ som låter dig anpassa och ställa in dina iptables-regler. Låt oss diskutera några av dessa parametrar och se vad de gör.
NOTERA: Du kan konfigurera en uppsättning regler som hanterar en viss delmängd, så kallad iptables-kedjor.
Iptables-parametrar
Innan vi börjar skapa och konfigurera iptables-regler, låt oss först förstå grunderna för iptables, till exempel allmän syntax och standardargument.
Tänk på kommandot nedan:
sudo iptables -I INPUT -s 192.168.0.24 -j DROPKommandot ovan berättar för iptables att skapa en regel i kedjan. Regeln släpper alla paket från IP-adressen 192.168.0.24.
Låt oss undersöka kommandot, rad för rad, för att förstå det bättre.
- Det första kommandot iptables anropar kommandoradsverktyget iptables.
- Nästa är -I-argument som används för insättning. Införingsargumentet lägger till en regel i början av iptables-kedjan och får därmed en högre prioritet. För att lägga till en regel vid ett visst nummer i kedjan, använd argumentet -I följt av numret där regeln ska tilldelas.
- Argumentet -s hjälper till att specificera källan. Därför använder vi argumentet -s följt av IP-adressen.
- Parametern -j med iptables anger hoppet till ett specifikt mål. Det här alternativet anger åtgärden som Iptables ska utföra när det finns ett matchande paket. Iptables erbjuder fyra huvudmål som standard, dessa inkluderar: ACCEPT, DROP, LOG och REJECT.
Iptables erbjuder ett urval av parametrar som du kan använda för att konfigurera olika regler. De olika parametrarna du kan använda för att konfigurera iptables-regler inkluderar:
Iptables-regelparameter | Beskrivning |
---|---|
-s-källa | Ange källan, som kan vara en adress, värdnamn eller nätverksnamn. |
-p-protokoll | Anger anslutningsprotokollet; till exempel TCP, UDP, etc. |
-d -destination | Anger destinationen, som kan vara en adress, nätverksnamn eller värdnamn. |
-j-hoppa | Ställer in åtgärden iptables ska utföras efter att ha hittat ett paket. |
-o -out-interface | Ställer in gränssnittet genom vilket iptable skickar paketet. |
-i -in-interface | Ställer in gränssnittet som används för att skapa nätverkspaket. |
-c -set-räknare | Tillåter administratören att ställa in byte- och paketräknare för en angiven regel. |
-g -goto-kedja | Parametern anger att bearbetningen ska fortsätta i användaruppsättningskedjan vid retur. |
-f -fragment | Berättar för iptables att endast tillämpa regeln på de andra och följande fragmenten av de fragmenterade paketen. |
Iptables-alternativ
Kommandot iptables stöder ett brett utbud av alternativ. Några vanliga är:
Alternativ | Beskrivning |
---|---|
-A -append | Lägger till en regel i slutet av en angiven kedja |
-D-radera | Tar bort en regel från den angivna kedjan |
-F-spola | Tar bort alla regler, en i taget |
-L-lista | Visar alla regler i den angivna kedjan |
-Jag sätter in | Infogar en regel i den angivna kedjan (skickas som ett nummer när inget nummer anges; regel läggs till överst) |
-C -kolla | Frågor för en regelmatchning; krav i en specificerad regel |
-v -verbose | Visar mer information när den används med -L-parametern |
-N-ny kedja | Lägger till en ny användardefinierad kedja |
-X-radera-kedja | Tar bort en specifik användardefinierad kedja |
Iptables Tabeller
Linux-kärnan har standardtabeller som innehåller en uppsättning relaterade regler. Dessa standardtabeller har en uppsättning standardkedjor, men användare kan anpassa reglerna genom att lägga till användardefinierade regler.
NOTERA: Standardtabellerna beror starkt på din Kernel-konfiguration och de installerade modulerna.
Här är standardtabellerna iptables:
1: Filtertabellerna
Filtertabellen är en standardtabell som innehåller kedjor som används för nätverkspaketfiltrering. Några av standardkedjorna i denna tabell inkluderar:
Kedja | Beskrivning |
---|---|
Inmatning | Iptables använder denna kedja för alla inkommande paket till systemet, dvs.e., paket som går till lokala nätverksuttag. |
Produktion | Iptables använder utmatningskedjan för lokalt genererade paket, dvs.e., paket som går ut ur systemet. |
Fram | Denna kedja är vad Iptables använder för paket som dirigeras eller vidarebefordras via systemet. |
2: NAT-tabellerna
NAT eller nätverksadresstabell är en routningsenhet som används för att modifiera källan och mål-IP-adresserna i ett nätverkspaket. NAT-tabellens huvudsakliga användning är att ansluta två nätverk i ett privat adressintervall med det offentliga nätverket.
NAT har utvecklats för att stödja maskering av riktiga IP-adresser, vilket gör att privata IP-adresser kan nå från det externa nätverket. Detta hjälper till att skydda detaljer om interna nätverk från att avslöjas i offentliga nätverk.
NAT-tabellen blir anställd när ett paket initierar en ny anslutning.
Iptables har en standardtabell för NAT-adressering. Denna tabell har tre huvudkedjor:
Kedja | Beskrivning |
---|---|
FÖRHANDLING | Tillåter modifiering av paketinformation innan du anländer till INPUT-kedjan som används för inkommande paket |
PRODUKTION | Reserverat för paket som skapats lokalt, d.v.s.e., innan nätverksdirigering inträffar |
POSTROUTING | Tillåter modifiering av utgående paket - Paket som lämnar OUTPUT-kedjan |
Diagrammet nedan visar en översikt på hög nivå av denna process.
Använd kommandot nedan för att visa dina NAT Routing-tabeller.
iptables -t nat -n -v -L3: Mangeltabellerna
Mangeltabellen används främst för speciell modifiering av paket. Enkelt uttryckt används den för att ändra IP-rubrikerna för ett nätverkspaket. Modifiering av paket kan inkludera att ändra ett TTL-värde på paketet, ändra giltiga nätverkshopp för ett paket, etc.
Tabellen innehåller följande standardkedjor:
Kedja | Beskrivning |
---|---|
FÖRHANDLING | Reserverad för inkommande paket |
POSTROUTING | Används för utgående paket |
INMATNING | Används för paket som kommer direkt till servern |
PRODUKTION | Används för lokala paket |
Fram | Reserverat för paket som dirigeras genom systemet |
4: Råborden
Råbordets huvudsyfte är att konfigurera undantag för paket som inte är avsedda att hanteras av spårningssystemet. Råbordet sätter ett NOTRACK-märke på paket, vilket uppmanar anslutningsfunktionen att ignorera paketet.
Conntrack är en Linux-kärnnätverksfunktion som gör att Linux-kärnan kan spåra alla nätverksanslutningar, vilket gör det möjligt för kärnan att identifiera paket som utgör ett nätverksflöde.
Råbordet har två huvudkedjor:
Kedja | Beskrivning |
---|---|
FÖRHANDLING | Reserverat för paket som tas emot av nätverksgränssnitt |
PRODUKTION | Reserverat för paket som initierats av lokala processer |
5: Säkerhetstabellen
Den här tabellens primära användning är att ställa in intern säkerhetsförbättring för Linux (SELinux) säkerhetsmekanism som markerar på paket. Säkerhetsmärket kan appliceras per anslutning eller paket.
Den används för obligatoriska regler för åtkomstkontroll och är den andra tabellen som nås efter filtertabellen. Det erbjuder följande standardkedjor:
Kedja | Beskrivning |
---|---|
INMATNING | Reserverad för inkommande paket till systemet |
PRODUKTION | Används för lokalt skapade paket |
FRAM | Används för paket som dirigeras genom systemet |
Efter att ha tittat på standard-Iptables, låt oss gå ett steg längre och diskutera hur man arbetar med iptables-regler.
Hur man arbetar med iptables-regler?
Iptables-regler tillämpas i stigande ordning. Detta innebär att den första regeln i en specifik uppsättning tillämpas först, följt av den andra, sedan tredje, och så vidare, tills den sista.
På grund av denna funktion hindrar iptables dig från att lägga till regler i en uppsättning med parametern -A; Du måste använda -I, följt av numret eller genom att tömma det för att lägga till överst i listan.
Visar Iptables
För att se dina iptables använder du kommandot iptables -L -v för IPv4 och ip6tables -L -v för IPv6.
Infoga regler
För att infoga regler i en uppsättning måste du placera dem i exakt ordning och respektera de regler som används i samma kedja. Du kan visa listan över dina iptables-regler med kommandot som diskuterats ovan:
sudo iptables -L -vFör att till exempel infoga en regel som tillåter inkommande anslutningar till port 9001 via TCP, måste vi ange regelnumret till INPUT-kedjan som följer trafikregler för webben.
sudo iptables -I INPUT 1 -p TCP --dport 9001 -m state --state NEW -j ACCEPTNär du har tittat på de aktuella iptabellerna bör du se den nya regeln i uppsättningen.
sudo iptables -L -v
Ersätta regler
Ersättningsfunktionen fungerar på samma sätt för att infoga, men den använder iptables -R-kommandot. För att till exempel ändra regeln ovan och ställa in port 9001 för att neka, gör vi:
sudo iptables -R INPUT 1 -p TCP --dport 9001 -m state --state NEW -j REJECTRadera en regel
För att radera en regel skickar vi regelnumret. För att till exempel ta bort regeln ovan kan vi ange som:
sudo iptables -D INPUT 1I de flesta Linux-distributioner är iptables tomma för antingen IPv4 och IPv6. Därför, om du inte har lagt till någon ny regel, får du en utdata som liknar den som visas nedan. Det är riskabelt eftersom det innebär att systemet tillåter all inkommande, utgående och dirigerad trafik.
Låt oss ta en titt på hur man konfigurerar iptables:
Hur man konfigurerar iptables?
Det finns många sätt att konfigurera iptables-regler. Detta avsnitt använder exempel för att visa dig hur du ställer in regler med IP-adresser och portar.
Blockera och tillåta trafik via hamnar
Du kan använda en viss port för att blockera eller tillåta all trafik i ett nätverksgränssnitt. Tänk på följande exempel:
sudo iptables -A INPUT -j ACCEPT -p TCP - destination-port 1001 -i wlan0Ovanstående kommandon tillåter trafik på port 1001 TCP på wlan0-gränssnittet.
sudo iptables -A INPUT -j DROP -p TCP --destination-port 1001 -i wlan0Detta kommando gör motsatsen till ovanstående kommando eftersom det blockerar all trafik på port 1001 på wlan0.
Här är en noggrann inspektion av kommandot:
- Det första argumentet (-A) lägger till en ny regel i slutet av tabellkedjan.
- INPUT-argumentet lägger till den angivna regeln i tabellen.
- DROP-argumentet ställer in åtgärden som ska utföras som ACCEPT respektive DROP. Det betyder att när ett paket matchas, tappas det.
- -p specificerar protokollet som TCP och tillåter trafik på andra protokoll att passera.
- -destinationsport ställer in regeln för att acceptera eller släppa all trafik som är avsedd för port 1001.
- -i
berättar iptables att tillämpa regeln på trafik som kommer på wlan0-gränssnittet.
NOTERA: Iptables förstår inte alias för nätverksgränssnitt. Således måste du i ett system med mer än ett virtuellt gränssnitt definiera måladressen manuellt och uttryckligen.
Till exempel:
sudo iptables -A INPUT -j DROP -p TCP - destination-port 1001 -i wlan0 -d 192.168.0.24Vitlistning och svartlistning av IP-adresser
Du kan skapa brandväggsregler med iptables. Ett exempel är genom att stoppa all trafik och endast tillåta nätverkstrafik från explicita IP-adresser.
Exempel:
iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPTiptables -A INPUT -i lo -m kommentar - kommentar "Tillåt loopback-anslutningar" -j ACCEPT
iptables -A INPUT -p icmp -m kommentar - kommentar “Låt Ping fungera som förväntat” -j
ACCEPTERA
iptables -A INPUT -s 192.168.0.1/24 -j ACCEPTiptables -A INPUT -s 192.168.0.0 -j ACCEPT
iptables -P INPUT DROP
iptables -P FRAMÅT DROP
Den första raden anger en regel för att tillåta alla källans IP-adresser i 192.168.0.1/24 undernät. Du kan också använda CIDR eller enskilda IP-adresser. I följande kommando ställer vi in regeln för att tillåta all trafik ansluten till befintliga anslutningar. I de sista kommandona sätter vi en policy för INPUT och FORWARD för att släppa alla.
Använda iptables på IPv6
Iptables-kommandot fungerar bara på IPv4. För att använda iptables på IPv6 måste du använda kommandot ip6tables. Ip6tables använder rå-, filter-, säkerhets- och mangeltabeller. Den allmänna syntaxen för ip6tables liknar iptables, och den stöder också matchande iptables-alternativ som lägga till, ta bort, etc.
Överväg att använda manualsidorna för ip6tables för mer information.
Exempel på iptables-regler för nätverkssäkerhet
Att skapa lämpliga brandväggsregler beror främst på vilken tjänst som körs i ett system och portarna som används. Här är dock några grundläggande nätverkskonfigurationsregler som du kan använda för att säkra ditt system:
1: Tillåt trafik med Loopback-gränssnitt och avvisa all loopback från andra gränssnitt
iptables -A INPUT -i lo -j ACCEPT (Du kan också använda ip6tables)iptables -A INGÅNG ! -i lo -s 127.0.0.0 -j REJECT (ip6tables gäller även)
2: Neka alla pingförfrågningar
iptables -A INPUT -p icmp -m state --stat NEW - icmp-type 8 -j REJECT3: Tillåt SSH-anslutningar
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPTDet här är exempelkommandon som du kan använda för att säkra ditt system. Konfigurationen beror dock starkt på vad eller vem du vill komma åt olika tjänster.
VARNING: Om du föredrar att inaktivera IPv6 helt, se till att avmarkera raden eftersom detta kommer att sakta ner uppdateringsprocessen:
företräde :: ffff: 0: 0/96 100 finns i / etc / gai.konf .
Det beror på att APT-pakethanteraren löser spegeldomänen i IPv6 på grund av apt-get-uppdateringen.
Hur man implementerar iptables-regler?
För att distribuera dina iptables på Ubuntu eller andra Debian-baserade system, börja med att skapa två filer, ip4 och ip6, för deras respektive IP-adresser.
I båda filerna, lägg till de regler du vill genomdriva i deras motsvarande filer-IPv4-regler till ip4-fil och IPv6-regler till ip6-fil.
Därefter måste vi importera reglerna med kommandot:
sudo iptables-återställning < /tmp/ip4 (replace filename for IPv6)Sedan kan du verifiera om reglerna har tillämpats med kommandot:
sudo iptables -L -vEn snabb iptables-beständig guide
Ubuntu och vanliga Debian-baserade distributioner levereras med ett iptables-beständigt paket som låter dig tillämpa dina brandväggsregler enkelt vid omstart. Paketet innehåller filer som du kan använda för att ställa in regler för IPv4 eller IPv6 och kan tillämpas automatiskt vid start.
Du kan också använda brandväggsregler med UFW eller GUFW. Tänk på följande handledning för att lära dig hur du använder UFW.
Hur man installerar iptables-persistent?
Se till att du har iptables-persistent installerat på ditt system. Använd dpkg för att kontrollera om du har paketet installerat.
Om inte, använd följande kommando:
sudo apt-get install iptables-persistent
Du kommer att bli ombedd två gånger för att spara både dina nuvarande IPv4- och IPv6-regler. Klicka på Ja för att spara båda reglerna.
Klicka på ja för att spara IPv6.
När installationen är klar kontrollerar du att du har underkatalogen iptables, som visas i bilden nedan.
Nu kan du använda reglerna.v4 och regler.v6 för att lägga till iptables-regler, och de tillämpas automatiskt av iptables-persistent. Filerna är enkla textfiler som du enkelt kan redigera med valfri textredigerare.
Slutsats
I denna handledning har vi täckt grunderna för iptables. Börjar med att arbeta med iptables, grundläggande kommandon, standard iptables-tabeller och parametrar.
Från vad du har lärt dig borde du kunna använda iptables för att skapa brandväggsregler som hjälper till att skydda ditt system.