Powrót do strony głównej

nftables przewodnik: konfiguracja firewalla w Debian

Przewodnik po praktycznym użyciu nftables w Debian do ochrony serwerów i segmentacji sieci. Opisano modele zagrożeń, schematy segmentacji, przykłady reguł i stanowisk. Zawiera OneButtonFirewall do szybkiego wdrożenia.

nftables: od lokalnego FW do segmentacji sieci
Advertisement 728x90

Praktyczne zastosowanie nftables do ochrony sieci: przewodnik dla administratorów

nftables w Debianie umożliwia wdrożenie solidnej filtracji ruchu na serwerze lub stacji roboczej. Głównym celem jest blokowanie niepożądanych połączeń i kontrola wychodzących połączeń. Algorytm obejmuje modelowanie zagrożeń, schematy podziału uprawnień oraz reguły filtracji.

Na początek utwórz szablon maszyny wirtualnej na Debianie 11.4 netinstall: minimalna instalacja bez zbędnych pakietów, dodaj ssh, mc, conntrack za pomocą apt install mc ssh conntrack. Użyj systemu wirtualizacji z zarządzaniem sieciami (QEMU-KVM, VirtualBox).

Modelowanie zagrożeń i środki neutralizacji

Określ kluczowe zagrożenia:

Google AdInline article slot
  • Z1: Wykorzystywanie luk w usługach — blokuj ruch przychodzący na portach/adresach.
  • Z2: Ataki DoS — ogranicz częstotliwość pakietów, odrzucaj źródła loopback (127.0.0.0/8 nie z lo).
  • Z3: Brute-force haseł — monitoruj nieudane autoryzacje z blokadą IP.
  • Z4: Wychodzące złośliwe połączenia — filtruj po adresach, portach, protokołach.
  • Z5: Nieautoryzowane porty — zabraniaj nowych przychodzących połączeń.

Schematy podziału od minimalnego do wzmocnionego:

  • Minimalny (stacje robocze): Cały ruch przychodzący zabroniony poza established, wychodzący — dozwolony.
  • Podstawowy (serwery): Dozwolone SSH (22), HTTP/HTTPS (80/443), ICMP; limit conntrack.
  • Wzmocniony: Białe listy adresów, rate-limit na portach, czarne listy dla DoS.

Wdrożenie wzmocnionej ochrony serwera

Środowisko: Serwer Debian w sieci 192.168.1.0/24, interfejs eth0.

Zadanie: Skonfiguruj nftables według schematu wzmocnionej ochrony.

Google AdInline article slot

Przygotowanie:

apt update && apt install nftables
systemctl enable nftables

Reguły w /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

# Odrzucanie źródeł loopback
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

Zastosuj: nft -f /etc/nftables.conf. Sprawdź nft list ruleset, conntrack -L.

Google AdInline article slot

Testowanie firewalla

Środowisko: klient (192.168.1.10) i serwer (192.168.1.20).

Zadanie: Testuj dostęp do portów, DoS, wychodzące połączenia.

Przebieg:

  • nmap -p 22,80,443 192.168.1.20 — tylko SSH otwarty.
  • hping3 --flood -S 192.168.1.20 -p 22 — rate-limit zadziała.
  • tcpdump -i eth0 do monitorowania odrzuceń.

Segmentacja sieci przez router

Włącz IP forwarding: sysctl net.ipv4.ip_forward=1.

Środowisko: router (eth0: LAN1 192.168.10.0/24, eth1: LAN2 192.168.20.0/24).

Zadanie: Podziel segmenty user i server.

Reguły:

nft add table inet filter
nft add chain inet filter forward { type filter hook forward priority 0; policy drop; }

# Z user do server: tylko potrzebne 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

# Z powrotem
nft add rule inet filter forward iifname "eth1" oifname "eth0" ct state established,related accept

# Server -> internet
nft add rule inet filter forward iifname "eth1" oifname "eth2" accept

Segmentacja przełącznikiem (L2-firewall)

Bez podsieci IP: VLAN lub filtracja oparta na MAC.

Reguły dla bridge:

nft add table bridge filter
nft add chain bridge filter forward { type filter hook forward priority 0; }

# Blokada między grupami MAC
nft add rule bridge filter forward ether saddr 00:11:22:33:44:00 ether daddr 00:55:66:77:88:99 drop

OneButtonFirewall: uproszczona ochrona segmentu

Projekt do szybkiego wdrożenia: skrypt generuje reguły na podstawie szablonów.

Środowisko: Urządzenie OBF między segmentami.

Realizacja: skrypt parsuje konfigurację (JSON/YAML), stosuje nftables.

Zalety: zerowa konfiguracja, autoaktualizacja; wady: mniej elastyczny.

Scenariusze: SOHO, małe firmy bez specjalistów ds. bezpieczeństwa.

Co ważne:

  • Zawsze modeluj zagrożenia przed konfiguracją.
  • Używaj policy drop z explicit accept.
  • Testuj rate-limit i conntrack.
  • Balansuj ochronę i użyteczność.
  • Monitoruj logi nftables (nft log rule).

— Editorial Team

Advertisement 728x90

Czytaj dalej