()

Wstęp

Nftables pojawił się w wersji 3.13 linuksowego kernela, która została wydana w styczniu 2014. Podobnie jak UFW i firewalld, nftables służy do konfigurowania zapory ogniowej. Jest to najtrudniejszy w konfiguracji firewall ze wszystkich uprzednio wymienionych, dlatego korzystanie z niego zalecane jest dla osób, które mają doświadczenie z Linuksem (i anielską cierpliwość).

Źródło: https://pixabay.com/pl/photos/open-fire-fire-embers-flame-hot-4129625/

Instalacja

Nftables powinien być domyślnie zainstalowany w większości dystrybucji Linuksa. Jeśli jednak nie jest zainstalowany, można użyć polecenia:

sudo apt install nftables

Nftables zarządza się poprzez polecenie nft. Aby wyświetlić instrukcję związaną z tym poleceniem, należy wpisać man nft w konsoli. Warto podkreślić, że dostarczona instrukcja jest dość obszerna – ma prawie 4000 linijek.

Dlaczego warto wybrać nftables?

Nftables opiera się przede wszystkim na plikach konfiguracyjnych (*.conf), które można tworzyć poprzez polecenia z wykorzystaniem nft. Można definiować wiele reguł opisanych w tabelach, które są oparte na protokołach.

Możliwe rodziny (opcje związane z protokołami) prezentują się następująco:

  • ip – przeznaczona dla IP wersji 4,
  • ipv6 – przeznaczona dla IP wersji 6,
  • inet – przeznaczona dla IP wersji 4 i 6,
  • arp – przeznaczona dla ARP,
  • bridge – przeznaczona dla połączeń wykorzystujących mostek.

Nftables ma również trzy typy łańcucha. Są nimi:

  • filter – łańcuch przeznaczony do filtrowania pakietów,
  • nat – łańcuch przeznaczony do NAT, czyli translacji adresów,
  • route – łańcuch przeznaczony do wyznaczania drogi pakietów.

Możemy również określać zakres pakietów, których dotyczą reguły w następujący sposób:

  • prerouting – pakiety, które trafiły do urządzenia i nie zostały przetworzone przez nftables,
  • input – pakiety, które trafiły do urządzenia i zostały przetworzone przez nftables,
  • forward – pakiety, które mają zostać przekazane do innego urządzenia,
  • output – pakiety wychodzące,
  • postrouting – pakiety wychodzące, które zostały przetworzone przez nftables.

Pokrewieństwo i różnice z iptables – składnia

Nftables ma inną składnię od iptables, lecz polecenia mogą być dość prosto tłumaczone z iptables do nftables. Jeśli chcemy użyć polecenia z iptables w nftables, możemy użyć polecenia iptables-nft. Dla przykładu – chcemy zablokować ruch na porcie 80 dla pakietów, które przychodzą z adresu 192.168.25.150.

Polecenie w iptables będzie wyglądało następująco:

sudo iptables -A INPUT -p tcp –source 192.168.25.150 –dport 80 -j DROP

Aby dodać je do nftables, należy użyć polecenia:

sudo iptables-nft -A INPUT -p tcp –source 192.168.25.150 –dport 80 -j DROP

Przykłady konfiguracji nftables w praktyce

Gentoo Linux Wiki zawiera kilka praktycznych przykładów konfiguracji nftables. Są one dostępne tutaj i polecam się z nimi zapoznać J.

Oto przykład podstawowej konfiguracji firewalla dla stacji roboczej. Konfiguracja składa się z kilku prostych założeń:

  1. Pakiety wysyłane przez maszynę hostującą firewall są dozwolone.
  2. Pakiety przychodzące z sieci LAN są dozwolone.
  3. Pakiety przychodzące z sieci WAN są odrzucane, chyba że urządzenie z sieci LAN zainicjowało połączenie.
  4. Pakiety wychodzące z sieci LAN są dozwolone.

Konfiguracja wygląda następująco:

#!/sbin/nft -f

flush ruleset

table ip filter {

               # allow all packets sent by the firewall machine itself

               chain output {

                              type filter hook output priority 100; policy accept;

               }

               # allow LAN to firewall, disallow WAN to firewall

               chain input {

                              type filter hook input priority 0; policy accept;

                              iifname „lan0” accept

                              iifname „wan0” drop

               }

               # allow packets from LAN to WAN, and WAN to LAN if LAN initiated the connection

               chain forward {

                              type filter hook forward priority 0; policy drop;

                              iifname „lan0” oifname „wan0” accept

                              iifname „wan0” oifname „lan0” ct state related,established accept

               }

}

Konfiguracja powinna zostać zapisana do pliku. Aby zapora działała prawidłowo, należy umożliwić przekierowywanie pakietów z WAN i LAN następującym poleceniem:

sysctl -w net.ipv4.ip_forward = 1

Aby zaczytać konfigurację z pliku, należy użyć polecenia:

sudo nft –file [nazwa pliku]

Przydatne polecenia – „ściągawka”

ArchLinux Wiki posiada dość prosty i czytelny poradnik związany z poleceniami nftables, który dostępny jest tutaj.

Do najważniejszych należy wyróżnić:

PolecenieEfekt
nft list rulesetWyświetla obecny zestaw reguł
nft flush rulesetUsunięcie reguł, może pozostawić urządzenie bez działającego firewalla
nft list tablesWyświetla obecnie zdefiniowane tabele w systemie
nft add table [nazwa rodziny] [nazwa tabeli]  Tworzy tabelę dla danej rodziny (opcji – ip, arp itd.) o danej nazwie

Podsumowanie

Nftables to dość skomplikowane narzędzie i nie lada sztuką jest opisać jego funkcjonalności w krótkim artykule. Dlatego zachęcam do testowania różnych konfiguracji nftables w kontrolowanym środowisku, aby jak najlepiej zapoznać się z narzędziem. Fakt, że dość łatwo można przetłumaczyć reguły z iptables może pomóc wielu osobom w „przesiadce” na nftables.

Pisał dla Was Oskar Klimczuk.

Jak przydatny był ten Artykuł

Kliknij gwiazdke by zagłosować

Średni / 5. Liczba głosów

Doceń naszą prace

Przepraszam że ten post nie był dla Ciebie przydatny

Popraw ten post!

Napisz mi co mogę poprawić