Nftables veiledning

Nftables Veiledning



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

Nftables er en komponent av Linux-kjernen som gir brannmurfunksjoner. Det er en erstatning av Iptables.







Etter å ha lest denne opplæringen, vil du forstå Nftables-reglene, og du vil kunne lage brannmuren din. Du trenger ikke forkunnskaper om Iptables.



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



Komme i gang med Nftables

Før du begynner, opprett og åpne en fil ved hjelp av et tekstredigeringsprogram som nano eller vi for å begynne å skrive dine første Nftables-regler basert på følgende eksempel. Ikke copy-paste; skriv alt.





nano brannmur.nft

Eksemplet i denne opplæringen er ganske enkelt og viser en restriktiv brannmur der all IPv4-trafikk blir droppet med unntak av 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 porter (80,443 og 22). Jeg kaller denne gruppen AllowPorts fordi jeg planlegger å tillate trafikk gjennom dem. AllowPorts er et vilkårlig navn.

definer AllowPorts   = { 80 , 443 , 53 , 22 }

Deretter legger jeg til en tabell, som er en beholder eller gruppe med kjeder og regler; begge er forklart nedenfor. Tabeller hjelper regler og kjeder med å bli organisert. Jeg kalte tabellen i eksemplet 'Restrictive' fordi den inneholder en restriktiv policy, og navnet er vilkårlig.

IP-en før tabellnavnet indikerer at que table-regler 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 ip6 kun for IPv6.

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

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

legg til tabell ip Begrensende

For begge protokollene, bruk følgende:

legg til tabell inet Restrictive

Deretter legger vi til den første basiskjeden, som jeg vilkårlig kaller Incoming fordi den er relatert til den innkommende trafikken. Du kan imidlertid navngi det som du vil.

Følgende basiskjede slipper all innkommende trafikk som standard:

  • legg til kjede ip Restrictive Incoming: Denne delen legger til Restrictive Incoming-kjeden som skal brukes på IPv4
  • type filter: Dette definerer kjedetypen som et filter siden det vil filtrere trafikk. Andre mulige kjedetyper er rute eller NAT
  • hook input: Refererer til innkommende pakker
  • prioritet 0: Basiskjedeprioritet definerer rekkefølgen på basiskjedene
  • policy drop: Drop policyen, som standard, forkaster alle pakker
Legg til kjede ip Begrensende innkommende { type filter krok inngangsprioritet 0 ; politikk fall; }

Som du kan se i det følgende skjermbildet, opprettet jeg to andre basekjeder som ligner den forrige, Restrictive Redirect og Restrictive Outgoing. Forskjellen er den definerte kroken for hver (krok frem og krok utgang). Å 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.

legge til regel ip Restriktiv Innkommende iifname lo teller godta

legge 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 inkludert i variabelen $AllowPorts definert i begynnelsen av filen.

legge til regel ip Restriktiv innkommende tcp sport $AllowPorts teller godta

legge til regel ip Restriktiv utgående tcp dport $AllowPorts teller godta

legge til regel ip Restrictive Incoming udp sport $AllowPorts teller godta

legge til regel ip Restrictive Outgoing udp dport $AllowPorts teller godta

Du kan se hele manuset nedenfor.

Når du er ferdig med å skrive inn 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 å aktivere trafikk gjennom dem i reglene nedenfor.
definer LinuxHintNet = 192.168.0.0 / 16
definer AllowPorts   = { 80 , 443 , 53 , 22 }
#Jeg erklærer en ny tabell som vil inneholde kjeder og regler. Jeg kaller denne tabellen 'restriktiv'.
#IP-en gjelder kun regler for IPv4. For IPv6, bruk bare 'ip6' og bruk 'inet' for begge protokollene.
legg til tabell ip Begrensende
# Etter å ha opprettet tabellen, oppretter jeg tre kjeder, innkommende, omdirigere og utgående,
#Navnene deres er vilkårlige. Alle dropper innkommende, utgående og videresendingstrafikk som standard.
legg til kjede ip Begrensende innkommende { type filter krok inngangsprioritet 0 ; politikk fall; }
legg til kjede ip Restriktiv omdirigering { type filterkrok fremoverprioritet 0 ; politikk fall; }
legg til kjede ip Begrensende utgående { type filterkrok utgangsprioritet 0 ; politikk fall; }
# Jeg implementerer to regler for å tillate loopback-trafikk.
legge til regel ip Restriktiv Innkommende iifname lo teller godta
legge til regel ip Restriktiv Innkommende oifname lo teller godta
# Jeg implementerer regler for å tillate trafikk gjennom porter definert i AllowPorts-variabelen.
legge til regel ip Restriktiv innkommende tcp sport $AllowPorts teller godta
legge til regel ip Restriktiv utgående tcp dport $AllowPorts teller godta
legge til regel ip Restrictive Incoming udp sport $AllowPorts teller godta

legge til regel ip Restrictive Outgoing udp dport $AllowPorts teller godta

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. Erfarne brukere av Iptables vil kanskje se på Iptables-nftables-compat-verktøyet, som oversetter Iptables til Nftables. Dette kan hjelpe dem til å forstå forskjellene.

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