oktatas:linux:tuzfal:netfilter:nftables
Különbségek
A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
Előző változat mindkét oldalonElőző változatKövetkező változat | Előző változat | ||
oktatas:linux:tuzfal:netfilter:nftables [2022/04/28 22:40] – [Kezdés] admin | oktatas:linux:tuzfal:netfilter:nftables [2022/04/28 22:58] (aktuális) – admin | ||
---|---|---|---|
Sor 3: | Sor 3: | ||
====== nftables ====== | ====== nftables ====== | ||
- | * **Szerző: | + | * [[oktatas:linux:tuzfal:netfilter: |
- | * Copyright (c) Sallai András, 2020, 2022 | + | * [[oktatas:linux:tuzfal:netfilter:nftables:Egyszerűen]] |
- | * Licenc: | + | |
- | * Web: https://szit.hu | + | |
- | + | ||
- | ===== Az nftables ===== | + | |
- | + | ||
- | Az nftables az új csomagszabályzó keretrendszer, | + | |
- | amely felváltja az iptables, ip6tables, arptables, ebtables | + | |
- | infrastruktúrát. | + | |
- | + | ||
- | A **Linux kernel 3.13** verziójától érhető el. Új parancssori | + | |
- | segédprogramot kapott, amelynek szintaxisa is eltér az | + | |
- | iptables-től. Az nftables szabályok többdimenziós fába | + | |
- | rendezhetők, | + | |
- | + | ||
- | Rendelkezik egy kompatibilitási réteggel, amely lehetővé teszi, | + | |
- | iptables parancsok futtatását. | + | |
- | + | ||
- | + | ||
- | Debian 10-en a Netfilter már alapból nftables alapú. | + | |
- | Az nftables-t még az iptables paranccsal használjuk. | + | |
- | A Debian 11-ben már nincs iptables parancs. | + | |
- | Ha szeretnénk iptables parancsot, telepíthető az iptables csomag telepítésével. | + | |
- | Ha telepítjük az iptables csomagot, létrejönnek az alapértelmezett táblák, | + | |
- | úgymint: input, output, forward, mivel az iptables paranccsal nem hozhatók létre | + | |
- | ezek a táblák és láncok; az nftables | + | |
- | + | ||
- | Az iptables csomag rendelkezésünkre bocsájt egy **iptables-translate** nevű parancsot is, | + | |
- | ami úgy paraméterezhetünk mint egy iptables parancsot. Az eredmény az nft talbes | + | |
- | paraméterezve. | + | |
- | + | ||
- | + | ||
- | + | ||
- | Az nftables-t az **nft** paranccsal használjuk. | + | |
- | + | ||
- | + | ||
- | Az nftables-el együtt kapunk egy szolgáltatást: | + | |
- | * nftables.service | + | |
- | + | ||
- | Az nftables.service leállításával állíthatjuk le a tűzfalat, és | + | |
- | tölthetjük be. | + | |
- | ===== Kezdés | + | |
- | + | ||
- | **Debian 11** operációs rendszer **telepítése után a nincs tűzfal**, nincs egyetlen szabály sem. | + | |
- | + | ||
- | A szabályokhoz **táblák, láncok** szükségesek. Ezek az nftables keretrendszer első használatakor | + | |
- | nem állnak rendelkezésre, | + | |
- | + | ||
- | Szükségünk lesz az nft parancsra. Ellenőrizzük: | + | |
- | < | + | |
- | # nft --version | + | |
- | nftables v0.9.8 (E.D.S.) | + | |
- | </ | + | |
- | ==== Táblázás ==== | + | |
- | + | ||
- | Táblák listázása: | + | |
- | nft list tables | + | |
- | + | ||
- | Első indításnál nincs semmilyen tábla. | + | |
- | + | ||
- | Egy input tábla létrehozása: | + | |
- | nft add table inet filter | + | |
- | + | ||
- | A parancs elemézése: | + | |
- | * add - hozzáadunk valamit | + | |
- | * table - táblát adunk hozzá | + | |
- | * inet - IPv4 és IPv6 címteret használjuk | + | |
- | * filter - a létrehozott tábla neve (tetszőleges név) | + | |
- | + | ||
- | + | ||
- | A szűrésekhez egy filter nevű táblát hoztunk létre. | + | |
- | + | ||
- | Most listázzuk a táblákat (prompttal, kimenettel): | + | |
- | < | + | |
- | # nft list tables | + | |
- | table inet input | + | |
- | </ | + | |
- | + | ||
- | Az inet, azt jelenti szeretnénk IPv4 és IPv6 címtérrel is dolgozni. | + | |
- | + | ||
- | A filter típusú táblákhoz használható típusok: inet, ip, ip6, arp, bridge | + | |
- | + | ||
- | + | ||
- | Tábla törlése: | + | |
- | nft delete table inet filter | + | |
- | + | ||
- | + | ||
- | ==== Láncozás ==== | + | |
- | + | ||
- | Új lánc: | + | |
- | nft add chain inet filter input '{type filter hook input priority 0; }' | + | |
- | + | ||
- | A parancs elemézése: | + | |
- | * add - hozzáadunk valamit | + | |
- | * chain - láncot adunk hozzá | + | |
- | * inet - IPv4 és IPv6 címtérrel dolgozunk | + | |
- | * filter - a filter táblához hozzuk létre | + | |
- | * input - a létrehozott lánc neve | + | |
- | * aposztrófok között | + | |
- | * filter típusú táblához hozunk létre láncot | + | |
- | * a kernelben az input nevű kampóhoz csatoljuk a láncot | + | |
- | * prioritás | + | |
- | + | ||
- | Listázás: | + | |
- | nft list chains | + | |
- | + | ||
- | Törlés: | + | |
- | nft delete chain inet filter input | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | ===== Szabályok ===== | + | |
- | + | ||
- | Ha már van láncunk, készíthetünk szabályokat. | + | |
- | A szabályokban leírjuk milyen csomagokra szeretnénk illeszkedést, | + | |
- | és mit szeretnénk csinálni az illeszkedés esetén. | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | ==== Listázás ==== | + | |
- | + | ||
- | A szabályok listázása: | + | |
- | nft list ruleset | + | |
- | + | ||
- | + | ||
- | Vagy így: | + | |
- | nft list table inet filter | + | |
- | + | ||
- | + | ||
- | Szabályok ürítése: | + | |
- | nft flush ruleset | + | |
- | ==== Alap ==== | + | |
- | + | ||
- | + | ||
- | Elérhető a webszerver: | + | |
- | + | ||
- | nft add rule inet filter input tcp dport 80 counter accept | + | |
- | + | ||
- | A helyi folyamatok felé jön egy csomag, TCP protokollon keresztül, és a célja a 80-s port, | + | |
- | akkor elfogadjuk az " | + | |
- | + | ||
- | + | ||
- | + | ||
- | Mindent tiltunk: | + | |
- | nft add rule inet filter input counter drop | + | |
- | + | ||
- | A tiltó utasításnál nem adtunk meg semmilyen illeszkedést, | + | |
- | minden csomagra illeszkedik, | + | |
- | + | ||
- | A szabályokra való illeszkedést egymás után, sorba | + | |
- | vizsgálja a kernel. Ha egy csomag illeszkedik egy | + | |
- | szabályra, a szabály célja kerül végrehajtásra. | + | |
- | Ez általában elfogadás vagy tiltás. A további szabályok illeszkedését | + | |
- | már nem vizsgálja a kernel. Ezért minden csomagra illeszkedő | + | |
- | drop céllal megadott szabályt mindig az utolsó helyre tesszük. | + | |
- | + | ||
- | + | ||
- | Szabály törlése: | + | |
- | nft delete rule inet filter input handle 0 | + | |
- | Ha az első szabály ez a tiltás. | + | |
- | + | ||
- | + | ||
- | Szúrjuk be a második helyre a levelezőszerver engedését: | + | |
- | nft insert inet filter input tcp dport 25 counter accept | + | |
- | + | ||
- | + | ||
- | A pozíció megadása a 0.9.8 verzióban (Debian 11-ben alapértelmezés) | + | |
- | nem működik: | + | |
- | nft insert inet filter input position 3 tcp dport 25 counter accept | + | |
- | + | ||
- | + | ||
- | Visszatérő csomagok engedélyezése: | + | |
- | nft insert rule inet filter input udp sport 53 counter accept | + | |
- | A beszúrás az első helyre történik. | + | |
- | + | ||
- | ==== Törlés ==== | + | |
- | + | ||
- | + | ||
- | Szabályok űrítése | + | |
- | nft flush chain inet filter input | + | |
- | + | ||
- | + | ||
- | ==== Lokális csomagok ==== | + | |
- | + | ||
- | + | ||
- | nft insert rule inet filter input iifname " | + | |
- | + | ||
- | ==== Állapotfigyelés ==== | + | |
- | + | ||
- | + | ||
- | nft add rule inet filter input ct state established tcp sport 80 counter accept | + | |
- | + | ||
- | ==== Honnan hova ==== | + | |
- | + | ||
- | + | ||
- | nft add rule inet filter input ip saddr 192.168.10.11 tcp dport 80 counter accept | + | |
- | + | ||
- | + | ||
- | === Vegyes === | + | |
- | + | ||
- | + | ||
- | nft add rule ip filter input ip saddr 192.168.10.11 ip daddr 192.168.20.12 counter accept | + | |
- | + | ||
- | + | ||
- | ==== Naplózás ==== | + | |
- | + | ||
- | + | ||
- | nft add rule inet filter input counter log | + | |
- | + | ||
- | + | ||
- | + | ||
- | nft add rule inet filter input counter log prefix \" | + | |
- | + | ||
- | + | ||
- | Napló figyelése: | + | |
- | tail -f / | + | |
- | + | ||
- | + | ||
- | ===== Maszkolás ===== | + | |
- | + | ||
- | Létrehozzuk a nat táblát: | + | |
- | nft add table nat | + | |
- | + | ||
- | A postrouting lánc létrehozása: | + | |
- | nft add chain nat postrouting { type nat hook postrouting priority 100 \; } | + | |
- | + | ||
- | Maszkolás beállítása | + | |
- | nft add rule nat postrouting ip saddr 192.168.10.0/ | + | |
- | + | ||
- | A 192.168.10.0/ | + | |
- | + | ||
- | + | ||
- | A maszkolás engedélyezése: | + | |
- | sysctl -w net.ipv4.ip_forward=1 | + | |
- | + | ||
- | + | ||
- | ==== A forward engedélyezése ==== | + | |
- | + | ||
- | Az engedélyezés több módon is lehetséges. | + | |
- | + | ||
- | sysctl -w net.ipv4.ip_forward=1 | + | |
- | Vagy: | + | |
- | echo 1 > / | + | |
- | + | ||
- | Ellenőrzés: | + | |
- | sysctl net.ipv4.ip_forward | + | |
- | + | ||
- | Hálózatikártyán: | + | |
- | sysctl net.ipv4.conf.enp0s3.forwarding | + | |
- | + | ||
- | + | ||
- | ==== Tartósan ==== | + | |
- | + | ||
- | Ahhoz, hogy a beállítás tartós legyen, be kell írnunk egy fájlba. | + | |
- | Az újraindítás után a beállítás aktiválódik. Ha szeretnénk | + | |
- | egy új beállítást aktiválni futás közben, erre is van lehetőségünk. | + | |
- | + | ||
- | <code ini / | + | |
- | net.ipv4.ip_forward = 1 | + | |
- | </ | + | |
- | + | ||
- | Aktualizálás: | + | |
- | sysctl -p / | + | |
- | + | ||
- | Vagy: | + | |
- | systemctl restart procps | + | |
- | + | ||
- | Alternatív lehetőség a beállításra: | + | |
- | / | + | |
- | + | ||
- | ===== Rules tartósan | + | |
- | + | ||
- | + | ||
- | + | ||
- | ==== Az nftables.service ==== | + | |
- | + | ||
- | A operációs rendszer telepítése után kapunk egy nftables.service szolgáltatást, | + | |
- | ami a rendszerindításkor betölti a szabályokat. Alapértelmezetten a | + | |
- | szolgáltatás indulása le van tiltva. | + | |
- | + | ||
- | Engedélyezzük a szolgáltatást, | + | |
- | systemctl enable nftables | + | |
- | + | ||
- | Tűzfal szabályok az / | + | |
- | + | ||
- | + | ||
- | A státusz lekérdezése: | + | |
- | systemctl status nftables | + | |
- | + | ||
- | + | ||
- | A tűzfal szabályok betöltése paranccsal: | + | |
- | systemctl start nftables | + | |
- | + | ||
- | + | ||
- | Tűzfal leállítása: | + | |
- | systemctl stop nftables | + | |
- | + | ||
- | + | ||
- | Indítsuk el: | + | |
- | systemctl start nftables | + | |
- | + | ||
- | ==== Mentés ==== | + | |
- | + | ||
- | Az nft paranccsal beállított táblák, láncok és tűzfalak | + | |
- | a gép újraindítása után elvesznek. Az nftables szolgáltatás | + | |
- | a ''/ | + | |
- | A beállítófájl szintaxisa megegyezik '' | + | |
- | Ennek eredménye, hogy a kimenet egyszerűen a .config fájlba irányíthatjuk, | + | |
- | amit szolgáltatás tud használni. | + | |
- | + | ||
- | nft list ruleset > / | + | |
- | + | ||
- | ==== Szabályok szerkesztése ==== | + | |
- | + | ||
- | A táblák, láncok és szabályok szerkeszthetők egy szövegszerkesztővel is: | + | |
- | + | ||
- | + | ||
- | nano / | + | |
- | + | ||
- | <code bash / | + | |
- | # | + | |
- | + | ||
- | flush ruleset | + | |
- | + | ||
- | table inet filter { | + | |
- | chain input { | + | |
- | type filter hook input priority 0; policy drop; | + | |
- | iifname lo accept | + | |
- | tcp dport 22 accept | + | |
- | } | + | |
- | chain forward { | + | |
- | type filter hook forward pirority 0; | + | |
- | } | + | |
- | chain output { | + | |
- | type filter hook output pirority 0; | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | + | ||
- | ===== Szabályok összeállítása ===== | + | |
- | + | ||
- | Kétféle tűzfal készíthetünk: | + | |
- | * Alapból minden tiltva, csak azt lehet amit engedünk. | + | |
- | * Alapból minden mehet, csak az van tiltva amit beállítunk. | + | |
- | + | ||
- | A visszatérő csomagokat figyelhetjük kapcsolat követéssel, | + | |
- | + | ||
- | ==== Példa ==== | + | |
- | + | ||
- | < | + | |
- | nft insert rule inet filter input iifname " | + | |
- | nft insert rule inet filter input udp sport 53 counter accept | + | |
- | </ | + | |
- | + | ||
- | * először engedünk mindent helyben | + | |
- | * a DNS szervertől elfogadjuk a befelé jövő csomagokat | + | |
- | ===== Forrás ===== | + | |
- | * https:// | + | |
- | * https:// | + |
oktatas/linux/tuzfal/netfilter/nftables.1651178428.txt.gz · Utolsó módosítás: 2022/04/28 22:40 szerkesztette: admin