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 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.