Ubuntu iptables hvordan du kontrollerer nettverkstrafikk ved hjelp av iptables?

Ubuntu iptables hvordan du kontrollerer nettverkstrafikk ved hjelp av iptables?
“… A User-Space UNIX-verktøy som gir systemadministratorer muligheten til å konfigurere IP-pakkefiltreringsregler implementert av kjernenes nettfiltermodul.” Iptables fungerer som en brannmur ved hjelp av pakkefiltreringsregler basert på forskjellige kriterier som IP -adresse, port og protokoller.

Denne guiden vil diskutere hvordan du konfigurerer og bruker Iptables -regler på et Ubuntu -system for å sikre nettverket ditt. Enten du er en nybegynner Linux -bruker eller en erfaren systemadministrator, fra denne guiden, og på en eller annen måte, vil du lære noe nyttig om iptables.

Iptables kommer forhåndsinstallert på Ubuntu og mest debianbaserte distribusjoner. Ubuntu pakker også Gufw Firewall, et grafisk alternativ du kan bruke til å jobbe med iptables.

MERK: For å bruke og konfigurere iptables, trenger du sudo -privilegier på systemet ditt. Du kan lære mer om sudo fra følgende opplæring.

Nå som du vet hva iptables er, la oss dykke rett inn!

Hvordan bruke iptables for å administrere IPv4 -trafikk?

For å bruke iptables for IPv4 -nettverk og trafikkstyring, må du forstå følgende:

Iptables -kommandoen

Iptables tilbyr et utvalg av alternativer som lar deg tilpasse og stille inn Iptables -reglene dine. La oss diskutere noen av disse parametrene og se hva de gjør.

MERK: Du kan konfigurere et sett med regler som administrerer et spesifikt undergruppe, kjent som iptables -kjeder.

Iptables parametere

Før vi begynner.

Tenk på kommandoen nedenfor:

sudo iptables -i input -s 192.168.0.24 -j Drop

Kommandoen over ber Iptables å lage en regel i kjeden. Regelen slipper alle pakkene fra IP -adressen 192.168.0.24.

La oss undersøke kommandoen, linje for linje, for å forstå den bedre.

  • Den første kommandoen iptables kaller Iptables-kommandolinjeverktøyet.
  • Neste er -Jeg argument brukt for innsetting. Innsettingsargumentet legger til en regel i begynnelsen av Iptables -kjeden og får dermed tildelt en høyere prioritet. For å legge til en regel på et spesifikt nummer i kjeden, bruk -i -argumentet etterfulgt av nummeret der regelen skal få tildelt.
  • -Sargumentet er med på å spesifisere kilden. Derfor bruker vi -s -argumentet etterfulgt av IP -adressen.
  • Parameteren -J med iptables spesifiserer hoppet til et spesifikt mål. Dette alternativet angir handlingen Iptables skal utføre når det er en matchende pakke. Iptables tilbyr fire hovedmål som standard, disse inkluderer: akseptere, slippe, logge og avvise.

Iptables tilbyr et utvalg av parametere som du kan bruke til å konfigurere forskjellige regler. De forskjellige parametrene du kan bruke til å konfigurere iptables -regler inkluderer:

Iptables regelparameter Beskrivelse
-s -source Spesifiser kilden, som kan være en adresse, vertsnavn eller nettverksnavn.
-P -Protokoll Angir tilkoblingsprotokollen; for eksempel TCP, UDP, etc.
-D -Destinasjon Angir destinasjonen, som kan være en adresse, nettverksnavn eller vertsnavn.
-J -jump Sett handlingen iptables skal utføre etter å ha funnet en pakke.
-o -out -grensesnitt Angir grensesnittet som Iptable sender pakken.
-i -in -grensesnitt Angir grensesnittet som brukes til å etablere nettverkspakker.
-C -set -teller Lar administratoren angi byte- og pakketellere for en spesifisert regel.
-G -GOTO -kjede Parameteren spesifiserer at behandlingen skal fortsette i den brukersettkjeden ved retur.
-f -fragment Ber iPtables å bruke regelen bare på andre og følgende fragmenter av de fragmenterte pakkene.

Iptables alternativer

Iptables -kommandoen støtter et bredt spekter av alternativer. Noen vanlige inkluderer:

Alternativ Beskrivelse
-En -avlever Legger til en regel til slutten av en spesifisert kjede
-D -Delete Fjerner en regel fra den spesifiserte kjeden
-F -flush Fjerner alle regler, en om gangen
-L -liste Viser alle reglene i den spesifiserte kjeden
-Jeg -INSERT Setter inn en regel i den spesifiserte kjeden (bestått som et tall, når det ikke er spesifisert nummer; regel blir lagt til øverst)
-C -sjekk Spørsmål om en regelmatching; Krav i en spesifisert regel
-V -verbose Viser flere detaljer når de brukes med -L -parameteren
-N -new -chain Legger til en ny brukerdefinert kjede
-X -Delete -chain Fjerner en spesifikk brukerdefinert kjede

