Czym jest ten builder iptables / nftables?
Zapora sieciowa w Linuksie odgania niechciany ruch od Twojego serwera. W jądrze są dwa narzędzia: iptables (klasyczne, od 1998), oraz nftables (nowoczesny następca, domyślnie na Debianie 11+, Ubuntu 22.04+, RHEL-u 9+ i większości aktualnych dystrybucji).
Ten builder pozwala napisać reguły w przyjaznym formularzu i generuje obie składnie naraz. Wybierasz łańcuch (INPUT, OUTPUT, FORWARD), akcję (ACCEPT, DROP, REJECT, LOG), protokół, źródło, cel, porty oraz stan połączenia, a w podglądzie dostajesz gotowy do wklejenia ruleset.
Wszystko dzieje się w Twojej przeglądarce: nic nie jest aplikowane, nic nie idzie na serwer, nic się nie wysyła. Kopiujesz wyjście, otwierasz swój terminal, uważnie czytasz, i uruchamiasz sam. Narzędzie tylko buduje reguły, nie wykonuje ich.
Kilka rzeczy, które warto wiedzieć przed startem:
- Domyślna polityka łańcucha to to, co się dzieje, gdy żadna reguła nie pasuje. Ustawienie INPUT na DROP plus kilka konkretnych reguł ACCEPT to klasyczne "domyślnie zablokowane".
- Kolejność reguł w iptables ma znaczenie: są one ewaluowane od góry do dołu, pierwsze dopasowanie wygrywa. Ustaw regułę dla ruchu zwrotnego (ESTABLISHED, RELATED) na samej górze, żeby nie urwać istniejących połączeń.
- nftables jest deklaratywny (cała tabela to jeden dokument), iptables jest imperatywny (każda linia `-A` dokłada jedną regułę).
Jak tego użyć
- Zacznij od presetu, jeśli możesz: "Podstawowy webserwer", "Zablokowane SSH", "Pozwól na LAN, blokuj WAN", "Docker forward chain" albo "Limit prób SSH". Każdy wypełnia rozsądne wartości startowe, które potem dopracujesz.
- Ustaw domyślną politykę dla każdego łańcucha. Bezpieczna postawa to INPUT=DROP, FORWARD=DROP, OUTPUT=ACCEPT. Polityka OUTPUT zwykle to ACCEPT, bo ufasz własnemu serwerowi.
- Dodaj reguły w odpowiedniej kolejności. Pierwsza reguła w INPUT powinna być: protokół=any, stan=ESTABLISHED+RELATED, akcja=ACCEPT. Dzięki temu istniejące połączenia przeżyją przeładowanie zapory.
- Dla każdej reguły wybierz łańcuch, akcję, protokół, opcjonalny adres źródłowy (lub CIDR, np. 192.168.1.0/24), opcjonalny adres docelowy, opcjonalny port źródłowy lub docelowy, oraz stan połączenia, jeśli potrzebujesz dopasowania stanowego.
- Użyj przełącznika conntrack, żeby wybrać między nowoczesnym `-m conntrack --ctstate` i starszym `-m state --state`. Nowoczesne jądra domyślnie używają conntrack, więc zostaw włączone, chyba że Twoja dystrybucja jest bardzo stara.
- Obserwuj podgląd na żywo po prawej. Górny panel to iptables, dolny to nftables. Oba są synchronizowane z tego samego modelu i oba mają przycisk Kopiuj.
- Przetestuj przed utrwaleniem. Skopiuj blok iptables, wklej na serwerze, uruchom. Jeśli się zablokujesz, reguły nie przeżyją restartu (siedzą tylko w pamięci). Po 5 minutach testów utrwal je: `netfilter-persistent save` (Debian/Ubuntu) albo zapisz blok nftables do `/etc/nftables.conf`.
Kiedy to się przydaje
Pięć konkretnych sytuacji, w których budowanie reguł w formularzu jest lepsze niż pisanie ręcznie:
- Stawiasz świeży VPS i potrzebujesz zapory na start. Preset "Podstawowy webserwer" otwiera porty 22 (SSH), 80 (HTTP), 443 (HTTPS) i blokuje resztę. To kanoniczny pierwszy krok po instalacji serwera, a builder pisze go w obu składniach naraz, więc wybierzesz tę, której używa Twoja dystrybucja.
- Migrujesz z iptables do nftables. Wiele dystrybucji (Debian 11+, RHEL 9+) zrobiło z nftables domyślne narzędzie, a stary `iptables` jest tam tylko wraperem. Wklej istniejące reguły iptables do formularza, przełącz podgląd na nftables i masz gotowy do zapisu plik `/etc/nftables.conf`.
- Chcesz zamknąć SSH do jednego IP. Preset "Zablokowane SSH" pokazuje wzorzec: ACCEPT z adresu biura, LOG i DROP wszystko inne. Trzy reguły w odpowiedniej kolejności, ze stanem połączenia w zestawie.
- Zarządzasz hostem Dockera i FORWARD chain jest bałaganem. Docker przepisuje FORWARD przy każdym restarcie, co jest OK, ale i tak musisz wiedzieć, jak wyglądają sensowne reguły. Preset "Docker forward chain" to czysta baza do adaptacji.
- Uczysz kogoś sieci w Linuksie. Widok obok siebie iptables i nftables to najszybszy sposób, żeby pokazać równoważność: ten sam model, dwie składnie. Przełącz stan, obserwuj jak oba panele aktualizują się równocześnie, a relacja między `-m conntrack --ctstate` i `ct state` staje się oczywista.