iptables

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

Ubuntu Iptables Jak kontrolować ruch sieciowy za pomocą iptables?
„…A narzędzie Unix w przestrzeni użytkownika, które daje administratorom systemu możliwość konfigurowania reguł filtrowania pakietów IP zaimplementowanych przez moduł filtrowania sieci jądra.” Iptables działają jak zapora sieciowa, korzystając z reguł filtrowania pakietów opartych na różnych kryteriach, takich jak adres IP, port i protokoły.

W tym przewodniku omówiono, jak skonfigurować i używać reguł iptables w systemie Ubuntu w celu zabezpieczenia sieci. Niezależnie od tego, czy jesteś początkującym użytkownikiem Linuksa, czy doświadczonym administratorem systemu, z tego przewodnika i w taki czy inny sposób dowiesz się czegoś przydatnego o iptables.

Iptables są preinstalowane na Ubuntu i większości dystrybucji opartych na Debianie. Ubuntu zawiera również zaporę GUFW, graficzną alternatywę, której możesz użyć do pracy z iptables.

UWAGA: Aby używać i konfigurować iptables, potrzebujesz uprawnień sudo w swoim systemie. Możesz dowiedzieć się więcej o sudo z następującego samouczka.

Teraz, gdy wiesz, czym jest Iptables, zanurkujmy od razu!

Jak używać iptables do zarządzania ruchem IPv4??

Aby używać Iptables do zarządzania siecią IPv4 i ruchem, musisz zrozumieć następujące kwestie:

Dowództwo Iptables

Iptables oferuje wybór opcji, które pozwalają dostosować i dostroić zasady iptables. Omówmy niektóre z tych parametrów i zobaczmy, co robią.

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

Parametry Iptables

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

Rozważ poniższe polecenie:

sudo iptables -I INPUT -s 192.168.0.24 -j UPUŚĆ

Powyższe polecenie mówi iptables, aby utworzyć regułę w łańcuchu. Reguła odrzuca wszystkie pakiety z adresu IP 192.168.0.24.

Przeanalizujmy polecenie, wiersz po wierszu, aby lepiej je zrozumieć.

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

Parametr reguły Iptables Opis
-s -źródło Określ źródło, które może być adresem, nazwą hosta lub nazwą sieci.
-p -protokół Określa protokół połączenia; na przykład TCP, UDP itp.
-d -przeznaczenie Określa miejsce docelowe, którym może być adres, nazwa sieci lub nazwa hosta.
-j -skok Ustawia akcję, którą iptables wykona po znalezieniu pakietu.
-o -interfejs zewnętrzny Ustawia interfejs, przez który iptable wysyła pakiet.
-ja -w interfejsie Ustawia interfejs używany do ustanawiania pakietów sieciowych.
-c -liczniki-zestawów Umożliwia administratorowi ustawienie liczników bajtów i 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, aby zastosował regułę tylko do drugiego i kolejnych fragmentów pofragmentowanych pakietów.

Opcje Iptables

Polecenie iptables obsługuje szeroką gamę opcji. Niektóre z typowych to:

Opcja Opis
-A -dołącz Dodaje regułę na końcu określonego łańcucha
-D - usuń Usuwa regułę z określonego łańcucha
-F – spłukać Usuwa wszystkie reguły pojedynczo
-L – lista Pokazuje wszystkie reguły w określonym łańcuchu
-Wstawiam Wstawia regułę do określonego łańcucha (przekazywaną jako liczba, gdy nie ma określonej liczby; reguła jest dodawana na górze)
-C -sprawdź Zapytania o dopasowanie reguł; wymóg w określonej regule
-v - gadatliwy Wyświetla więcej szczegółów, gdy jest używany z parametrem -L
-N -nowy-łańcuch Dodaje nowy łańcuch zdefiniowany przez użytkownika
-X -usuń łańcuch Usuwa określony łańcuch zdefiniowany przez użytkownika

Stoły Iptable

Jądro Linuksa ma domyślne tabele zawierające zestaw powiązanych reguł related. Te domyślne tabele mają zestaw domyślnych łańcuchów, ale użytkownicy mogą dostosować reguły, dodając reguły zdefiniowane przez użytkownika.

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

