Ubuntu iptables Jak kontrolować ruch sieciowy za pomocą iptables?

Ubuntu iptables Jak kontrolować ruch sieciowy za pomocą iptables?
"… A Narzędzie UNIX-Space, które daje administratorom systemu możliwość konfigurowania reguł filtrowania pakietów IP zaimplementowanych przez moduł filtra netto jądra." IPTABLES działa jak zapora za pomocą reguł filtrowania pakietów w oparciu o różne kryteria, takie jak adres IP, port i protokoły.

W tym przewodniku omówi się, jak skonfigurować i korzystać z reguł IPTABLES w systemie Ubuntu, aby zabezpieczyć swoją sieć. Niezależnie od tego, czy jesteś nowicjuszem Linux, czy doświadczonym administratorem systemu, z tego przewodnika, a w taki czy inny sposób nauczysz się czegoś przydatnego.

IPTABLES jest wstępnie zainstalowany na Ubuntu i większości dystrybucji opartych na Debiana. Ubuntu pakuje również ogonę gufw, graficzną alternatywę, której możesz użyć do pracy z iptables.

NOTATKA: Aby korzystać i skonfigurować iptables, będziesz potrzebować uprawnień Sudo w swoim systemie. Możesz dowiedzieć się więcej o Sudo z następującego samouczka.

Teraz, gdy wiesz, co to jest iptables, zanurzmy się!

Jak korzystać z IPTables do zarządzania ruchem IPv4?

Aby korzystać z IPTABLE do zarządzania siecią IPv4 i ruchu, musisz zrozumieć następujące czynności:

Polecenie iptables

IPTABLES oferuje wybór opcji, które pozwalają dostosowywać i dostroić reguły IPTABLES. Omówmy niektóre z tych parametrów i zobaczmy, co robią.

NOTATKA: Możesz skonfigurować zestaw reguł zarządzających określonym podzbiorem, znanym jako łańcuchy iptables.

Parametry iptables

Zanim zaczniemy tworzyć i konfigurować reguły IPTABLE, najpierw zrozummy podstawy iPtables, takie jak ogólna składnia i domyślne argumenty.

Rozważ polecenie poniżej:

sudo iptables -i wejście -s 192.168.0.24 -J Drop

Powyższe polecenie mówi IPTABLES, aby utworzyli regułę w łańcuchu. Zasada zrzuca wszystkie pakiety z adresu IP 192.168.0.24.

Sprawdźmy polecenie, wiersz po wierszu, aby lepiej to zrozumieć.

  • Pierwsze polecenie iptables wywołuje narzędzie wiersza poleceń IPTABLES.
  • Dalej jest -i argument używany do wstawienia. Argument insercji dodaje regułę na początku łańcucha IPTABLES, a zatem otrzymuje wyższy priorytet. Aby dodać regułę przy określonej liczbie w łańcuchu, użyj argumentu -i, a następnie liczby, w której reguła powinna zostać przypisana.
  • Argument -S pomaga określić źródło. Dlatego używamy argumentu -S, a następnie adresu IP.
  • Parametr -J z iptables określa skok do określonego celu. Ta opcja ustawia działanie, które iptables będzie wykonywać, gdy będzie pasujący pakiet. IPTABLES oferuje domyślnie cztery główne cele, obejmują one: Akceptuj, upuszczenie, dziennik i odrzucenie.

IPTABLES oferuje wybór parametrów, których można użyć do skonfigurowania różnych reguł. Różne parametry, których możesz użyć do konfigurowania reguł IPTABLES obejmują:

Parametr reguły IPTABLES Opis
-S -Source Podaj źródło, które może być adresem, nazwą hosta lub nazwą sieci.
-p -prrotocol Określa protokół połączenia; Na przykład TCP, UDP itp.
-D -repinowanie Określa miejsce docelowe, który może być adresem, nazwą sieci lub nazwą hosta.
-J -Jump Ustawia akcję iptables przeprowadzi się po znalezieniu pakietu.
-O -ut -interface Ustawia interfejs, przez który iptable wysyła pakiet.
-I -in -interface Ustawia interfejs używany do ustanowienia pakietów sieciowych.
-C -kadry Pozwala administratorowi ustawić bajt i liczniki pakietów dla określonej reguły.
-g -goto łańcuch Parametr określa, że ​​przetwarzanie powinno być kontynuowane w łańcuchu zestawu użytkownika po powrocie.
-F -fragment Mówi iPtables zastosować regułę tylko do drugiego i następujących fragmentów fragmentarycznych pakietów.

