Denne vejledning diskuterer, hvordan man konfigurerer og bruger iptables-regler på et Ubuntu-system til at sikre dit netværk. Uanset om du er en nybegynder Linux-bruger eller en erfaren systemadministrator, fra denne vejledning og på en eller anden måde vil du lære noget nyttigt om iptables.
Iptables leveres forudinstalleret på Ubuntu og de fleste Debian-baserede distributioner. Ubuntu pakker også GUFW-firewall, et grafisk alternativ, du kan bruge til at arbejde med iptables.
BEMÆRK: For at bruge og konfigurere iptables har du brug for sudo-rettigheder på dit system. Du kan lære mere om sudo fra følgende vejledning.
Nu hvor du ved hvad Iptables er, lad os dykke lige ind!
Sådan bruges iptables til at styre IPv4-trafik?
For at bruge Iptables til IPv4-netværk og trafikstyring skal du forstå følgende:
Iptables-kommandoen
Iptables tilbyder et udvalg af muligheder, der giver dig mulighed for at tilpasse og indstille dine iptables-regler. Lad os diskutere nogle af disse parametre og se, hvad de gør.
BEMÆRK: Du kan konfigurere et sæt regler, der styrer et bestemt undersæt, kendt som iptables-kæder.
Iptables-parametre
Før vi begynder at oprette og konfigurere iptables-regler, lad os først forstå det grundlæggende i iptables, såsom generel syntaks og standardargumenter.
Overvej kommandoen nedenfor:
sudo iptables -I INPUT -s 192.168.0.24 -j DROPKommandoen ovenfor fortæller iptables at oprette en regel i kæden. Reglen slipper alle pakker fra IP-adressen 192.168.0.24.
Lad os undersøge kommandoen linje for linje for at forstå den bedre.
- Den første kommando iptables kalder kommandolinjeprogrammet iptables.
- Næste er -I-argumentet bruges til indsættelse. Indsættelsesargumentet tilføjer en regel i begyndelsen af iptables-kæden og får dermed en højere prioritet. For at tilføje en regel på et bestemt nummer i kæden skal du bruge argumentet -I efterfulgt af det nummer, hvor reglen skal tildeles.
- Argumentet -s hjælper med at specificere kilden. Derfor bruger vi argumentet -s efterfulgt af IP-adressen.
- Parameteren -j med iptables angiver springet til et specifikt mål. Denne mulighed indstiller den handling, som Iptables skal udføre, når der er en matchende pakke. Iptables tilbyder fire hovedmål som standard, disse inkluderer: ACCEPT, DROP, LOG og REJECT.
Iptables tilbyder et udvalg af parametre, som du kan bruge til at konfigurere forskellige regler. De forskellige parametre, du kan bruge til at konfigurere iptables-regler, inkluderer:
Iptables-regelparameter | Beskrivelse |
---|---|
-s-kilde | Angiv kilden, som kan være en adresse, et værtsnavn eller et netværksnavn. |
-p-protokol | Specificerer forbindelsesprotokollen; for eksempel TCP, UDP osv. |
-d -destination | Angiver destinationen, som kan være en adresse, netværksnavn eller værtsnavn. |
-j-spring | Indstiller handlingen iptables skal udføres efter at have fundet en pakke. |
-o -out-interface | Indstiller grænsefladen, gennem hvilken iptable sender pakken. |
-i -in-interface | Indstiller det interface, der bruges til at etablere netværkspakker. |
-c-sæt-tællere | Tillader administratoren at indstille byte- og pakketællerne til en bestemt regel. |
-g -kæde | Parameteren specificerer, at behandlingen skal fortsætte i brugersætkæden ved returnering. |
-f -fragment | Fortæller iptables, at de kun skal anvende reglen på de andet og de følgende fragmenter af de fragmenterede pakker. |
Iptables-indstillinger
Kommandoen iptables understøtter en lang række muligheder. Nogle almindelige inkluderer:
Mulighed | Beskrivelse |
---|---|
-A -tilføj | Tilføjer en regel til slutningen af en specificeret kæde |
-D-slet | Fjerner en regel fra den angivne kæde |
-F-skyl | Fjerner alle regler, en ad gangen |
-L-liste | Viser alle reglerne i den angivne kæde |
-Jeg indsætter | Indsætter en regel i den angivne kæde (videregivet som et tal, når der ikke er angivet et nummer; reglen tilføjes øverst) |
-C -kontrol | Forespørgsler efter en regelmatchning krav i en specificeret regel |
-v -verbose | Viser flere detaljer, når de bruges med -L-parameteren |
-N-ny kæde | Tilføjer en ny brugerdefineret kæde |
-X-slet-kæde | Fjerner en bestemt brugerdefineret kæde |
Iptables-tabeller
Linux-kernen har standardtabeller, der indeholder et sæt relaterede regler. Disse standardtabeller har et sæt standardkæder, men brugere kan tilpasse reglerne ved at tilføje brugerdefinerede regler.
BEMÆRK: Standardtabellerne afhænger stærkt af din kernekonfiguration og de installerede moduler.
Her er standardtabellerne iptables:
1: Filtertabellerne
Filtertabellen er en standardtabel, der indeholder kæder, der bruges til netværkspakkefiltrering. Nogle af standardkæderne i denne tabel inkluderer:
Kæde | Beskrivelse |
---|---|
Indgang | Iptables bruger denne kæde til alle indkommende pakker til systemet, dvs.e., pakker, der går til lokale netværksstik. |
Produktion | Iptables bruger outputkæden til lokalt genererede pakker, dvs.e., pakker, der går ud af systemet. |
Frem | Denne kæde er, hvad Iptables bruger til pakker, der dirigeres eller videresendes via systemet. |
2: NAT-tabellerne
NAT eller Network Address Table er en routing-enhed, der bruges til at ændre kilden og målrette IP-adresser i en netværkspakke. NAT-tabelens vigtigste anvendelse er at forbinde to netværk i et privat adresseområde med det offentlige netværk.
NAT blev udviklet til at understøtte maskering af ægte IP-adresser, så private IP-adresser strækker sig fra at nå det eksterne netværk. Dette hjælper med at beskytte detaljer om interne netværk fra at blive afsløret i offentlige netværk.
NAT-tabellen bliver ansat, når en pakke initierer en ny forbindelse.
Iptables har en standardtabel til NAT-adressering. Denne tabel har tre hovedkæder:
Kæde | Beskrivelse |
---|---|
FORUDSÆTNING | Tillader ændring af pakkeinformation, inden de ankommer til INPUT-kæden, der bruges til indkommende pakker |
PRODUKTION | Reserveret til pakker oprettet lokalt, dvs.e., inden netværksrutingen opstår |
POSTROUTERING | Tillader ændring af udgående pakker - Pakker, der forlader OUTPUT-kæden |
Diagrammet nedenfor viser en oversigt på højt niveau af denne proces.
Brug kommandoen nedenfor for at se dine NAT Routing-tabeller.
iptables -t nat -n -v -L3: The Mangle Tables
Mandelbordet bruges hovedsageligt til speciel modifikation af pakker. Enkelt sagt bruges det til at ændre IP-headere på en netværkspakke. Ændring af pakker kan omfatte ændring af en TTL-værdi af pakke, ændring af gyldige netværkshumler til en pakke osv.
Tabellen indeholder følgende standardkæder:
Kæde | Beskrivelse |
---|---|
FORUDSÆTNING | Reserveret til indkommende pakker |
POSTROUTING | Bruges til udgående pakker |
INDGANG | Bruges til pakker, der kommer direkte ind på serveren |
PRODUKTION | Bruges til lokale pakker |
Frem | Reserveret til pakker dirigeret gennem systemet |
4: De rå borde
Råbordets hovedformål er at konfigurere undtagelser for pakker, der ikke er beregnet til at blive håndteret af sporingssystemet. Råbordet angiver et NOTRACK-mærke på pakker, hvilket beder konntrack-funktionen om at ignorere pakken.
Conntrack er en Linux-kernenetværk, der gør det muligt for Linux-kernen at spore alle netværksforbindelser, så kernen kan identificere pakker, der udgør et netværksflow.
Råbordet har to hovedkæder:
Kæde | Beskrivelse |
---|---|
FORUDSÆTNING | Reserveret til pakker modtaget af netværksgrænseflader |
PRODUKTION | Reserveret til pakker initieret af lokale processer |
5: Sikkerhedstabellen
Denne tabells primære anvendelse er at indstille intern sikkerhedsforbedring til Linux (SELinux) sikkerhedsmekanisme, der markerer på pakker. Sikkerhedsmærket kan anvendes pr. Forbindelse eller pakke.
Det bruges til obligatoriske regler for adgangskontrol og er den anden tabel, der åbnes efter filtertabellen. Det tilbyder følgende standardkæder:
Kæde | Beskrivelse |
---|---|
INDGANG | Reserveret til indkommende pakker til systemet |
PRODUKTION | Bruges til lokalt oprettede pakker |
FREM | Bruges til pakker dirigeret gennem systemet |
Efter at have set på standard-Iptables, lad os gå et skridt videre og diskutere, hvordan man arbejder med iptables-regler.
Sådan arbejder du med iptables-regler?
Iptables-regler anvendes i stigende rækkefølge. Dette betyder, at den første regel i et bestemt sæt anvendes først, efterfulgt af den anden, derefter tredje osv., Indtil den sidste.
På grund af denne funktion forhindrer iptables dig i at tilføje regler i et sæt ved hjælp af -A-parameteren; du skal bruge -I efterfulgt af nummeret eller ved at tømme det for at føje til toppen af listen.
Viser Iptables
For at se dine iptables skal du bruge kommandoen iptables -L -v til IPv4 og ip6tables -L -v til IPv6.
Indsættelse af regler
For at indsætte regler i et sæt skal du placere dem i den nøjagtige rækkefølge under overholdelse af de regler, der bruges af den samme kæde. Du kan se listen over dine iptables-regler med kommandoen som beskrevet ovenfor:
sudo iptables -L -vFor eksempel for at indsætte en regel, der tillader indgående forbindelser til port 9001 via TCP, skal vi specificere regelnummeret til INPUT-kæden, der overholder trafikreglerne på nettet.
sudo iptables -I INPUT 1 -p TCP --dport 9001 -m state --state NEW -j ACCEPTNår du har vist de aktuelle iptables, skal du se den nye regel i sættet.
sudo iptables -L -v
Udskiftning af regler
Udskiftningsfunktionaliteten fungerer på samme måde for at indsætte, men den bruger iptables -R-kommandoen. For eksempel for at ændre ovenstående regel og indstille port 9001 til at benægte:
sudo iptables -R INPUT 1 -p TCP --dport 9001 -m state --state NEW -j REJECTSletning af en regel
For at slette en regel videregiver vi regelnummeret. For eksempel for at slette reglen ovenfor kan vi angive som:
sudo iptables -D INPUT 1I de fleste Linux-distroer er iptables tomme for enten IPv4 og IPv6. Derfor, hvis du ikke har tilføjet nogen ny regel, får du en output svarende til den vist nedenfor. Det er risikabelt, fordi det betyder, at systemet tillader al indgående, udgående og rutetrafik.
Lad os se nærmere på, hvordan man konfigurerer iptables:
Sådan konfigureres iptables?
Der er adskillige måder at konfigurere iptables-regler på. Dette afsnit bruger eksempler til at vise dig, hvordan du indstiller regler ved hjælp af IP-adresser og porte.
Blokering og tilladelse af trafik efter havne
Du kan bruge en bestemt port til at blokere eller tillade al trafik på et netværksinterface. Overvej følgende eksempler:
sudo iptables -A INPUT -j ACCEPT -p TCP - destination-port 1001 -i wlan0Ovenstående kommandoer tillader trafik på port 1001 TCP på wlan0-grænsefladen.
sudo iptables -A INPUT -j DROP -p TCP - destination-port 1001 -i wlan0Denne kommando gør det modsatte af ovenstående kommando, da den blokerer al trafik på port 1001 på wlan0.
Her er en nøje inspektion af kommandoen:
- Det første argument (-A) tilføjer en ny regel i slutningen af tabelkæden.
- INPUT-argumentet føjer den angivne regel til tabellen.
- DROP-argument indstiller den handling, der skal udføres som henholdsvis ACCEPT og DROP. Dette betyder, at når en pakke bliver matchet, bliver den droppet.
- -p specificerer protokollen som TCP og tillader trafik på andre protokoller at passere.
- -destinations-port indstiller reglen til at acceptere eller slippe al trafik, der er bestemt til port 1001.
- -jeg
fortæller iptables at anvende reglen på trafik, der kommer på wlan0-grænsefladen.
BEMÆRK: Iptables forstår ikke aliaser til netværksinterface. Således skal du i et system med mere end en virtuel grænseflade definere destinationsadressen manuelt og eksplicit.
For eksempel:
sudo iptables -A INPUT -j DROP -p TCP - destination-port 1001 -i wlan0 -d 192.168.0.24Hvidliste og sortliste IP-adresser
Du kan oprette firewallregler ved hjælp af iptables. Et eksempel er ved at stoppe al trafik og kun tillade netværkstrafik fra eksplicitte IP-adresser.
Eksempel:
iptables -A INPUT -m tilstand --stat ESTABLERET, RELATERET -j ACCEPTiptables -A INPUT -i lo -m kommentar - kommentar "Tillad loopback-forbindelser" -j ACCEPT
iptables -A INPUT -p icmp -m kommentar - kommentar “Tillad, at Ping fungerer som forventet” -j
ACCEPTERE
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 VIDERE DROP
Den første linje indstiller en regel, der tillader alle kilde-IP-adresser i 192.168.0.1/24 undernet. Du kan også bruge CIDR eller individuelle IP-adresser. I den følgende kommando indstiller vi reglen til at tillade al trafik forbundet til eksisterende forbindelser. I de sidste kommandoer satte vi en politik for INPUT og FORWARD til at droppe alle.
Brug af iptables på IPv6
Iptables-kommandoen fungerer kun på IPv4. For at bruge iptables på IPv6 skal du bruge kommandoen ip6tables. Ip6tables bruger rå-, filter-, sikkerheds- og mangeltabeller. Den generelle syntaks for ip6tables ligner iptables, og den understøtter også matchende iptables-indstillinger som tilføj, slet osv.
Overvej at bruge ip6tables manuelle sider for at få flere oplysninger.
Eksempel på iptables-regelsæt til netværkssikkerhed
Oprettelse af egnede firewallregler afhænger hovedsageligt af den service, der kører på et system, og de porte, der er i brug. Her er dog nogle grundlæggende netværkskonfigurationsregler, du kan bruge til at sikre dit system:
1: Tillad Loopback-interface-trafik, og afvis al loopback, der kommer fra andre grænseflader
iptables -A INPUT -i lo -j ACCEPT (Du kan også bruge ip6tables)iptables -En INPUT ! -i lo -s 127.0.0.0 -j REJECT (ip6tables også gældende)
2: Afvis alle pinganmodninger
iptables -A INPUT -p icmp -m tilstand --tilstand NY --icmp-type 8 -j REJECT3: Tillad SSH-forbindelser
iptables -A INPUT -p tcp --dport 22 -m tilstand --stat NY -j ACCEPTDette er eksempler på kommandoer, du kan bruge til at sikre dit system. Konfigurationen afhænger dog stærkt af, hvad eller hvem du vil have adgang til forskellige tjenester.
ADVARSEL: Hvis du foretrækker at deaktivere IPv6 fuldstændigt, skal du sørge for at kommentere linjen, da dette vil sænke opdateringsprocessen:
forrang :: ffff: 0: 0/96 100 fundet i / etc / gai.konf .
Det skyldes, at APT-pakkehåndtereren løser spejldomænet i IPv6 på grund af apt-get-opdatering.
Sådan implementeres iptables-regler?
For at implementere dine iptables på Ubuntu eller andre Debian-baserede systemer, start med at oprette to filer, ip4 og ip6, til deres respektive IP-adresser.
I begge filer skal du tilføje de regler, du vil håndhæve i deres tilsvarende filer-IPv4-regler til ip4-fil og IPv6-regler til ip6-fil.
Dernæst skal vi importere reglerne ved hjælp af kommandoen:
sudo iptables-gendannelse < /tmp/ip4 (replace filename for IPv6)Derefter kan du kontrollere, om reglerne er anvendt ved hjælp af kommandoen:
sudo iptables -L -vEn hurtig iptables-vedvarende guide
Ubuntu og almindelige Debian-baserede distributioner leveres med en iptables-vedvarende pakke, der giver dig mulighed for nemt at anvende dine firewallregler ved genstart. Pakken indeholder filer, du kan bruge til at indstille regler for IPv4 eller IPv6 og kan anvendes automatisk ved opstart.
Du kan også bruge firewallregler ved hjælp af UFW eller GUFW. Overvej følgende vejledning for at lære at bruge UFW.
Sådan installeres iptables-persistent?
Sørg for, at du har vedvarende iptables installeret på dit system. Brug dpkg til at kontrollere, om du har pakken installeret.
Hvis ikke, skal du bruge følgende kommando:
sudo apt-get install iptables-persistent
Du bliver bedt om to gange for at gemme både dine nuværende IPv4- og IPv6-regler. Klik på Ja for at gemme begge regler.
Klik på ja for at gemme IPv6.
Når installationen er afsluttet, skal du kontrollere, at du har underkatalogen iptables, som vist på billedet nedenfor.
Nu kan du bruge reglerne.v4 og regler.v6 for at tilføje regler for iptables, og de anvendes automatisk af iptables-persistent. Filerne er enkle tekstfiler, som du nemt kan redigere ved hjælp af en hvilken som helst teksteditor efter eget valg.
Konklusion
I denne vejledning har vi dækket det grundlæggende i iptables. Startende med at arbejde med iptables, grundlæggende kommandoer, standard iptables-tabeller og parametre.
Fra det, du har lært, skal du være i stand til at bruge iptables til at oprette firewallregler, der hjælper med at sikre dit system.