Praktické použití nftables pro ochranu sítí: průvodce pro administrátory
nftables v Debianu umožňuje nastavit spolehlivou filtraci provozu na serveru nebo pracovní stanici. Hlavním úkolem je blokování nežádoucích připojení a kontrola odchozích spojení. Postup zahrnuje modelování hrozeb, schéma segmentace a pravidla filtrování.
Pro začátek vytvořte šablonu virtuálního stroje na Debianu 11.4 netinstall: minimální instalace bez zbytečných balíčků, přidejte ssh, mc, conntrack přes apt install mc ssh conntrack. Použijte virtualizační systém s řízením sítí (QEMU-KVM, VirtualBox).
Modelování hrozeb a opatření k jejich neutralizaci
Určete klíčové hrozby:
- H1: Využití zranitelností v službách — blokujte příchozí provoz podle portů/adres.
- H2: DoS útoky — omezujte frekvenci paketů, odstraňujte zdroje z loopbacku (127.0.0.0/8 mimo lo).
- H3: Brute-force útoky na hesla — monitorujte neúspěšné autentizace s blokací IP.
- H4: Odchozí škodlivá spojení — filtrujte podle adres, portů, protokolů.
- H5: Neoprávněné porty — zakazujte nová příchozí spojení.
Schéma segmentace od minimálního po posílené:
- Minimální (pracovní stanice): Veškerý příchozí provoz zakázán kromě established, odchozí povolen.
- Základní (servery): Povoleny SSH (22), HTTP/HTTPS (80/443), ICMP; limit conntrack.
- Posílené: Bílé seznamy adres, rate-limit na porty, černé seznamy pro DoS.
Realizace posílené ochrany serveru
Testovací prostředí: Debian server v síti 192.168.1.0/24, rozhraní eth0.
Úkol: Nastavit nftables podle schématu posílené ochrany.
Příprava:
apt update && apt install nftables
systemctl enable nftables
Pravidla v /etc/nftables.conf:
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0; policy drop; }
nft add chain inet filter output { type filter hook output priority 0; policy accept; }
nft add chain inet filter forward { type filter hook forward priority 0; policy drop; }
# Established/related
nft add rule inet filter input ct state established,related accept
# Loopback
nft add rule inet filter input iifname "lo" accept
# ICMP
nft add rule inet filter input ip protocol icmp icmp type { echo-request, echo-reply } accept
# SSH rate-limit
nft add rule inet filter input tcp dport 22 ct state new limit rate 5/minute accept
nft add rule inet filter input tcp dport 22 ct state new drop
# Odstranění loopback zdrojů
nft add rule inet filter input ip saddr 127.0.0.0/8 iifname != "lo" drop
nft add rule inet filter input ct state invalid drop
nft add rule inet filter input accept
Aplikujte: nft -f /etc/nftables.conf. Zkontrolujte nft list ruleset, conntrack -L.
Testování firewallu
Testovací prostředí: klient (192.168.1.10) a server (192.168.1.20).
Úkol: Testovat přístup k portům, DoS, odchozí spojení.
Průběh:
nmap -p 22,80,443 192.168.1.20— otevřený pouze SSH.hping3 --flood -S 192.168.1.20 -p 22— rate-limit se aktivuje.tcpdump -i eth0pro monitorování blokovaných paketů.
Segmentace sítě routerem
Zapněte IP forwarding: sysctl net.ipv4.ip_forward=1.
Testovací prostředí: router (eth0: LAN1 192.168.10.0/24, eth1: LAN2 192.168.20.0/24).
Úkol: Oddělit segment uživatelů od serverů.
Pravidla:
nft add table inet filter
nft add chain inet filter forward { type filter hook forward priority 0; policy drop; }
# Z uživatelů do serverů: pouze potřebné porty
nft add rule inet filter forward iifname "eth0" oifname "eth1" tcp dport {22,80,443} ct state new accept
nft add rule inet filter forward iifname "eth0" oifname "eth1" ct state established,related accept
# Zpět
nft add rule inet filter forward iifname "eth1" oifname "eth0" ct state established,related accept
# Servery -> internet
nft add rule inet filter forward iifname "eth1" oifname "eth2" accept
Segmentace switchem (L2-firewall)
Bez IP podsítí: VLAN nebo filtrování podle MAC.
Pravidla pro bridge:
nft add table bridge filter
nft add chain bridge filter forward { type filter hook forward priority 0; }
# Blokování mezi MAC skupinami
nft add rule bridge filter forward ether saddr 00:11:22:33:44:00 ether daddr 00:55:66:77:88:99 drop
OneButtonFirewall: zjednodušená ochrana segmentu
Projekt pro rychlé nasazení: skript generuje pravidla na základě šablon.
Testovací prostředí: OBF zařízení mezi segmenty.
Realizace: skript parsuje konfiguraci (JSON/YAML), aplikuje nftables.
Výhody: nulová konfigurace, automatické aktualizace; nevýhody: méně flexibilní.
Scénáře: SOHO, malé firmy bez specialistů na IB.
Důležité body:
- Vždy modelujte hrozby před nastavením.
- Používejte policy drop s explicitním accept.
- Testujte rate-limit a conntrack.
- Vyvažte ochranu a použitelnost.
- Monitorujte logy nftables (
nft log rule).
— Editorial Team
Zatím žádné komentáře.