Opcje iptables

Polecenie IPTABLES obsługuje szeroki zakres opcji. Niektóre typowe obejmują:

Opcja Opis
-A -pend Dodaje regułę do końca określonego łańcucha
-D -Delete Usuwa regułę z określonego łańcucha
-F -FLUSH Usuwa wszystkie zasady, pojedynczo
-L -list Pokazuje wszystkie zasady w określonym łańcuchu
-I -insert Wkłada regułę do określonego łańcucha (przekazywany jako liczba, gdy nie ma określonej liczby; reguła jest dodawana u góry)
-C -sprawdź Zapytania o dopasowanie reguły; Wymaganie w określonej regule
-v -czasownik Wyświetla więcej szczegółów, gdy jest używany z parametrem -l
-N -New -Chain Dodaje nowy łańcuch zdefiniowany przez użytkownika
-X -Delete -Chain Usuwa określony łańcuch zdefiniowany przez użytkownika

Tabele iptables

Jądro Linux ma domyślne tabele, w których znajdują się zestaw powiązanych zasad. Te domyślne tabele mają zestaw domyślnych łańcuchów, ale użytkownicy mogą dostosowywać reguły, dodając reguły zdefiniowane przez użytkownika.

NOTATKA: Domyślne tabele będą w dużej mierze zależeć od konfiguracji jądra i zainstalowanych modułów.

Oto domyślne tabele iptables:

1: Tabele filtra

Tabela filtru to domyślna tabela, która zawiera łańcuchy używane do filtrowania pakietów sieciowych. Niektóre domyślne łańcuchy w tym tabeli obejmują:

Łańcuch Opis
Wejście IPTABLES używają tego łańcucha do dowolnych przychodzących pakietów do systemu, i.mi., pakiety idące do lokalnych gniazd sieciowych.
Wyjście IPTABLES Użyj łańcucha wyjściowego dla lokalnie generowanych pakietów, i.mi., pakiety wychodzące z systemu.
Do przodu Ten łańcuch jest tym, czego używa IPTABLES dla opakowań kierowanych lub przekazywanych za pośrednictwem systemu.

2: Tabele NAT

Tabela adresów NAT lub sieci jest urządzeniem routingowym używanym do modyfikacji źródła i docelowych adresów IP w pakiecie sieciowym. Głównym zastosowaniem tabeli NAT jest połączenie dwóch sieci w prywatnym zakresie adresów z siecią publiczną.

Nat został opracowany w celu obsługi masku prawdziwych adresów IP, umożliwiając prywatne zakresy adresów IP od dotarcia do sieci zewnętrznej. Pomaga to chronić szczegóły dotyczące sieci wewnętrznych przed ujawnieniem się w sieciach publicznych.

Tabela NAT jest zatrudniona, gdy pakiet inicjuje nowe połączenie.

Iptables mają domyślną tabelę dla adresowania NAT. Ten stół ma trzy główne łańcuchy:

Łańcuch Opis
Prerouting Umożliwia modyfikację informacji o pakiecie przed przybyciem do łańcucha wejściowego używanego do pakietów przychodzących
WYJŚCIE Zarezerwowane dla pakietów utworzonych lokalnie, i.mi., Przed rozpoczęciem routingu sieciowego
Postrouting Umożliwia modyfikację pakietów wychodzących- pakiety opuszczające łańcuch wyjściowy

Poniższy schemat pokazuje przegląd tego procesu na wysokim poziomie.

Użyj poniższego polecenia, aby wyświetlić tabele routingu NAT.

iptables -t nat -n -v -l

3: Tabele Mangle