Oto domyślne tabele iptables:

1: Tabele filtrów

Tabela filtrów jest domyślną tabelą zawierającą łańcuchy używane do filtrowania pakietów sieciowych. Niektóre z domyślnych łańcuchów w tej tabeli obejmują:

Łańcuch Opis
Wejście Iptables używają tego łańcucha dla wszelkich pakietów przychodzących do systemu, i.mi., pakiety trafiają do gniazd w sieci lokalnej.
Wynik Iptables używają łańcucha wyjściowego dla pakietów generowanych lokalnie, i.mi., pakiety wychodzą z systemu.
Naprzód Ten łańcuch jest używany przez Iptables do pakietów kierowanych lub przekazywanych przez system.

2: Tabele NAT

NAT lub tablica adresów sieciowych to urządzenie routingu używane do modyfikowania źródłowego i docelowego adresu IP w pakiecie sieciowym. Głównym zastosowaniem tablicy NAT jest łączenie dwóch sieci w prywatnym zakresie adresów z siecią publiczną.

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

Tabela NAT jest używana, gdy pakiet inicjuje nowe połączenie.

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

Łańcuch Opis
PRZERUTOWANIE Umożliwia modyfikację informacji o pakiecie przed dotarciem do łańcucha INPUT używanego dla pakietów przychodzących
WYNIK Zarezerwowane dla pakietów tworzonych lokalnie, i.mi., zanim nastąpi routing sieci
POSTROUTING Umożliwia modyfikację pakietów wychodzących — pakiety opuszczające łańcuch OUTPUT

Poniższy schemat przedstawia ogólny przegląd tego procesu.

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

iptables -t nat -n -v -L

3: Stoły Mangle

Stół maglarski służy głównie do specjalnej modyfikacji pakietów packet. Mówiąc prościej, służy do modyfikowania nagłówków IP pakietu sieciowego. Modyfikacja pakietów może obejmować zmianę wartości TTL pakietu, zmianę prawidłowych przeskoków sieciowych dla pakietu itp.

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

Łańcuch Opis
PRZERUTOWANIE Zarezerwowane dla pakietów przychodzących
POSTROUTING Używany do pakietów wychodzących
WEJŚCIE Używany do pakietów przychodzących bezpośrednio do serwera
WYNIK Używany do lokalnych pakietów
Naprzód Zarezerwowane dla pakietów kierowanych przez system

4: Surowe Stoły

Głównym celem surowej tabeli jest konfiguracja wyjątków dla pakietów, które nie są przeznaczone do obsługi przez system śledzenia. Surowa tabela ustawia znak NOTRACK na pakietach, co powoduje, że funkcja conntrack zignoruje pakiet.

Conntrack to funkcja sieciowa jądra Linuksa, która umożliwia jądru Linuksa śledzenie wszystkich połączeń sieciowych, umożliwiając jądru identyfikację pakietów tworzących przepływ sieciowy.

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

Łańcuch Opis
PRZERUTOWANIE Zarezerwowane dla pakietów odbieranych przez interfejsy sieciowe
WYNIK Zarezerwowane dla pakietów inicjowanych przez procesy lokalne

5: Tabela bezpieczeństwa

Podstawowym zastosowaniem tej tabeli jest ustawienie wewnętrznego mechanizmu bezpieczeństwa Security Enhancement for Linux (SELinux), który oznacza pakiety. Znak bezpieczeństwa można zastosować na połączenie lub pakiet.

Jest używany w regułach obowiązkowej kontroli dostępu i jest drugą tabelą dostępną po tabeli filtrów. Oferuje następujące domyślne łańcuchy:

Łańcuch Opis
WEJŚCIE Zarezerwowane dla pakietów przychodzących do systemu
WYNIK Używany do lokalnie tworzonych pakietów
NAPRZÓD Używany do pakietów kierowanych przez system

Po przyjrzeniu się domyślnym Iptables, pójdźmy o krok dalej i omówmy, jak pracować z regułami iptables.

Jak pracować z regułami iptables?

Reguły Iptables są stosowane w kolejności rosnącej. Oznacza to, że pierwsza reguła z określonego zestawu jest stosowana jako pierwsza, następnie druga, potem trzecia i tak dalej, aż do ostatniej.