Iptables tabeller

Linux -kjernen har standardtabeller som huser et sett med relaterte regler. Disse standardtabellene har et sett med standardkjeder, men brukere kan tilpasse reglene ved å legge til brukerdefinerte regler.

MERK: Standardtabellene vil sterkt avhenge av kjernen din konfigurasjon og modulene som er installert.

Her er standard Iptables -tabeller:

1: Filtertabellene

Filtertabellen er en standardtabell som inneholder kjeder som brukes til nettverkspakkefiltrering. Noen av standardkjedene i denne tabellen inkluderer:

Kjede Beskrivelse
Inngang Iptables bruker denne kjeden for innkommende pakker til systemet, i.e., Pakker som går til lokale nettverkssokkler.
Produksjon Iptables bruker utgangskjeden for lokalt genererte pakker, i.e., Pakker som går ut av systemet.
Framover Denne kjeden er det Iptables bruker for pakker som er dirigert eller videresendt via systemet.

2: NAT -bordene

NAT- eller nettverksadressetabell er en rutingsenhet som brukes til å endre kilden og målet IP-adresser i en nettverkspakke. NAT -bordets hovedbruk er å koble to nettverk i et privat adresseområde med det offentlige nettverket.

NAT ble utviklet for å støtte maskering av ekte IP -adresser, slik at private IP -adresseområder når det ytre nettverket. Dette hjelper til med å beskytte detaljer om interne nettverk mot å bli avslørt i offentlige nettverk.

NAT -bordet blir ansatt når en pakke setter i gang en ny forbindelse.

Iptables har en standardtabell for NAT -adressering. Denne tabellen har tre hovedkjeder:

Kjede Beskrivelse
PREROUTING Tillater modifisering av pakkeinformasjon før du ankommer inngangskjeden for innkommende pakker
PRODUKSJON Reservert for pakker laget lokalt, jeg.e., Før nettverksruting oppstår
Postrouting Tillater modifisering av utgående pakker- pakker som forlater utgangskjeden

Diagrammet nedenfor viser en oversikt på høyt nivå av denne prosessen.

Bruk kommandoen nedenfor for å se NAT -rutetabellene dine.

iptables -t nat -n -v -l

3: Manglebordene

Manglebordet brukes hovedsakelig til spesiell modifisering av pakker. Enkelt sagt brukes den til å endre IP -overskriftene til en nettverkspakke. Endring av pakker kan omfatte å endre en TTL -verdi på pakke, endre gyldige nettverkshop for en pakke osv.

Tabellen inneholder følgende standardkjeder:

Kjede Beskrivelse
PREROUTING Reservert for innkommende pakker
Postrouting Brukes til utgående pakker
Inngang Brukes til pakker som kommer direkte inn på serveren
PRODUKSJON Brukes til lokale pakker
Framover Reservert for pakker som er dirigert gjennom systemet

4: De rå bordene

Råbordets hovedformål er å konfigurere unntak for pakker som ikke er ment å håndteres av sporingssystemet. Råbordet setter et notrack -merke på pakker, og ber ConnTrack -funksjonen ignorere pakken.

Conntrack er en Linux Kernel Networking -funksjon som lar Linux -kjernen spore alle nettverkstilkoblinger, slik at kjernen kan identifisere pakker som utgjør en nettverksflyt.

Råbordet har to hovedkjeder:

Kjede Beskrivelse
PREROUTING Reservert for pakker mottatt av nettverksgrensesnitt
PRODUKSJON Reservert for pakker initiert av lokale prosesser

5: Sikkerhetsbordet

Denne tabellens primære bruk er å sette intern sikkerhetsforbedring for Linux (Selinux) sikkerhetsmekanisme som markerer på pakker. Sikkerhetsmerket kan bli brukt per tilkobling eller pakke.

Den brukes til obligatoriske regler for tilgangskontroll og er den andre tabellen som er tilgjengelig etter filterbordet. Det tilbyr følgende standardkjeder:

Kjede Beskrivelse
Inngang Reservert for innkommende pakker til systemet
PRODUKSJON Brukes til lokalt opprettede pakker
FRAMOVER Brukes til pakker som er dirigert gjennom systemet

Etter å ha sett på standard Iptables, la oss gå et skritt videre og diskutere hvordan du jobber med Iptables -regler.