Tabela Mangle jest używana głównie do specjalnej modyfikacji pakietów. Mówiąc prosto, służy do modyfikacji nagłówków IP pakietu sieciowego. Modyfikacja pakietów może obejmować zmianę wartości pakietu TTL, zmianę prawidłowych chmielów sieciowych dla pakietu itp.

Tabela zawiera następujące domyślne łańcuchy:

Łańcuch Opis
Prerouting Zarezerwowane dla przychodzących pakietów
Postrouting Używane do pakietów wychodzących
WEJŚCIE Używane do pakietów wchodzących bezpośrednio na serwer
WYJŚCIE Używane do lokalnych pakietów
Do przodu Zarezerwowane dla pakietów kierowanych przez system

4: Surowe tabele

Głównym celem surowej tabeli jest skonfigurowanie wyjątków dla pakietów, które nie mają być obsługiwane przez system śledzenia. Surowy stół ustawia znak notrack na pakietach, co skłania funkcję containta, aby zignorować pakiet.

Conntrack to funkcja sieci Linux, która umożliwia jądrze Linux śledzenie wszystkich połączeń sieci.

Surowy stół ma dwa główne łańcuchy:

Łańcuch Opis
Prerouting Zarezerwowane dla pakietów otrzymywanych przez interfejsy sieciowe
WYJŚCIE Zarezerwowane dla pakietów zainicjowanych przez lokalne procesy

5: Tabela bezpieczeństwa

Podstawowym zastosowaniem tej tabeli jest ustawianie wewnętrznego wzmocnienia bezpieczeństwa dla mechanizmu bezpieczeństwa Linux (SELINUX), który oznacza pakiety. Znak bezpieczeństwa może zostać zastosowany na połączenie lub pakiet.

Służy do obowiązkowych reguł kontroli dostępu i jest drugą tabelą dostępną po tabeli filtra. Oferuje następujące domyślne łańcuchy:

Łańcuch Opis
WEJŚCIE Zarezerwowane dla przychodzących pakietów do systemu
WYJŚCIE Używane do lokalnie utworzonych pakietów
DO PRZODU Używane do pakietów kierowanych przez system

Po obejrzeniu domyślnych iptables, przejdźmy o krok dalej i omówmy, jak pracować z zasadami IPTABLES.

Jak pracować z zasadami IPTABLES?

Reguły IPTABLES są stosowane w kolejności rosnącej. Oznacza to, że pierwsza reguła w określonym zestawie jest najpierw stosowana, a następnie druga, potem trzecia i tak dalej, aż do ostatniego.

Z powodu tej funkcji IPTables uniemożliwia dodanie reguł w zestawie za pomocą parametru -a; Musisz użyć -i, a następnie numeru lub opróżnianie go, aby dodać na górze listy.

Wyświetlanie iptables

Aby wyświetlić swoje iptables, użyj polecenia iptables -l -v dla IPv4 i IP6Tables -L -V dla IPv6.

Wstawienie zasad

Aby wstawić reguły do ​​zestawu, musisz umieścić je w dokładnej kolejności, szanując reguły używane przez ten sam łańcuch. Możesz wyświetlić listę swoich reguł IPTABLES za pomocą polecenia, jak omówiono powyżej:

sudo iptables -l -v

Na przykład, aby wstawić regułę, umożliwiając połączenia przychodzące do portu 9001 w TCP, musimy określić numer reguły do ​​łańcucha wejściowego przylegającego do reguł ruchu dla Internetu.

sudo iptables -i wejście 1 -p tcp - -dport 9001 -m Stan --state New -j Zaakceptuj

Po obejrzeniu bieżących iPtables powinieneś zobaczyć nową zasadę w zestawie.

sudo iptables -l -v

Zastępowanie zasad

Funkcjonalność zastąpienia działa podobnie do wstawki, jednak używa polecenia iptables -r. Na przykład, aby zmodyfikować powyższą regułę i ustawić port 9001, aby zaprzeczyć, my:

sudo iptables -r wejście 1 -p tcp - -dport 9001 -m stan --state new -j odrzucić

Usuwanie zasady

Aby usunąć zasadę, przekazujemy numer reguły. Na przykład, aby usunąć powyższą regułę, możemy określić jako:

sudo iptables -d wejście 1

