Nftables oktatóanyag

Nftables Oktatoanyag



Ez az oktatóanyag elmagyarázza, hogyan kell dolgozni az Nftables Linux tűzfallal. Ez a tartalom mind tapasztalt, mind új Linux-felhasználók számára optimalizálva.

Az Nftables a Linux kernel egyik összetevője, amely tűzfalfunkciókat biztosít. Ez az Iptables cseréje.







Az oktatóanyag elolvasása után megérti az Nftables szabályait, és képes lesz létrehozni a tűzfalat. Nincs szükség előzetes ismeretekre az Iptables-ról.



Ebben az oktatóanyagban minden példa tartalmaz képernyőképeket, amelyek megkönnyítik a Linux-felhasználók megértését és megvalósítását, tudásszintjüktől függetlenül.



Az Nftables használatának első lépései

Mielőtt elkezdené, hozzon létre és nyisson meg egy fájlt egy szövegszerkesztővel, például nano vagy vi segítségével, hogy elkezdhesse beírni az első Nftables-szabályokat a következő példa alapján. Ne másolja-beillessze; írj be mindent.





nano tűzfal.nft

Az oktatóanyagban található példa meglehetősen egyszerű, és egy korlátozó tűzfalat mutat be, amelyben az összes IPv4-forgalom megszűnik, kivéve a visszahurkolást és bizonyos portokat.



Az előző képernyőképen az első sort használtam a helyi hálózatom (192.168.0.0/16) LinuxHintNetként történő meghatározásához.

definiálja a LinuxHintNet = 192.168.0.0 / 16

A második sorban a portok egy csoportját határozom meg (80,443 és 22). Ezt a csoportot AllowPort-nak hívom, mert azt tervezem, hogy engedélyezem a forgalmat rajtuk keresztül. Az AllowPorts egy tetszőleges név.

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

Ezután hozzáadok egy táblázatot, amely láncok és szabályok tárolója vagy csoportja; mindkettőt alább ismertetjük. A táblázatok segítik a szabályok és láncok rendszerezését. A példában szereplő táblázatot „Korlátozónak” neveztem, mert korlátozó szabályzatot tartalmaz, és a neve tetszőleges.

A tábla neve előtti IP azt jelzi, hogy a que táblaszabályok csak az IPv4 forgalomra vonatkoznak. Használhatja az inetet az IP helyett, hogy szabályokat alkalmazzon az IPv4 és IPv6 protokollokra. Vagy lecserélheti az IP-t ip6-ra csak IPv6 esetén.

Ne feledje, a Korlátozó egy olyan név, amelyet önkényesen határoztam meg. A táblázatot tetszés szerint nevezheti el.

Az én esetemben csak az IPv4-re alkalmazom a szabályokat, az alábbiak szerint.

táblázat hozzáadása ip Korlátozó

Mindkét protokollhoz használja a következőket:

táblázat hozzáadása inet Korlátozó

Ezután hozzáadjuk az első alapláncot, amit önkényesen Bejövőnek nevezek el, mert a bejövő forgalomhoz kapcsolódik. Nevezheti azonban, ahogy akarja.

A következő alaplánc alapértelmezés szerint eldobja az összes bejövő forgalmat:

  • lánc hozzáadása ip Korlátozott bejövő: Ez a szakasz hozzáadja a korlátozó bejövő láncot, amelyet az IPv4-re kell alkalmazni
  • típusszűrő: Ez a lánc típusát szűrőként határozza meg, mivel ez szűri a forgalmat. További lehetséges lánctípusok a route vagy a NAT
  • hook bemenet: A bejövő csomagokra vonatkozik
  • 0. prioritás: Az alaplánc prioritása határozza meg az alapláncok sorrendjét
  • policy drop: A drop policy alapértelmezés szerint minden csomagot elvet
Adjon hozzá láncot ip Korlátozó bejövő { típus szűrő horog bemeneti prioritás 0 ; politika csökkenése; }

Amint az a következő képernyőképen látható, két másik alapláncot hoztam létre, amelyek hasonlóak az előzőhöz, a Restrictive Redirect és a Restrictive Outgoing. A különbség az egyes (hook előre és horog kimenet) által meghatározott horog. Ezek magyarázata ismétlődő.

A három alaplánc után folytathatjuk az Nftables szabályokat, hogy engedélyezzük a visszahurkolt forgalmat.

