Felhasználói eszközök

Eszközök a webhelyen


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.

Összehasonlító nézet linkje

Előző változat mindkét oldalonElőző változat
oktatas:linux:tuzfal:netfilter:nftables [2022/04/28 22:41] – [Állapotfigyelés] adminoktatas:linux:tuzfal:netfilter:nftables [2022/04/28 22:58] (aktuális) admin
Sor 3: Sor 3:
 ====== nftables ====== ====== nftables ======
  
-  * **Szerző:** Sallai András +  * [[oktatas:linux:tuzfal:netfilter:nftables:Kezdés]] 
-  * Copyright (c) Sallai András, 2020, 2022 +  * [[oktatas:linux:tuzfal:netfilter:nftables:Egyszerűen]]
-  * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] +
-  * Webhttps://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, amelyek segítik az áttekinthetőséget.  +
- +
-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, +
-úgymintinput, output, forward, mivel az iptables paranccsal nem hozhatók létre +
-ezek a táblák és láncok; az nftables használatával, meg maguknak kell azokat létrehozni.  +
- +
-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, létre kell azokat hozni. +
- +
-Szükségünk lesz az nft parancsra. Ellenőrizzük: +
-<code> +
-# nft --version +
-nftables v0.9.8 (E.D.S.) +
-</code> +
-==== 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): +
-<code> +
-# nft list tables +
-table inet input +
-</code> +
- +
-Az inet, azt jelenti szeretnénk IPv4 és IPv6 címtérrel is dolgozni. +
- +
-A filter típusú táblákhoz használható típusokinet, 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 "accept" célt alkalmazzuk. +
- +
- +
- +
-Mindent tiltunk: +
-  nft add rule inet filter input counter drop +
- +
-A tiltó utasításnál nem adtunk meg semmilyen illeszkedést, ezért +
-minden csomagra illeszkedik, ami befelé jön. +
- +
-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 "lo" counter accept +
- +
-==== Állapotfigyelés ==== +
- +
- +
-  nft add rule inet filter input ct state established,related 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 \"---ELDOB---\" +
- +
- +
-Napló figyelése: +
-  tail -f /var/log/syslog +
- +
- +
-===== 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/24 oif enp0s3 masquerade +
- +
-A 192.168.10.0/24 a maszkolt hálózat. Az enp0s3 a kimenő interfész. +
- +
- +
-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 > /proc/sys/net/ipv4/ip_forward +
- +
-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 /etc/sysctl.conf> +
-net.ipv4.ip_forward = 1 +
-</code> +
- +
-Aktualizálás: +
-  sysctl -p /etc/sysctl.conf +
- +
-Vagy: +
-  systemctl restart procps +
- +
-Alternatív lehetőség a beállításra: +
-  /etc/sysctl.d/local.conf +
- +
-===== 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, hogy a gép újraindítása után a szabályok betöltésre kerüljenek: +
-  systemctl enable nftables +
- +
-Tűzfal szabályok az /etc/nftables.conf fájlból töltődnek be. +
- +
- +
-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 ''/etc/nftables.conf'' fájlból olvassa beállításokat.  +
-A beállítófájl szintaxisa megegyezik ''nft list ruleset'' kimenetével.  +
-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 > /etc/nftables.conf +
- +
-==== Szabályok szerkesztése ==== +
- +
-A táblák, láncok és szabályok szerkeszthetők egy szövegszerkesztővel is: +
- +
- +
-  nano /etc/nftables.conf  +
- +
-<code bash /etc/nftables.conf> +
-#!/usr/sbin/nft -f +
- +
-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; +
-    } +
-+
-</code> +
- +
-===== 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, vagy nélküle.  +
- +
-==== Példa ==== +
- +
-<code> +
-nft insert rule inet filter input iifname "lo" counter accept +
-nft insert rule inet filter input udp sport 53 counter accept +
-</code> +
- +
-  * először engedünk mindent helyben +
-  * a DNS szervertől elfogadjuk a befelé jövő csomagokat +
-===== Forrás ===== +
-  * https://wiki.nftables.org/wiki-nftables/index.php/Main_Page (2022) +
-  * https://wiki.archlinux.org/title/nftables (2022)+
oktatas/linux/tuzfal/netfilter/nftables.1651178495.txt.gz · Utolsó módosítás: 2022/04/28 22:41 szerkesztette: admin