W większości dystrybucji Linux iptables są puste dla IPv4 i IPv6. Dlatego jeśli nie dodałeś żadnej nowej reguły, otrzymasz wyjście podobne do tej pokazanej poniżej. Jest to ryzykowne, ponieważ oznacza to, że system umożliwia wszelkie przychodzące, wychodzące i kierowane ruch.

Wsuńmy się w konfigurację iptables:

Jak skonfigurować iptables?

Istnieje wiele sposobów skonfigurowania reguł IPTABLES. W tej sekcji wykorzystuje przykłady, aby pokazać, jak ustawić reguły za pomocą adresów IP i portów.

Blokowanie i umożliwienie ruchu przez porty

Możesz użyć określonego portu do blokowania lub umożliwienia całego ruchu w interfejsie sieciowym. Rozważ następujące przykłady:

sudo iptables -a wejście -j akceptuj -p tcp - -destination -port 1001 -i WLAN0

Powyższe polecenia umożliwiają ruch w porcie 1001 TCP na interfejsie WLAN0.

sudo iptables -a wejście -j upuść -p tcp - -destination -port 1001 -i WLAN0

To polecenie wykonuje przeciwieństwo powyższego polecenia, ponieważ blokuje cały ruch w porcie 1001 na WLAN0.

Oto ścisła kontrola polecenia:

  • Pierwszy argument (-a) dodaje nową zasadę na końcu łańcucha tabeli.
  • Argument wejściowy dodaje określoną regułę do tabeli.
  • Drop Argument określa akcję, która ma być wykonana odpowiednio jako akceptacja i upuszczenie. Oznacza to, że gdy pakiet zostanie dopasowany, zostanie upuszczony.
  • -P Określa protokół, taki jak TCP i pozwala na przejście ruchu w innych protokołach.
  • -Port docelowy ustawia regułę, aby zaakceptować lub upuścić cały ruch przeznaczony dla portu 1001.
  • -Mówię iptables, aby zastosowała regułę do ruchu na interfejsie WLAN0.

NOTATKA: Iptables nie rozumie aliasów interfejsu sieciowego. Zatem w systemie z więcej niż jednym wirtualnym interfejsem, musisz zdefiniować adres docelowy ręcznie i jawnie.

Na przykład:

sudo iptables -a wejście -j upuść -p tcp - -destination -port 1001 -i WLAN0 -D 192.168.0.24

Adresy IP na biało -liście i czarną listę

Możesz tworzyć reguły zapory za pomocą iptables. Jednym z przykładów jest zatrzymanie całego ruchu i umożliwienie ruchu sieciowego tylko z jawnych adresów IP.

Przykład:

iptables -a wejście -m stan ustanowiony, powiązane -j zaakceptuj
iptables -a wejście -i lo -m komentarz -commenta
iptables -a wejście -p icmp -m komentarz -commenta

ZAAKCEPTOWAĆ

iptables -a wejście -s 192.168.0.1/24 -J Zaakceptuj
iptables -a wejście -s 192.168.0.0 -J Zaakceptuj
IPTABLES -p Drop wejściowy
IPTABLES -p do przodu

Pierwszy wiersz ustawia regułę, aby umożliwić wszystkie źródło adresów IP w 192.168.0.1/24 Podsieć. Możesz także użyć CIDR lub poszczególnych adresów IP. W poniższym poleceniu ustawiamy regułę, aby umożliwić cały ruch podłączony do istniejących połączeń. W końcowych poleceniach ustawiamy zasady dotyczące danych wejściowych i do przodu, aby upuścić wszystkie.

Korzystanie z IPTables na IPv6

Polecenie iptables działa tylko na IPv4. Aby użyć iPtables na IPv6, musisz użyć polecenia IP6Tables. IP6Tables wykorzystuje tabele surowe, filtra, bezpieczeństwa i mangle. Ogólna składnia dla IP6Tables jest podobna do IPTABLES, a także obsługuje dopasowanie opcji IPTables, takich jak Dodatek, Usuń itp.

Rozważ użycie stron ręcznych IP6Tables, aby uzyskać więcej informacji.

