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:
- 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.
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.
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 eth0do 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
Brak komentarzy.