Dzięki tej funkcji iptables uniemożliwia dodawanie reguł w zestawie za pomocą parametru -A; musisz użyć -I, a następnie liczby lub opróżnić ją, aby dodać na początek listy.

Wyświetlanie Iptables

Aby wyświetlić iptables, użyj polecenia iptables -L -v dla IPv4 i ip6tables -L -v dla IPv6.

Wstawianie reguł

Aby wstawić reguły do ​​zestawu, musisz umieścić je w dokładnej kolejności, przestrzegając reguł używanych 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łę zezwalającą na połączenia przychodzące do portu 9001 przez TCP, musimy podać numer reguły do ​​łańcucha INPUT zgodnego z regułami ruchu dla sieci.

sudo iptables -I INPUT 1 -p TCP --dport 9001 -m stan --stan NOWY -j AKCEPTUJ

Po wyświetleniu aktualnych iptables powinieneś zobaczyć nową regułę w zestawie.

sudo iptables -L -v

Zastępowanie reguł

Funkcjonalność zamień działa podobnie do wstawiania, jednak używa polecenia iptables -R. Na przykład, aby zmodyfikować powyższą regułę i ustawić port 9001 na odmowę, wykonujemy:

sudo iptables -R INPUT 1 -p TCP --dport 9001 -m stan --stan NOWY -j ODRZUCENIE

Usuwanie reguły

Aby usunąć regułę, podajemy 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 Linuksa iptables są puste dla IPv4 i IPv6. Dlatego, jeśli nie dodałeś żadnej nowej reguły, otrzymasz wynik podobny do pokazanego poniżej. Jest to ryzykowne, ponieważ oznacza, że ​​system przepuszcza cały ruch przychodzący, wychodzący i kierowany.

Przyjrzyjmy się, jak skonfigurować iptables:

Jak skonfigurować iptables?

Istnieje wiele sposobów konfiguracji reguł iptables. W tej sekcji wykorzystano przykłady, aby pokazać, jak ustawić reguły przy użyciu adresów IP i portów.

Blokowanie i zezwalanie na ruch przez porty

Możesz użyć określonego portu, aby zablokować lub zezwolić na cały ruch w interfejsie sieciowym. Rozważ następujące przykłady:

sudo iptables -A INPUT -j ACCEPT -p TCP --destination-port 1001 -i wlan0

Powyższe polecenia zezwalają na ruch na porcie 1001 TCP na interfejsie wlan0.

sudo iptables -A INPUT -j DROP -p TCP --destination-port 1001 -i wlan0

To polecenie działa odwrotnie niż powyższe polecenie, ponieważ blokuje cały ruch na porcie 1001 na wlan0.

Oto dokładna inspekcja polecenia:

UWAGA: Iptables nie rozumieją aliasów interfejsów sieciowych. Dlatego w systemie z więcej niż jednym interfejsem wirtualnym konieczne będzie ręczne i jawne zdefiniowanie adresu docelowego.

Na przykład:

sudo iptables -A INPUT -j DROP -p TCP --port docelowy 1001 -i wlan0 -d 192.168.0.24

Dodawanie adresów IP do białej i czarnej listy

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

Przykład:

iptables -A INPUT -m stan --stan USTANOWIONO, POWIĄZANE -j AKCEPTUJ
iptables -A INPUT -i lo -m komentarz --comment "Zezwalaj na połączenia zwrotne" -j AKCEPTUJ
iptables -A WEJŚCIE -p icmp -m komentarz --comment „Zezwól Pingowi działać zgodnie z oczekiwaniami” -j

ZAAKCEPTOWAĆ

iptables -A WEJŚCIE -s 192.168.0.1/24 -j AKCEPTUJĘ
iptables -A WEJŚCIE -s 192.168.0.0 -j AKCEPTUJ
iptables -P DROP WEJŚCIA
iptables -P ZRZUT DO PRZODU

Pierwsza linia ustawia regułę zezwalającą na wszystkie źródłowe adresy IP w 192.168.0.1/24 podsieć. Możesz również użyć CIDR lub indywidualnych adresów IP. W poniższym poleceniu ustawiamy regułę zezwalającą na cały ruch związany z istniejącymi połączeniami. W końcowych poleceniach ustawiamy politykę dla INPUT i FORWARD, aby porzucić wszystko.