Przykład iPtables Rulestets dla bezpieczeństwa sieci

Tworzenie odpowiednich reguł zapory będzie zależeć głównie od usługi działającej w systemie i używanych portach. Oto jednak niektóre podstawowe reguły konfiguracji sieci, których można użyć do zabezpieczenia systemu:

1: Zezwalaj na ruch interfejsu pętli i odrzuć całą pętlę pochodzącą z innych interfejsów

iptables -a wejście -i lo -J akceptuj (możesz również używać IP6Tables)
IPTABLES -A Wejście ! -I lo -s 127.0.0.0 -J Odrzuc (IP6Tables również)

2: Odmowa wszystkich żądań ping

iptables -a wejście -p icmp -m stan --state nowy --cmp -type 8 -J Odrzuć

3: Zezwalaj na połączenia SSH

iptables -a wejście -p tcp - -dport 22 -m stan --state new -j Zaakceptuj

Są to przykładowe polecenia, których możesz użyć do zabezpieczenia systemu. Jednak konfiguracja będzie w dużej mierze zależeć od tego, co lub kogo chcesz uzyskać dostęp do różnych usług.

OSTROŻNOŚĆ: Jeśli wolisz całkowicie wyłączyć IPv6, upewnij się, że pocukaj linię, ponieważ spowolni to proces aktualizacji:

Pierwszeństwo :: ffff: 0: 0/96 100 znaleziony w/etc/gai.conf .

To dlatego, że menedżer pakietów Apt rozwiązuje domenę lustrzaną w IPv6 z powodu aktualizacji apt-get.

Jak wdrożyć zasady IPTABLES?

Aby wdrożyć swoje iPtable w Ubuntu lub innych systemach opartych na debiana, zacznij od utworzenia dwóch plików, IP4 i IP6, dla ich odpowiednich adresów IP.

W obu plikach dodaj reguły, które chcesz egzekwować w odpowiednich regułach plików-IPV4 do pliku IP4 i regułach IPv6 do pliku IP6.

Następnie musimy zaimportować reguły za pomocą polecenia:

Sudo iptables-Restore < /tmp/ip4 (replace filename for IPv6)

Następnie możesz sprawdzić, czy reguły zastosowano za pomocą polecenia:

sudo iptables -l -v

Szybki przewodnik iptables-persistent

Ubuntu i wspólne dystrybucje oparte na debian są wyposażone w pakiet iptables-persistent, który pozwala łatwo stosować reguły zapory po ponownym uruchomieniu. Pakiet zawiera pliki, których można użyć do ustawiania reguł dla IPv4 lub IPv6 i może być stosowany automatycznie po rozruchu.

Możesz także użyć reguł zapory za pomocą UFW lub GUFW. Rozważ następujący samouczek, aby dowiedzieć się, jak korzystać z UFW.

Jak zainstalować iptables-persistent?

Upewnij się, że masz zainstalowany w systemie IPTables-Persistent. Użyj DPKG, aby sprawdzić, czy masz zainstalowany pakiet.

Jeśli nie, użyj następującego polecenia:

sudo apt-get instaluj iptables-persistent

Zostaniesz dwukrotnie poproszony o zapisywanie zarówno aktualnych zasad IPv4, jak i IPv6. Kliknij Tak, aby zapisać obie reguły.

Kliknij Tak, aby zapisać IPv6.

Po zakończeniu instalacji sprawdź, czy masz podlokdrendory IPTABLES, jak pokazano na poniższym obrazku.

Teraz możesz użyć zasad.v4 i zasady.v6, aby dodać reguły IPTABLES, a one zostaną zastosowane automatycznie przez IPTABLES-PERSISTENT. Pliki to proste pliki tekstowe, które można łatwo edytować za pomocą dowolnego wybranego edytora tekstu.

Wniosek

W tym samouczku omówiliśmy podstawy iptables. Zaczynając od pracy z iptables, podstawowymi poleceniami, domyślnymi tabelami iPtables i parametrów.

Z tego, czego się nauczyłeś, powinieneś być w stanie używać iptables do tworzenia reguł zapory, które pomagają zabezpieczyć Twój system.