Hvordan jobbe med iptables regler?

Iptables regler blir brukt i stigende rekkefølge. Dette betyr at den første regelen i et spesifikt sett blir brukt først, etterfulgt av det andre, deretter tredje, og så videre, til den siste.

På grunn av denne funksjonen forhindrer iptables deg i å legge til regler i et sett ved hjelp av -A -parameteren; Du må bruke -i, etterfulgt av nummeret eller ved å tømme det for å legge til toppen av listen.

Viser iptables

For å se dine iptables, bruk kommandoen iptables -l -v for IPv4 og IP6Tables -L -V for IPv6.

Sette inn regler

For å sette inn regler i et sett, må du plassere dem i den nøyaktige rekkefølgen, og respektere reglene som brukes av samme kjede. Du kan se listen over dine Iptables -regler med kommandoen som diskutert ovenfor:

sudo iptables -l -v

For å sette inn en regel som tillater innkommende tilkoblinger til port 9001 over TCP, må vi for eksempel spesifisere regelnummeret til inngangskjeden som overholder trafikkreglene for nettet.

sudo iptables -i input 1 -p tcp - -dport 9001 -m state -State new -j aksepterer

Når du har sett gjeldende Iptables, bør du se den nye regelen i settet.

sudo iptables -l -v

Erstatte regler

Erstatt funksjonalitet fungerer på samme måte som å sette inn, men den bruker Iptables -R -kommandoen. For å endre regelen ovenfor og angi port 9001 for å nekte, vi for eksempel:

sudo iptables -r input 1 -p tcp - -dport 9001 -m state -state new -j avvise

Slette en regel

For å slette en regel, passerer vi regelnummeret. For å slette regelen ovenfor, kan vi for eksempel spesifisere som:

sudo iptables -d input 1

I de fleste Linux -distros er iptables tomme for enten IPv4 og IPv6. Derfor, hvis du ikke har lagt til noen ny regel, vil du få en utdata som ligner på den som er vist nedenfor. Det er risikabelt fordi det betyr at systemet tillater all innkommende, utgående og dirigert trafikk.

La oss tuck inn hvordan du konfigurerer iptables:

Hvordan du konfigurerer iptables?

Det er mange måter å konfigurere iptables regler. Denne delen bruker eksempler for å vise deg hvordan du angir regler ved å bruke IP -adresser og porter.

Blokkerer og tillater trafikk med porter

Du kan bruke en spesifikk port for å blokkere eller tillate all trafikk på et nettverksgrensesnitt. Tenk på følgende eksempler:

sudo iptables -a input -j aksepterer -p tcp -destination -port 1001 -i wlan0

Ovennevnte kommandoer tillater trafikk på port 1001 TCP på WLAN0 -grensesnittet.

sudo iptables -a input -j drop -p tcp -destination -port 1001 -i wlan0

Denne kommandoen gjør det motsatte av kommandoen ovenfor, da den blokkerer all trafikk på port 1001 på WLAN0.

Her er en nær inspeksjon av kommandoen:

  • Det første argumentet (-a) legger til en ny regel på slutten av bordkjeden.
  • Inngangsargumentet legger til den spesifiserte regelen til tabellen.
  • Drop -argument setter handlingen som skal utføres som henholdsvis aksepter og slipp. Dette betyr at når en pakke blir matchet, blir den droppet.
  • -P spesifiserer protokollen som TCP og lar trafikk på andre protokoller passere.
  • -Destinasjonsport setter regelen for å akseptere eller slippe all trafikk som er bestemt for port 1001.
  • -Jeg ber iptables bruke regelen på trafikk som kommer på WLAN0 -grensesnittet.

MERK: Iptables forstår ikke nettverksgrensesnittaliaser. I et system med mer enn ett virtuelt grensesnitt, må du derfor definere destinasjonsadressen manuelt og eksplisitt.

For eksempel:

sudo iptables -a input -j drop -p tcp -destination -port 1001 -i wlan0 -d 192.168.0.24

Hvitelisting og svartelisting IP -adresser

Du kan opprette brannmurregler ved hjelp av iptables. Et eksempel er ved å stoppe all trafikk og bare tillate nettverkstrafikk fra eksplisitte IP -adresser.

Eksempel:

iptables -a input -m tilstand -state etablert, relatert -j aksepterer
iptables -a input -i lo -m kommentar -Kommentar "Tillat loopback -tilkoblinger" -j aksepterer
iptables -a input -p icmp -m Kommentar -Kommentar “Tillat ping å fungere som forventet” -J

AKSEPTERER

iptables -a inngang -S 192.168.0.1/24 -J godta
iptables -a inngang -S 192.168.0.0 -j aksepterer
iptables -p inngangsfall
iptables -p fremoverfall