Korzystanie z iptables na IPv6

Polecenie Iptables działa tylko na IPv4. Aby używać iptables na IPv6, musisz użyć polecenia ip6tables. Ip6tables używa tabel surowych, filtrów, zabezpieczeń i maglowania. Ogólna składnia ip6tables jest podobna do iptables, a także obsługuje pasujące opcje iptables, takie jak dołączanie, usuwanie itp.

Rozważ skorzystanie ze stron podręcznika ip6tables, aby uzyskać więcej informacji.

Przykładowe zestawy reguł iptables dla bezpieczeństwa sieci

Stworzenie odpowiednich reguł zapory będzie zależeć głównie od usługi działającej w systemie i używanych portów. Oto kilka podstawowych reguł konfiguracji sieci, których możesz użyć do zabezpieczenia swojego systemu:

1: Zezwól na ruch interfejsu Loopback i odrzuć wszystkie sprzężenia zwrotne pochodzące z innych interfejsów

iptables -A INPUT -i lo -j AKCEPTUJ (Możesz również użyć ip6tables)
iptables -A INPUT ! -ja lo -s 127.0.0.0 -j REJECT (dotyczy również tabel ip6)

2: Odrzuć wszystkie żądania ping

iptables -A INPUT -p icmp -m stan --state NOWY --icmp-type 8 -j ODRZUCENIE

3: Zezwól na połączenia SSH

iptables -A INPUT -p tcp --dport 22 -m stan --stan NOWY -j AKCEPTUJ

Oto przykładowe polecenia, których możesz użyć, aby zabezpieczyć swój system. Jednak konfiguracja będzie w dużej mierze zależeć od tego, do czego lub kogo chcesz uzyskać dostęp do różnych usług.

UWAGA: Jeśli wolisz całkowicie wyłączyć IPv6, upewnij się, że odkomentowałeś linię, ponieważ spowolni to proces aktualizacji:

pierwszeństwo ::ffff:0:0/96 100 znalezionych w /etc/gai.konf .

Dzieje się tak, ponieważ menedżer pakietów APT rozpoznaje domenę lustrzaną w IPv6 z powodu aktualizacji apt-get.

Jak wdrożyć reguły iptables?

Aby wdrożyć iptables na Ubuntu lub innych systemach opartych na Debianie, zacznij od utworzenia dwóch plików, ip4 i ip6, dla ich odpowiednich adresów IP.

W dowolnym pliku dodaj reguły, które chcesz wymusić w odpowiednich plikach - reguły IPv4 do pliku ip4 i reguły IPv6 do pliku ip6.

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

sudo iptables-przywracanie < /tmp/ip4 (replace filename for IPv6)

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

sudo iptables -L -v

Szybki przewodnik po iptables

Ubuntu i popularne dystrybucje oparte na Debianie są dostarczane z pakietem iptables-persistent, który umożliwia łatwe zastosowanie reguł zapory sieciowej po ponownym uruchomieniu. Pakiet zawiera pliki, których możesz użyć do ustawienia reguł dla IPv4 lub IPv6 i mogą być stosowane automatycznie podczas uruchamiania.

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

Jak zainstalować iptables-persistent?

Upewnij się, że masz zainstalowany iptables-persistent w swoim systemie. Użyj dpkg, aby sprawdzić, czy masz zainstalowany pakiet.

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

sudo apt-get install iptables-persistent

Zostaniesz dwukrotnie poproszony o zapisanie aktualnych reguł IPv4 i IPv6. Kliknij Tak, aby zapisać obie reguły.

Kliknij tak, aby zapisać IPv6.

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

Teraz możesz korzystać z zasad.v4 i zasady.v6, aby dodać reguły iptables, które zostaną automatycznie zastosowane przez iptables-persistent. Pliki są prostymi plikami tekstowymi, 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 parametrami.

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

Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...
WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...
Mouse left-click button not working on Windows 10
If you are using a dedicated mouse with your laptop, or desktop computer but the mouse left-click button is not working on Windows 10/8/7 for some rea...