A visszacsatolási felületen a bejövő és kimenő forgalomhoz a következő sorokat adom hozzá.

szabály hozzáadása ip Korlátozó bejövő iifname lo counter elfogadja

szabály hozzáadása ip Korlátozó bejövő oifname lo counter elfogadja

Most hozzáadok négy szabályt, amelyek elfogadják a kimenő és bejövő TCP- és UDP-forgalmat a fájl elején meghatározott $AllowPorts változóban szereplő összes porton keresztül.

szabály hozzáadása ip Korlátozó bejövő tcp sport $AllowPorts számláló elfogadja

szabály hozzáadása ip Korlátozó kimenő tcp dport $AllowPorts számláló elfogadja

szabály hozzáadása ip Korlátozó bejövő udp sport $AllowPorts számláló elfogadja

szabály hozzáadása ip Korlátozó kimenő udp dport $AllowPorts számláló elfogadja

A teljes forgatókönyvet alább láthatja.

Miután befejezte a táblázatok, láncok és szabályok beírását, zárja be a dokumentumot, és mentse a módosításokat.

# Az első két sorban megadom a helyi hálózatomat (LinuxHintNet) és egy portkészletet (80,
#443,22), hogy engedélyezze a rajtuk keresztüli forgalmat az alábbi szabályokban.
definiálja a LinuxHintNet = 192.168.0.0 / 16
define AllowPorts   = { 80 , 443 , 53 , 22 }
#Kijelentek egy új táblát, amely láncokat és szabályokat fog tartalmazni. Ezt a táblázatot 'korlátozónak' nevezem.
#Az „ip” csak az IPv4-re vonatkozik. IPv6 esetén csak az „ip6”-ot és mindkét protokollhoz az „inet”-et használja.
táblázat hozzáadása ip Korlátozó
# A táblázat létrehozása után létrehozok három láncot: Bejövő, Átirányítás és Kimenő,
#A nevük önkényes. Alapértelmezés szerint mindegyik csökkenti a bejövő, kimenő és továbbító forgalmat.
lánc hozzáadása ip Korlátozó bejövő { típus szűrő horog bemeneti prioritás 0 ; politika csökkenése; }
lánc hozzáadása ip Korlátozó átirányítás { típus szűrő horog előre prioritás 0 ; politika csökkenése; }
lánc hozzáadása ip Korlátozó kimenő { típus szűrőkampó kimeneti prioritása 0 ; politika csökkenése; }
# Két szabályt valósítok meg a visszahurkolt forgalom engedélyezéséhez.
szabály hozzáadása ip Korlátozó bejövő iifname lo counter elfogadja
szabály hozzáadása ip Korlátozó bejövő oifname lo counter elfogadja
# Olyan szabályokat valósítok meg, amelyek lehetővé teszik a forgalmat az AllowPorts változóban meghatározott portokon.
szabály hozzáadása ip Korlátozó bejövő tcp sport $AllowPorts számláló elfogadja
szabály hozzáadása ip Korlátozó kimenő tcp dport $AllowPorts számláló elfogadja
szabály hozzáadása ip Korlátozó bejövő udp sport $AllowPorts számláló elfogadja

szabály hozzáadása ip Korlátozó kimenő udp dport $AllowPorts számláló elfogadja

A tűzfal aktiválásához futtassa a következő parancsot:

sudo nft -f tűzfal.nft

A szabályokat a következő parancs futtatásával ellenőrizheti:

sudo nft lista szabálykészlet

Ez egy alapvető korlátozó tűzfal.

Következtetés:

Amint láthatja, az Nftables sokkal barátságosabb, mint az Iptables, és a felhasználók gyorsabban tanulhatják meg az Nftables-t, mint az Iptables. Mivel az Iptables megszűnik, és sok disztribúció az Nftables-t használja alapértelmezett tűzfalként, beleértve a Debiant is. Az Iptables gyakorlott felhasználóinak érdemes lehet megnézni az Iptables-nftables-compat eszközt, amely az Iptables-t Nftables-ra fordítja. Ez segíthet nekik megérteni a különbségeket.

A professzionális felhasználók, például a rendszergazdák általában továbbra is az Iptables-szal dolgoznak; Kerülje az Nftables figyelmen kívül hagyását, hogy időt takarítson meg a szűrés javítása közben. Remélem, ez a cikk elég egyszerű volt ahhoz, hogy meggyőzze Önt az Nftables kipróbálásáról.