Zpět na domů

nftables průvodce: nastavení firewallu v Debianu

Průvodce praktickým použitím nftables v Debianu pro ochranu serverů a segmentaci sítí. Popisují se modely hrozeb, schémata oddělení, příklady pravidel a testů. Zahrnuje OneButtonFirewall pro rychlé nasazení.

nftables: od lokálního FW po segmentaci sítě
Advertisement 728x90

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:

Google AdInline article slot
  • 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.

Google AdInline article slot

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.

Google AdInline article slot

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 eth0 pro 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

Advertisement 728x90

Číst dál