Samouczek NFTables

Samouczek NFTables

W tym samouczku wyjaśnia, jak pracować z zaporem NFTables Linux. Ta zawartość jest zoptymalizowana zarówno dla doświadczonych użytkowników Linuksa, jak i nowych.

NFTABLES jest składnikiem jądra Linux zapewniającego funkcje zapory. Jest to wymiana iptables.

Po przeczytaniu tego samouczka zrozumiesz zasady NFTABABABS i będziesz mógł stworzyć swoją zaporę. Nie potrzebujesz wcześniejszej wiedzy na temat iptables.

Wszystkie przykłady w tym samouczku zawierają zrzuty ekranu, co ułatwia wszystkim użytkownikom Linuksa, niezależnie od ich poziomu wiedzy, zrozumienie i wdrożenie.

Rozpoczęcie pracy z NFTABLES

Przed rozpoczęciem, utwórz i otwórz plik za pomocą edytora tekstu, takiego jak Nano lub VI, aby rozpocząć pisanie pierwszych reguł NFTables na podstawie poniższego przykładu. Nie kopiuj piastka; Wpisz wszystko.

Nano Firewall.nft

Przykład w tym samouczku jest dość prosty i pokazuje restrykcyjną zaporę ogniową, w której cały ruch IPv4 jest upuszczany.

Na poprzednim zrzucie ekranu użyłem pierwszej linii do zdefiniowania mojej sieci lokalnej (192.168.0.0/16) jako Linuxhintnet.

Zdefiniuj Linuxhintnet = 192.168.0.0/16

W drugiej linii definiuję grupę portów (80 443 i 22). Nazywam tę grupę zasiłku, ponieważ planuję pozwolić na ich ruch. Aldports to arbitralna nazwa.

Zdefiniuj zezwolenie = 80,443,53,22

Następnie dodam tabelę, która jest pojemnikiem lub grupą łańcuchów i zasad; Oba są wyjaśnione poniżej. Tabele pomagają w zorganizowaniu zasad i łańcuchów. Zadzwoniłem do tabeli w przykładzie „restrykcyjnym”, ponieważ zawiera ona restrykcyjną politykę, a jego nazwa jest dowolna.

IP przed nazwą tabeli wskazuje, że reguły tabeli Que będą stosowane tylko do ruchu IPv4. Możesz użyć INET zamiast IP, aby zastosować reguły do ​​protokołów IPv4 i IPv6. Lub możesz wymienić IP na IP6 tylko dla IPv6.

Pamiętaj, że restrykcyjne to nazwa, którą zdefiniowałem dowolnie. Możesz wymienić tabelę tak, jak chcesz.

W moim przypadku stosuję zasady tylko do IPv4, jak pokazano poniżej.

Dodaj tabelę IP restrykcyjne

W przypadku obu protokołów użyj następujących czynności:

Dodaj tabelę INET Restrykcyjnie

Następnie dodajemy pierwszy łańcuch podstawowy, który nazywam przychodzącym, ponieważ jest on związany z przychodzącym ruchem. Możesz jednak nazwać to tak, jak chcesz.

Poniższy łańcuch podstawowy domyślnie zrzuca cały przychodzący ruch:

  • Dodaj łańcuch IP restrykcyjny: niniejsza sekcja dodaje restrykcyjny łańcuch przychodzący do zastosowania do IPv4
  • Typ Filtr: To określa typ łańcucha jako filtr, ponieważ będzie filtruje ruch. Inne możliwe rodzaje łańcuchów to trasa lub NAT
  • Wejście haka: odnosi się do pakietów przychodzących
  • Priorytet 0: Priorytet łańcucha podstawowego definiuje zamówienie łańcuchów podstawowych
  • Upadek zasad: Domyślnie polityka upuszczania odrzuca wszystkie pakiety
Dodaj łańcuch IP Restrictive Incoming Typ Filtr Hook Wejście Priorytet 0; spadek polityki;

Jak widać na poniższym zrzucie ekranu, stworzyłem dwa inne łańcuchy podstawowe podobne do poprzednich, restrykcyjnych przekierowania i restrykcyjnych wychodzących. Różnica polega na zdefiniowanym haczyku dla każdego (hak do przodu i wyjściowe). Wyjaśnienie ich jest powtarzalne.

Po trzech łańcuchach podstawowych możemy kontynuować reguły NFTables, aby umożliwić ruch w pętli.

