Bevezetés — Miért kell most váltanod nftables-re?
Ha még mindig iptables-t használsz a Linux szervereiden, itt az ideje szembenézni a valósággal: egy olyan technológiára támaszkodsz, amit az iparág hivatalosan is leírásra ítélt. A Red Hat az RHEL 9-ben deprecálta az iptables-nft és ipset csomagokat, és megerősítette, hogy az RHEL 10-ben már nem lesznek elérhetők. A Debian 10 óta az nftables az alapértelmezett tűzfal-keretrendszer, az Ubuntu 20.10-től pedig az nftables backend fut a háttérben. Még a kernel is figyelmeztet: „Warning: Deprecated Driver is detected: iptables will not be maintained in a future major release and may be disabled."
Na de itt nem csak arról van szó, hogy „cseréld le, mert régi".
Az nftables architekturálisan jobb: egységes IPv4/IPv6 kezelés, beépített set és map adatstruktúrák O(log n) keresési idővel az iptables lineáris O(n) szabályfeldolgozása helyett, atomi szabálycserék versenyhelyzet nélkül, és egy sokkal olvashatóbb szintaxis. A 2026. februári Linux kernel 6.19.5 és 6.18.15 frissítések pedig tovább javították a teljesítményt — Pablo Neira-Ayuso pipapo set backend optimalizációja gyorsabb tömeges törlést tesz lehetővé, ami különösen dinamikus blokkolási listáknál jön jól (gondolj a fail2ban integrációra).
Szóval, vágjunk bele. Ebben az útmutatóban végigmegyünk mindenen: az architektúra megértésétől a telepítésen és alapkonfiguráción át egészen a haladó funkciókig. Szó lesz DDoS-védelemről, a Docker 29 natív nftables támogatásáról, a Kubernetes kube-proxy nftables módról és a Fail2Ban integrációról is. Gyakorlati kódpéldákat és produkciós konfigurációkat is kapsz — szóval azonnal tudod alkalmazni, amit itt olvastál.
Az nftables architektúra megértése
Mielőtt bármit is konfigurálnánk, érdemes megérteni, mi is az nftables valójában. Nem egyszerűen az iptables újraírt verziója — hanem egy teljesen új csomagszűrő keretrendszer a Linux kernelben. Ez fontos különbség.
A Netfilter alrendszer és az nftables viszonya
Az nftables a Linux kernel Netfilter alrendszerére épül, amely a hálózati csomagok sorsáról dönt. A Netfilter hook-jai (PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING) biztosítják azokat a csatlakozási pontokat, ahol a csomagszűrés megtörténik. Az nftables egy BPF-szerű virtuális gépet használ a kernelben, amely alapvető kifejezésekből (expressions) építi fel a szűrési logikát.
Alapfogalmak: táblák, láncok és szabályok
Az nftables három szinten szervezi a tűzfalszabályokat:
- Tábla (table) — Logikai konténer, amely láncokat tartalmaz. Az iptables-szal ellentétben nincsenek előre definiált táblák — te hozod létre, amit akarsz, bármilyen névvel. Minden tábla egy címcsaládhoz (address family) tartozik:
ip(IPv4),ip6(IPv6),inet(mindkettő),arp,bridgevagynetdev. - Lánc (chain) — Szabályok rendezett listája. A base chain egy Netfilter hook-hoz kapcsolódik (pl. input, forward, output), míg a regular chain más láncokból hívható jump/goto utasítással.
- Szabály (rule) — Feltételeket (expressions) és műveletet (verdict) definiál. Fontos különbség az iptables-hez képest: az nftables-ben egy szabályban több műveletet is végrehajthatsz, míg az iptables-ben minden egyes művelethez külön szabályt kellett írnod.
Halmazok és térképek — beépített adatstruktúrák
Őszintén szólva, az nftables egyik legjobb tulajdonsága a beépített set és map támogatás. Az iptables-ben ehhez külső eszköz (ipset) kellett, ami sosem volt igazán kényelmes.
- Set (halmaz) — IP-címek, portok vagy tartományok gyűjteménye O(1) keresési idővel. Atomikusan frissíthető, és több szabályból is hivatkozható.
- Map (térkép) — Kulcs-érték párok gyűjteménye, ahol a kulcs alapján döntés (verdict) születik. Remekül használható stateful szűrésre, rate limiting-re és routing döntésekre.
- Dinamikus set — A szabályok maguk adhatnak hozzá elemeket, automatikus lejárati idővel. Ez az alapja a dinamikus blokkolási listáknak.
Telepítés és kezdeti konfiguráció
A jó hír az, hogy a legtöbb modern Linux disztribúción az nftables már előre telepítve van. De azért nézzük meg a részleteket, mert disztribúciónként lehetnek apró eltérések.
Debian/Ubuntu rendszerek
# nftables telepítése Debian/Ubuntu rendszeren
sudo apt update
sudo apt install -y nftables
# Szolgáltatás engedélyezése és indítása
sudo systemctl enable nftables
sudo systemctl start nftables
# Verzió ellenőrzése
nft --version
# Kimenet pl.: nftables v1.1.1 (Broken Sword)
RHEL/AlmaLinux/Rocky Linux rendszerek
# nftables telepítése RHEL alapú rendszeren
sudo dnf install -y nftables
# Szolgáltatás engedélyezése és indítása
sudo systemctl enable nftables
sudo systemctl start nftables
# Fontos: ha firewalld fut, azt először le kell állítani,
# vagy együtt kell használni (firewalld nftables backenddel)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
Arch Linux
# nftables telepítése Arch Linuxon
sudo pacman -S nftables
# Szolgáltatás engedélyezése
sudo systemctl enable nftables
sudo systemctl start nftables
Egy fontos megjegyzés: ha a rendszereden még fut az iptables szolgáltatás, feltétlenül állítsd le, mielőtt az nftables-t használnád. A kettő egyidejű futtatása kiszámíthatatlan viselkedéshez vezet, mivel mindkettő a Netfilter hook-okkal dolgozik. Ebből szinte biztosan probléma lesz — ne kísérletezz vele produkciós szerveren.
Produkciós szerver tűzfal — teljes konfiguráció
Na, most jön a lényeg. Az alábbi konfiguráció egy produkciós szerverre ajánlott kiindulópont, amely a default-deny elvet követi: minden bejövő forgalmat elutasítunk, kivéve amit kifejezetten engedélyezünk.
Az alap ruleset
#!/usr/sbin/nft -f
# /etc/nftables.conf — Megerősített produkciós konfiguráció
# Utoljára frissítve: 2026
# Meglévő szabályok törlése
flush ruleset
# Fő tábla létrehozása (inet = IPv4 + IPv6)
table inet filter {
# === BEJÖVŐ FORGALOM ===
chain input {
type filter hook input priority 0; policy drop;
# Állapotkövetés: létrejött és kapcsolódó kapcsolatok engedélyezése
ct state established,related accept
# Érvénytelen csomagok azonnali eldobása
ct state invalid drop
# Loopback interfész engedélyezése
iif "lo" accept
# ICMP engedélyezése (ping, path MTU discovery)
ip protocol icmp icmp type {
echo-request,
echo-reply,
destination-unreachable,
time-exceeded,
parameter-problem
} accept
# ICMPv6 engedélyezése (szükséges IPv6 működéshez)
ip6 nexthdr icmpv6 icmpv6 type {
echo-request,
echo-reply,
destination-unreachable,
packet-too-big,
time-exceeded,
parameter-problem,
nd-neighbor-solicit,
nd-neighbor-advert,
nd-router-solicit,
nd-router-advert
} accept
# SSH engedélyezése (egyedi port, rate limiting-gel)
tcp dport 2222 ct state new limit rate 4/minute burst 8 packets accept
# HTTP és HTTPS engedélyezése (webszervereknél)
tcp dport { 80, 443 } accept
# Minden más tiltva — opcionális naplózással
log prefix "[nftables-drop] " flags all counter drop
}
# === TOVÁBBÍTOTT FORGALOM ===
chain forward {
type filter hook forward priority 0; policy drop;
}
# === KIMENŐ FORGALOM ===
chain output {
type filter hook output priority 0; policy accept;
}
}
Ez a konfiguráció néhány kulcsfontosságú biztonsági döntést tartalmaz. Érdemes kiemelni őket:
- policy drop — Minden, amit nem engedélyezünk kifejezetten, eldobásra kerül. Ez a zero-trust megközelítés alapja, és a legfontosabb dolog, amit megtanulhatsz.
- ct state invalid drop — Az érvénytelen csomagok azonnali eldobása megakadályozza a különféle state-manipulációs támadásokat.
- rate limiting az SSH-n — Percenként maximum 4 új kapcsolat, 8 csomagos burst-tel. Ez önmagában is drasztikusan csökkenti a brute force kísérletek sikerességét.
- ICMPv6 engedélyezése — Ne tiltsd le! Tudom, csábító, de az IPv6 működéséhez elengedhetetlen a neighbor discovery és a router advertisement.
Konfiguráció érvényesítése és betöltése
# Szintaxis ellenőrzése betöltés nélkül
sudo nft -c -f /etc/nftables.conf
# Konfiguráció betöltése
sudo nft -f /etc/nftables.conf
# Aktuális szabályok listázása
sudo nft list ruleset
# Egy adott lánc listázása
sudo nft list chain inet filter input
# Számlálók megjelenítése
sudo nft list counters table inet filter
Kritikus tanács (tapasztalatból mondom): ha távoli szerveren dolgozol, mindig hagyj magadnak egérutat tűzfal-módosítás előtt. Egyszer kizártam magam egy produkciós szerverből, mert nem csináltam meg ezt a lépést. Egy egyszerű megoldás a következő, ami 5 perc után visszaállítja az eredeti konfigurációt:
# Ideiglenes biztonsági háló — 5 perc múlva visszaállítja a szabályokat
echo "nft -f /etc/nftables.conf.bak" | at now + 5 minutes
# Ha minden rendben, töröld az ütemezett feladatot
atrm $(atq | awk '{print $1}')
Haladó funkciók: halmazok, térképek és mérők
Az nftables igazi ereje a haladó adatstruktúrákban rejlik. Ezek teszik lehetővé, hogy komplex szűrési logikát építs minimális szabályszámmal — és igazából ez az, amitől az nftables annyival többet tud, mint az iptables.
Nevesített halmazok (named sets)
A nevesített halmazok lehetővé teszik, hogy IP-címeket, portokat vagy tartományokat csoportosíts, és egyetlen szabályból hivatkozz rájuk:
# Megbízható IP-címek halmaza
table inet filter {
set trusted_ips {
type ipv4_addr
flags interval
elements = {
192.168.1.0/24,
10.0.0.0/8,
203.0.113.50
}
}
# Tiltott országok IP-tartományai (geo-IP szűrés)
set blocked_ranges {
type ipv4_addr
flags interval
auto-merge
}
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
ct state invalid drop
iif "lo" accept
# Tiltott tartományok azonnali eldobása
ip saddr @blocked_ranges counter drop
# Megbízható IP-kből mindent engedélyezünk
ip saddr @trusted_ips accept
# ... további szabályok ...
}
}
Halmazelemek kezelése futásidőben:
# Elem hozzáadása
sudo nft add element inet filter trusted_ips { 198.51.100.0/24 }
# Elem törlése
sudo nft delete element inet filter trusted_ips { 198.51.100.0/24 }
# Halmaz tartalmának listázása
sudo nft list set inet filter trusted_ips
Verdict map — döntési térkép
A verdict map-ek valami olyasmit tudnak, amiért az iptables-ben hosszú szabálylistákat kellett írni. Egyetlen szabályban különböző műveleteket hajthatsz végre a kulcs értéke alapján:
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# Állapotkezelés verdict map-pel — egy szabály, három döntés
ct state vmap {
established : accept,
related : accept,
invalid : drop
}
iif "lo" accept
# Portalapú verdict map
tcp dport vmap {
22 : jump ssh_filter,
80 : accept,
443 : accept,
3306 : jump db_filter
}
}
chain ssh_filter {
# SSH rate limiting
ct state new limit rate 4/minute burst 8 packets accept
drop
}
chain db_filter {
# Adatbázis csak belső hálózatból
ip saddr 10.0.0.0/8 accept
drop
}
}
Dinamikus halmazok és mérők (meters)
A dinamikus halmazok és mérők az nftables leghatásosabb eszközei a valós idejű fenyegetésvédelemhez. A szabályok maguk hozzák létre és frissítik a halmaz elemeit, automatikus lejárati idővel. Igazából ez az, ami miatt érdemes megtanulni az nftables-t:
table inet filter {
# Dinamikus halmaz a túl sok kapcsolatot nyitó IP-khez
set rate_limit_exceeded {
type ipv4_addr
flags dynamic, timeout
timeout 5m
}
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
ct state invalid drop
iif "lo" accept
# Már blokkolt IP-k azonnali eldobása
ip saddr @rate_limit_exceeded drop
# Percenként 10-nél több új kapcsolat = 5 perces tiltás
tcp flags syn ct state new \
update @rate_limit_exceeded { ip saddr limit rate over 10/minute } drop
tcp dport { 80, 443 } accept
}
}
Ez a mechanizmus lényegében egy automatikus, kernel szintű blokkolási lista, amely emberi beavatkozás nélkül reagál a gyanús forgalomra. A timeout 5m biztosítja, hogy a blokkolás automatikusan feloldódik 5 perc inaktivitás után. Nincs szükség kézi karbantartásra, ami egyébként valós környezetben hatalmas megkönnyebbülés.
DDoS és brute force védelem
Az nftables számos beépített mechanizmust kínál a különféle hálózati támadások ellen. Nézzük a legfontosabbakat egyenként.
SYN flood védelem Synproxy-val
A Synproxy a Netfilter beépített mechanizmusa, amely elkapja az új TCP kapcsolatokat és syncookie-k segítségével kezeli a háromutas kézfogást, anélkül hogy a conntrack erőforrásokat terhelné. Ez igazán hatékonyan véd a SYN flood támadások ellen — és meglepően egyszerű beállítani.
# Kernel paraméterek beállítása (szükséges a synproxy működéséhez)
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/tcp_timestamps
# Synproxy szabály az nftables-ben
table inet filter {
chain prerouting {
type filter hook prerouting priority raw; policy accept;
# Synproxy a 80-as és 443-as portra
tcp dport { 80, 443 } tcp flags syn notrack
}
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
ct state invalid drop
# Synproxy kezelés
tcp dport { 80, 443 } ct state untracked,new synproxy mss 1460 wscale 7 timestamp sack-perm
iif "lo" accept
# ... további szabályok ...
}
}
Brute force védelem IP-nkénti rate limiting-gel
Az SSH és más hitelesítési szolgáltatások elleni brute force támadások ellen a leghatékonyabb az IP-nkénti rate limiting, dinamikus halmazokkal kombinálva:
table inet filter {
# SSH támadók dinamikus listája
set ssh_bruteforce {
type ipv4_addr
flags dynamic, timeout
timeout 15m
}
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
ct state invalid drop
iif "lo" accept
# Már blokkolt SSH támadók eldobása
tcp dport 2222 ip saddr @ssh_bruteforce drop
# 3 sikertelen kísérlet 2 percen belül = 15 perces tiltás
tcp dport 2222 ct state new \
update @ssh_bruteforce { ip saddr limit rate over 3/minute burst 5 packets } drop
# Normál SSH forgalom engedélyezése
tcp dport 2222 ct state new accept
tcp dport { 80, 443 } accept
log prefix "[nftables-drop] " counter drop
}
}
Párhuzamos kapcsolatszám korlátozás
A ct count segítségével korlátozhatod az egyidejű kapcsolatok számát IP-nként. Egyszerű, de rendkívül hatásos:
# Maximális egyidejű kapcsolatok IP-nként a webszerverre
tcp dport { 80, 443 } ct count over 50 drop
tcp dport { 80, 443 } accept
# SSH: maximum 3 egyidejű kapcsolat IP-nként
tcp dport 2222 ct count over 3 reject with tcp reset
NAT és port forwarding
Az nftables teljes NAT (Network Address Translation) támogatást nyújt. Akár router/gateway konfigurációra, akár port forwarding-re van szükséged, az nftables egyszerűen kezeli mindkettőt.
Source NAT (masquerade)
table ip nat {
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
# Belső hálózat masquerade-je a kimenő interfészen
oifname "eth0" ip saddr 10.0.0.0/24 masquerade
}
}
# IP forwarding engedélyezése a kernelben
# echo 1 > /proc/sys/net/ipv4/ip_forward
# Vagy permanensen: net.ipv4.ip_forward = 1 a /etc/sysctl.conf-ban
A masquerade automatikusan a kimenő interfész IP-címét használja forrás címként — ideális dinamikus IP-cím esetén (pl. DHCP, PPPoE).
Destination NAT (port forwarding)
table ip nat {
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
# 8080-as port átirányítása belső webszerverre
tcp dport 8080 dnat to 10.0.0.100:80
# HTTPS átirányítása másik szerverre
tcp dport 443 dnat to 10.0.0.101:443
}
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
oifname "eth0" masquerade
}
}
Docker és az nftables: végre barátok
A Docker és az nftables viszonya évek óta fejfájást okoz rendszergazdáknak. Ha valaha is próbáltad a kettőt együtt használni, tudod miről beszélek. De van jó hír: 2026-ban végre komoly előrelépés történt.
Docker Engine 29 — natív nftables támogatás
A Docker Engine 29 bevezette az experimentális nftables támogatást. Ez azt jelenti, hogy a Docker végre közvetlenül nftables szabályokat hoz létre az ip docker-bridges és ip6 docker-bridges táblákban — nem kell többé az iptables kompatibilitási rétegen keresztül trükközni.
Az engedélyezéshez a /etc/docker/daemon.json-ben:
{
"iptables": false,
"ip6tables": false,
"experimental": true,
"bridge-nf-call-iptables": false
}
De azért legyünk őszinték, vannak még korlátai:
- A Swarm mód és overlay hálózatok még mindig iptables-t használnak — ez még fejlesztés alatt áll.
- Ha van iptables FORWARD chain DROP policy-d, az felülírhatja a Docker nftables szabályait. Ilyenkor vagy távolítsd el az iptables DROP policy-t, vagy adj hozzá explicit iptables szabályokat a Docker-forgalom engedélyezésére.
- A
--bridge-accept-fwmarkopció lehetővé teszi firewall mark-ok használatát a Docker szabályainak testreszabásakor.
Kubernetes kube-proxy nftables mód
A Kubernetes v1.21-től a kube-proxy támogatja az nftables módot az iptables alternatívájaként. A fő CNI pluginek (Calico, Cilium, Weave) szintén támogatják az nftables-t hálózati szabályzatokhoz.
A gyakorlati eredmények 2026-ban elég impresszívek: a Calico nftables-szal 20-30%-kal jobb teljesítményt nyújt nagy léptékű környezetekben az iptables-hez képest, 80-90 Gbps átvitellel és 100-200 µs késleltetéssel. Egy pénzügyi szolgáltató esettanulmánya szerint a Flannel-ről Calico nftables-re való áttérés 40%-kal csökkentette a késleltetést egy 50 csomópontos klaszterben. Ezek nem kis számok.
Fail2Ban integráció nftables-szal
Ha már használod a Fail2Ban-t (és ha nem, akkor kérdezd meg magadtól, hogy miért nem), érdemes natívan nftables-szal konfigurálni. Az alapértelmezett Fail2Ban konfiguráció iptables-t feltételez, de a 0.9.4-es verzió óta van natív nftables támogatás.
1. lépés: nftables tábla létrehozása a Fail2Ban számára
#!/usr/sbin/nft -f
# /etc/nftables/fail2ban.conf
table ip fail2ban {
chain input {
type filter hook input priority 100;
}
}
A priority 100 biztosítja, hogy a Fail2Ban szabályai a fő tűzfalszabályok után futnak — így a tiltott IP-k blokkolódnak, mielőtt a fő szabálykészlethez érnének.
2. lépés: beillesztés a fő konfigurációba
# /etc/nftables.conf elején, a flush ruleset után
include "/etc/nftables/fail2ban.conf"
3. lépés: Fail2Ban beállítása nftables-hoz
# /etc/fail2ban/jail.local
[DEFAULT]
banaction = nftables-multiport
chain = input
# SSH jail
[sshd]
enabled = true
port = 2222
maxretry = 3
findtime = 600
bantime = 3600
logpath = /var/log/auth.log
# Visszaeső támadók (recidive) — hosszabb tiltás
[recidive]
enabled = true
logpath = /var/log/fail2ban.log
banaction = nftables-allports
bantime = 86400
findtime = 86400
maxretry = 3
4. lépés: systemd integráció
# /etc/systemd/system/fail2ban.service.d/override.conf
[Unit]
Requires=nftables.service
PartOf=nftables.service
[Install]
WantedBy=multi-user.target nftables.service
# Alkalmazzuk a módosítást
sudo systemctl daemon-reload
sudo systemctl restart fail2ban
Ezzel a konfigurációval, ha az nftables szolgáltatás újraindul, a Fail2Ban automatikusan újratölti a tiltási szabályait. A Fail2Ban az nftables set-eket használja a tiltott IP-k tárolására, ami azt jelenti, hogy egyetlen halmaz-hivatkozás elegendő az összes tiltás kezeléséhez. Nem kell IP-nként külön szabályt létrehozni — ez jóval hatékonyabb, mint az iptables-es megoldás volt.
Migráció iptables-ról nftables-re
Ha meglévő iptables konfigurációd van, ne aggódj — az nftables beépített eszközöket kínál a zökkenőmentes áttéréshez.
Automatikus fordítás
# Egyedi iptables szabály fordítása nftables szintaxisra
iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPT
# Kimenet: nft add rule ip filter INPUT tcp dport 22 counter accept
# Teljes szabálykészlet fordítása
iptables-save | iptables-restore-translate -f /etc/nftables-migrated.conf
# IPv6 szabályok fordítása
ip6tables-save | ip6tables-restore-translate -f /etc/nftables-migrated-v6.conf
Migrációs lépések
- Mentsd el a jelenlegi iptables szabályokat:
iptables-save > /root/iptables-backup.rules - Fordítsd le nftables formátumba az
iptables-restore-translateeszközzel - Ellenőrizd a generált konfigurációt — a fordítás nem mindig tökéletes, különösen összetett szabályoknál (ezt tapasztalatból mondom)
- Teszteld staging környezetben — soha ne élesíts migrált tűzfalat ellenőrzés nélkül
- Állítsd le az iptables szolgáltatást és indítsd el az nftables-t
- Monitorozd a forgalmat a számlálók és naplók segítségével
Fontos: az iptables-ről nftables-re való migráció egyirányú folyamat. A két rendszer nem futhat stabilan párhuzamosan, és az iptables-nft kompatibilitási réteg nem helyettesíti a natív nftables konfigurációt. Ha egyszer váltottál, ne nézz vissza.
Produkciós best practice-ek összefoglalása
Végül álljon itt egy összefoglalás azokról a gyakorlati tanácsokról, amelyeket érdemes betartani:
- Mindig default-deny policy — Az input és forward láncokon a
policy dropaz alap. Csak azt engedélyezd, amire tényleg szükség van. - Atomi frissítések — Az
nft -fparanccsal töltsd be a konfigurációt, ez tranzakcionálisan alkalmazza a változtatásokat. Nincs versenyhelyzet, nincs átmeneti állapot. - Verziókezelés — Tartsd a
/etc/nftables.conffájlt Git-ben. Minden változtatás legyen követhető és visszaállítható. - Monitoring — Használd a számlálókat (
nft list counters) az eldobott csomagok figyelésére. A naplózás (log prefix) pedig a hibakeresésben sokat segít. - Tesztelés — Az
nft -c -fszintaxis-ellenőrzéssel validáld a konfigurációt betöltés előtt. Mindig. - Biztonsági háló távoli szervereken — Mindig legyen egy
atvagycronjob, ami visszaállítja az eredeti konfigurációt. Egy pillanat figyelmetlenség elég, és kizárod magad. - Réteges védelem — Az nftables önmagában nem elegendő. Kombináld Fail2Ban-nal, IDS/IPS rendszerrel (pl. Suricata) és felhőszintű tűzfallal (AWS Security Groups, DigitalOcean Cloud Firewall, stb.).
- Rendszeres felülvizsgálat — Havi rendszerességgel ellenőrizd a tűzfalszabályokat: vannak-e felesleges vagy elavult szabályok, megfelelőek-e a rate limit értékek.
Gyakran ismételt kérdések (GYIK)
Lehet-e egyszerre használni az iptables-t és az nftables-t?
Technikailag igen, de erősen ellenjavalt. Mindkettő a Netfilter hook-okkal dolgozik, és az egyidejű használat kiszámíthatatlan viselkedéshez vezet. Az iptables-nft kompatibilitási réteg létezik, de ne tekintsd hosszú távú megoldásnak. Válassz egyet, és maradj annál.
Hogyan befolyásolja az nftables a Docker konténerek hálózatát?
A Docker történelmileg iptables-t használt a hálózati szabályok kezeléséhez, ami nem ritkán konfliktusba került az nftables-szal. A Docker Engine 29 óta van experimentális natív nftables támogatás. Ha ezt nem használod, a legbiztosabb megoldás a Docker iptables kezelésének letiltása ("iptables": false a daemon.json-ben) és a szabályok manuális kezelése. Mindig teszteld a konténerek hálózati elérhetőségét a tűzfal módosítása után.
Az nftables tud geo-IP szűrést végezni?
Közvetlenül nem, de halmazokkal (sets) tökéletesen megoldható. Bash szkriptek vagy dedikált eszközök segítségével országspecifikus IP-tartományokat tölthetsz be nftables halmazokba, amelyeket aztán a szűrési szabályokban felhasználhatsz. Hatékonyan csökkenti a kártékony forgalmat, különösen DDoS támadások és brute force kísérletek ellen.
Mennyivel gyorsabb az nftables az iptables-nél nagy szabálykészleteknél?
Az nftables beépített set és map adatstruktúrái O(log n) vagy O(1) keresési időt biztosítanak, szemben az iptables lineáris O(n) feldolgozásával. Néhány száz szabálynál a különbség elhanyagolható, de több ezer szabálynál (ami ipari környezetben egyáltalán nem ritka) az nftables nagyságrendekkel gyorsabb. A Calico CNI plugin nftables módja 20-30%-kal jobb teljesítményt mutat nagy Kubernetes környezetekben.
Mi történik, ha az nftables szolgáltatás összeomlik?
Az nftables szabályai a kernelben élnek, nem a felhasználói térben. Ha az nft parancssori eszköz vagy az nftables systemd szolgáltatás összeomlik, a már betöltött szabályok továbbra is aktívak maradnak. A szabályok csak akkor vesznek el, ha a kernel újraindul, vagy ha valaki explicit módon törli őket (nft flush ruleset). Éppen ezért fontos, hogy a /etc/nftables.conf mindig naprakész legyen, és a systemd szolgáltatás legyen engedélyezve rendszerindításkor.