Konfiguracja Firewalla: Ewolucja od iptables do nftables
Zaawansowane zarządzanie filtrowaniem ruchu sieciowego i hardening reguł dla serwerów publicznych.
01. Wstęp: Dlaczego nowoczesny firewall ma znaczenie?
W świecie administrowania systemami Linux, firewall to nie tylko "blokada portów". To rzemiosło, które decyduje o stabilności i bezpieczeństwie całego ekosystemu. W dobie zmasowanych ataków typu brute-force oraz skanowania podatności w czasie rzeczywistym, pasywne podejście do bezpieczeństwa sieciowego jest wyrokiem.
Jako administratorzy musimy dążyć do precyzji. Każdy pakiet, który trafia do stosu sieciowego jądra, musi być procesowany z minimalnym narzutem wydajnościowym, przy zachowaniu maksymalnej przejrzystości reguł.
02. Zmiana warty: Od iptables do nftables
Przez lata iptables był standardem. Jednak jego architektura – oparta na oddzielnych narzędziach dla IPv4, IPv6 (ip6tables), ARP (arptables) i mostków (ebtables) – stała się nieefektywna.
nftables wprowadza rewolucję:
- check_circle Zunifikowany framework dla wszystkich protokołów.
- check_circle Znacznie prostsza i bardziej czytelna składnia wzorowana na tcpdump.
- check_circle Lepsza wydajność dzięki atomowym aktualizacjom reguł bez konieczności przeładowywania całego stosu.
03. Praktyczna konfiguracja nftables
Poniżej prezentuję bazowy szablon konfiguracji dla serwera publicznego, który implementuje bezpieczne podejście „Default Drop”.
# /etc/nftables.conf
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
# Allow loopback
iif "lo" accept
# Established and related connections
ct state established,related accept
# ICMP (Ping) with rate limit
icmp type echo-request limit rate 5/second accept
# SSH - restrict to trusted IP or use port knocking
tcp dport 22 accept
# HTTP/HTTPS for web server
tcp dport { 80, 443 } accept
# Log dropped packets (optional for debugging)
limit rate 3/minute log prefix "NFT_INPUT_DROP: "
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
04. Hardening reguł: Rate Limiting & Logging
Podstawowe otwarcie portów to dopiero początek. Prawdziwy hardening polega na limitowaniu nadmiarowego ruchu, który może wskazywać na próbę ataku DoS lub brute-force.
speed Rate Limiting
Używaj setów do dynamicznego banowania IP, które generują zbyt wiele połączeń w krótkim czasie na port SSH.
description Logging Strategy
Loguj tylko to, co istotne. Nadmierne logowanie może doprowadzić do wyczerpania miejsca na dysku i spowolnienia systemu.
Podsumowanie
Przejście na nftables na początku wydaje się trochę jak uczenie się jazdy na nowo. Przez kilkanaście lat wklepywałem regułki iptables z zawiązanymi oczami, więc zmiana nawyków trochę bolała. Ale powiem wprost: było warto. Nftables to nie tylko nowa, czystsza składnia. To przede wszystkim koniec koszmaru z debugowaniem konfliktów między IPv4 a IPv6, koniec zgadywania dlaczego tabela NAT ignoruje nasze pakiety i koniec resetowania wszystkich połączeń przy każdym przeładowaniu firewalla podczas wdrożenia.
Dla mnie największą wartością nie jest nawet sama wydajność, o której wszyscy trąbią (choć przy gigabajtowych atakach DDoS robi to robotę). Najważniejszy jest święty spokój. Zestawy (sets) i mapowanie pozwalają mi zredukować setki rozwlekłych linijek konfiguracji do jednego, czytelnego pliku, który w końcu mogę normalnie utrzymywać w systemie kontroli wersji. To czysta higiena pracy administratora i inwestycja w to, żeby pager nie budził Cię w środku nocy. Traktuj to jako fundament, bez którego po prostu nie wypuszcza się maszyn na produkcję w otwarty internet.