Dodaję następujące wiersze dla ruchu przychodzącego i wychodzącego na interfejsie Loopback.

Dodaj regułę IP Restrictive Incoming IIFName LO Counter
Dodaj regułę IP Restrictive Incning OifName LO Counter

Teraz dodam cztery reguły akceptujące wychodzący i przychodzący ruch TCP i UDP za pośrednictwem wszystkich portów zawartych w zmiennej $ zezwoleniu na początku pliku.

Dodaj regułę IP restrykcyjne przychodzące TCP Sport $ ALLMPORTS Counter Accept
Dodaj regułę IP restrykcyjne wychodzące TCP DPORT $ ALLEMPORTS Counter
Dodaj regułę IP Restrictive Incoming UDP Sport $ Aldports Counter Zaakceptuj
Dodaj regułę IP restrykcyjne UDP DPORT $ ALLAMPORTS Counter Zaakceptuj

Możesz zobaczyć pełny skrypt poniżej.

Po zakończeniu pisania tabel, łańcuchów i zasad zamknij dokument i zapisz zmiany.

# W pierwszych dwóch wierszach definiuję moją sieć lokalną (Linuxhintnet) i zestaw portów (80,
#443,22), aby umożliwić ruch w poniższych zasadach.
Zdefiniuj Linuxhintnet = 192.168.0.0/16
Zdefiniuj zezwolenie = 80,443,53,22
#Zadeklaruję nowy tabelę, która będzie zawierała łańcuchy i zasady. Nazywam tę tabelę „restrykcyjnym”.
#„IP” stosuje tylko reguły do ​​IPv4. W przypadku IPv6 użyj tylko „IP6” i użyj „INET” dla obu protokołów.
Dodaj tabelę IP restrykcyjne
# Po utworzeniu tabeli tworzę trzy łańcuchy, przychodzące, przekierowujące i wychodzące,
#Ich imiona są arbitralne. Wszystkie z nich domyślnie upuszczają przychodzące, wychodzące i przekazujące ruch.
Dodaj łańcuch IP Restrictive Incoming Typ Filtr Hook Wejście Priorytet 0; spadek polityki;
Dodaj łańcuch IP restrykcyjne przekierowanie Typ Filtr Hook Priorytet do przodu 0; spadek polityki;
Dodaj łańcuch IP restrykcyjne wychodzące Typ Filtr Hook Outoid Oresityt 0; spadek polityki;
# Wdrażam dwie reguły, aby umożliwić ruch w pętli.
Dodaj regułę IP Restrictive Incoming IIFName LO Counter
Dodaj regułę IP Restrictive Incning OifName LO Counter
# Wdrażam reguły, aby umożliwić ruch za pośrednictwem portów zdefiniowanych w zmiennej Loptports.
Dodaj regułę IP restrykcyjne przychodzące TCP Sport $ ALLMPORTS Counter Accept
Dodaj regułę IP restrykcyjne wychodzące TCP DPORT $ ALLEMPORTS Counter
Dodaj regułę IP Restrictive Incoming UDP Sport $ Aldports Counter Zaakceptuj
Dodaj regułę IP restrykcyjne UDP DPORT $ ALLAMPORTS Counter Zaakceptuj

Aby aktywować zaporę ogniową, uruchom następujące polecenie:

sudo nft -f zapora.nft

Możesz sprawdzić swoje reguły, uruchamiając następujące polecenie:

Sudo NFT Listset

To podstawowa restrykcyjna zapora ogniowa.

Wniosek:

Jak widać, NFTables jest znacznie bardziej przyjazny niż IPTABLES, a użytkownicy mogą nauczyć. Ponieważ iptables jest przerywalny, a wiele dystrybucji wykorzystuje NFTables jako domyślną zaporę, w tym Debian. IPTABLES Doświadczeni użytkownicy mogą chcieć spojrzeć na narzędzie iptables-nftables-compat, które tłumaczy iptables na NFTables. To może pomóc im zrozumieć różnice.

Profesjonalni użytkownicy, tacy jak administratorzy systemu, zwykle pracują z IPTables; Unikaj ignorowania NFTABLES, aby zaoszczędzić czas, jednocześnie poprawiając filtrowanie. Mam nadzieję, że ten artykuł był wystarczająco prosty, aby przekonać cię do wypróbowania nftables.