Nftables Tutorial

Nftables Tutorial

Denne opplæringen forklarer hvordan du jobber med Nftables Linux -brannmuren. Dette innholdet er optimalisert både for Linux erfarne og nye brukere.

Nftables er en komponent i Linux -kjernen som gir brannmurfunksjonaliteter. Det er erstatning av iptables.

Etter å ha lest denne opplæringen, vil du forstå Nftables 'regler, og du vil kunne opprette brannmuren din. Du trenger ikke forkunnskaper om iptables.

Alle eksempler i denne opplæringen inneholder skjermbilder, noe som gjør det enkelt for alle Linux -brukere, uavhengig av kunnskapsnivået deres, å forstå og implementere dem.

Komme i gang med Nftables

Før du kommer i gang, oppretter og åpner en fil ved hjelp av en tekstredigerer som Nano eller VI for å begynne å skrive de første Nftables -reglene basert på følgende eksempel. Ikke kopierer lim; Skriv inn alt.

Nano brannmur.nft

Eksemplet i denne opplæringen er ganske enkelt og viser en restriktiv brannmur der all IPv4 -trafikk er droppet bortsett fra loopback og spesifikke porter.

I forrige skjermbilde brukte jeg den første linjen til å definere mitt lokale nettverk (192.168.0.0/16) som Linuxhintnet.

Definer LinuxHintNet = 192.168.0.0/16

I den andre linjen definerer jeg en gruppe havner (80.443 og 22). Jeg kaller denne gruppen tillatelsesport fordi jeg planlegger å tillate trafikk gjennom dem. Tillatelse er et vilkårlig navn.

Definer tillatelser = 80,443,53,22

Deretter legger jeg til et bord, som er en beholder eller gruppe kjeder og regler; Begge er forklart nedenfor. Tabeller hjelper regler og kjeder som skal organiseres. Jeg kalte tabellen i eksemplet "restriktivt" fordi det inneholder en restriktiv politikk, og navnet er vilkårlig.

IP -en før tabellnavnet indikerer at regler for que tabell bare vil bli brukt på IPv4 -trafikk. Du kan bruke INET i stedet for IP for å bruke regler på IPv4 og IPv6 -protokoller. Eller du kan erstatte IP med bare IP6 for IPv6.

Husk at restriktivt er et navn jeg definerte vilkårlig. Du kan navngi bordet som du vil.

I mitt tilfelle bruker jeg bare regler på IPv4, som vist nedenfor.

Legg til tabell IP restriktiv

For begge protokoller, bruk følgende:

Legg til tabell inet restriktiv

Så legger vi til den første basekjeden, som jeg vilkårlig navngir innkommende fordi den er relatert til den innkommende trafikken. Du kan imidlertid navngi det som du vil.

Følgende basekjede slipper all innkommende trafikk som standard:

  • Legg til kjede ip restriktiv innkommende: Denne delen legger til den restriktive innkommende kjeden som skal brukes på IPv4
  • Typefilter: Dette definerer kjedetypen som et filter siden det vil filtrere trafikk. Andre mulige kjedetyper er rute eller NAT
  • Krokinngang: refererer til innkommende pakker
  • Prioritet 0: Base Chain Prioritet definerer base kjeder rekkefølge
  • Policy Drop: Drop Policy, som standard, kaster alle pakker
Legg til kjede ip restriktiv innkommende type filterkrok inngangsprioritet 0; Politikkfall;

Som du kan se på følgende skjermbilde, opprettet jeg to andre basekjeder som ligner på den forrige, restriktive omdirigering og restriktive utgående. Forskjellen er den definerte kroken for hver (krok frem og krokutgang). Å forklare dem er repeterende.

Etter de tre basekjedene kan vi fortsette med Nftables -reglene for å tillate loopback -trafikk.

Jeg legger til følgende linjer for innkommende og utgående trafikk på Loopback -grensesnittet.

Legg til regel ip restriktiv innkommende iifname lo counter godta
Legg til regel ip restriktiv innkommende oifname lo teller godta

Nå legger jeg til fire regler som aksepterer utgående og innkommende TCP- og UDP -trafikk gjennom alle porter som er inkludert i variabelen $ tillatelsesports definert i begynnelsen av filen.

Legg til regel ip restriktiv innkommende TCP Sport $ tillater porter mot aksepter
Legg til regel ip restriktiv utgående tcp dport $ tillater porter mot aksepterer
Legg til regel ip restriktiv innkommende UDP Sport $ tillater porter mot aksepter
Legg til regel ip restriktiv utgående UDP DPort $ tillatende teller aksepterer

Du kan se hele skriptet nedenfor.

Når du er ferdig med å skrive tabeller, kjeder og regler, lukker du dokumentet og lagrer endringene.

# I de to første linjene definerer jeg mitt lokale nettverk (LinuxhintNet) og et sett med porter (80,
#443,22) for å muliggjøre trafikk gjennom dem i reglene nedenfor.
Definer LinuxHintNet = 192.168.0.0/16
Definer tillatelser = 80,443,53,22
#Jeg erklærer en ny tabell som vil inneholde kjeder og regler. Jeg kaller denne tabellen "restriktiv".
#"IP" bruker bare regler for IPv4. For IPv6, bare bruk "IP6" og bruk "inet" for begge protokoller.
Legg til tabell IP restriktiv
# Etter å ha laget bordet, lager jeg tre kjeder, innkommende, omdirigering og utgående,
#Deres navn er vilkårlige. Alle av dem slipper innkommende, utgående og videresending av trafikk som standard.
Legg til kjede ip restriktiv innkommende type filterkrok inngangsprioritet 0; Politikkfall;
Legg til kjede ip restriktiv omdirigering type filterkrok fremover prioritet 0; Politikkfall;
Legg til kjede ip restriktiv utgående type filterkrok utgangsprioritet 0; Politikkfall;
# Jeg implementerer to regler for å tillate loopback -trafikk.
Legg til regel ip restriktiv innkommende iifname lo counter godta
Legg til regel ip restriktiv innkommende oifname lo teller godta
# Jeg implementerer regler for å tillate trafikk gjennom porter definert i tillatelsesvariabelen.
Legg til regel ip restriktiv innkommende TCP Sport $ tillater porter mot aksepter
Legg til regel ip restriktiv utgående tcp dport $ tillater porter mot aksepterer
Legg til regel ip restriktiv innkommende UDP Sport $ tillater porter mot aksepter
Legg til regel ip restriktiv utgående UDP DPort $ tillatende teller aksepterer

For å aktivere brannmuren, kjør følgende kommando:

sudo nft -f brannmur.nft

Du kan sjekke reglene dine ved å kjøre følgende kommando:

sudo nft liste regelsett

Det er en grunnleggende restriktiv brannmur.

Konklusjon:

Som du kan se, er Nftables mye mer vennlig enn iptables, og brukere kan lære Nftables raskere enn iptables. Siden Iptables blir avviklet, og mange distribusjoner bruker nftables som standard brannmur, inkludert Debian. Iptables erfarne brukere kan være lurt å se på iptables-nftables-kompat-verktøyet, som oversetter iptables til nftables. Dette kan hjelpe dem å forstå forskjellene.

Profesjonelle brukere som systemadministratorer har en tendens til å fortsette å jobbe med iptables; Unngå å ignorere Nftables for å spare tid mens du forbedrer filtrering. Jeg håper denne artikkelen var enkel nok til å overbevise deg om å prøve nftables.