Den første linjen setter en regel for å tillate alle kilde -IP -adresser i 192.168.0.1/24 undernett. Du kan også bruke CIDR eller individuelle IP -adresser. I den følgende kommandoen setter vi regelen for å tillate all trafikk koblet til eksisterende tilkoblinger. I de endelige kommandoene setter vi en policy for innspill og fremover for å slippe alle.

Bruker iptables på IPv6

Iptables kommando fungerer bare på IPv4. For å bruke iptables på IPv6, må du bruke IP6Tables -kommandoen. IP6Tables bruker rå-, filter-, sikkerhets- og manglebord. Den generelle syntaksen for ip6tables ligner iptables, og den støtter også matchende iptables -alternativer som vedlegg, sletting osv.

Vurder å bruke IP6Tables manuelle sider for mer informasjon.

Eksempel på iptables regelsett for nettverkssikkerhet

Å lage passende brannmurregler vil hovedsakelig avhenge av tjenesten som kjører på et system og portene som er i bruk. Her er imidlertid noen grunnleggende nettverkskonfigurasjonsregler du kan bruke for å sikre systemet ditt:

1: Tillat loopback -grensesnitttrafikk og avviser all loopback som kommer fra andre grensesnitt

iptables -a input -i lo -j Accept (du kan også bruke ip6tables)
iptables -a inngang ! -Jeg lo -S 127.0.0.0 -j avviser (ip6tables også relevant)

2: nekt alle pingforespørsler

iptables -a input -p icmp -m tilstand -State Ny -ICMP -type 8 -j Avvisning

3: Tillat SSH -tilkoblinger

iptables -a input -p TCP - -DPORT 22 -M Stat -State Ny -j aksepterer

Dette er eksempler på kommandoer du kan bruke for å sikre systemet ditt. Konfigurasjonen vil imidlertid sterkt avhenge av hva eller hvem du vil ha tilgang til forskjellige tjenester.

FORSIKTIGHET: Hvis du foretrekker å deaktivere IPv6 helt, må du sørge for å avgjøre linjen, da dette vil bremse oppdateringsprosessen:

Precedence :: FFFF: 0: 0/96 100 funnet i/etc/gai.konf .

Det er fordi APT Package Manager løser speildomenet i IPv6 på grunn av apt-get-oppdatering.

Hvordan du distribuerer iptables regler?

For å distribuere dine iptables på Ubuntu eller andre Debian-baserte systemer, start med å lage to filer, IP4 og IP6, for sine respektive IP-adresser.

I begge filer, legg til reglene du ønsker å håndheve i de tilsvarende Files-IPV4-reglene til IP4-filen og IPv6-reglene til IP6-filen.

Deretter må vi importere reglene ved å bruke kommandoen:

sudo iptables-restore < /tmp/ip4 (replace filename for IPv6)

Deretter kan du bekrefte om reglene har brukt ved hjelp av kommandoen:

sudo iptables -l -v

En rask iptables-perheristent guide

Ubuntu, og vanlige Debian-baserte distribusjoner, leveres med en Iptables-ordentlig pakke som lar deg bruke brannmurreglene dine enkelt ved omstart. Pakken inneholder filer du kan bruke til å angi regler for IPv4 eller IPv6 og kan brukes automatisk ved oppstart.

Du kan også bruke brannmurregler ved å bruke UFW eller GUFW. Vurder følgende opplæring for å lære å bruke UFW.

Hvordan installere iptables perersistent?

Forsikre deg om at du har installert iptables som er installert på systemet ditt. Bruk DPKG for å sjekke om du har pakken installert.

Hvis ikke, bruk følgende kommando:

sudo apt-get installere iptables perersistent

Du vil bli bedt om to ganger for å lagre både dine nåværende IPv4- og IPv6 -regler. Klikk på ja for å lagre begge reglene.

Klikk på ja for å lagre IPv6.

Når installasjonen er fullført, må du bekrefte at du har underkatalogen iPtables, som vist på bildet nedenfor.

Nå kan du bruke reglene.V4 og regler.V6 for å legge til iptables regler, og de vil bli brukt automatisk av iptables-permentongen. Filene er enkle tekstfiler som du enkelt kan redigere ved hjelp av hvilken som helst tekstredigerer etter eget valg.

Konklusjon

I denne opplæringen har vi dekket det grunnleggende om iptables. Begynner med å jobbe med iptables, grunnleggende kommandoer, standard iptables tabeller og parametere.

Fra det du har lært, bør du være i stand til å bruke iptables for å lage brannmurregler som hjelper deg med å sikre systemet ditt.