Samouczek iptables

Samouczek iptables

IPTABLES to zapora linii poleceń, która filtruje pakiety zgodnie z zdefiniowanymi regułami. W przypadku iPtables użytkownicy mogą akceptować, odmawiać lub na dalsze połączenia; Jest niezwykle wszechstronny i szeroko stosowany, mimo że zastąpiono go nftables.

Po przeczytaniu tego samouczka zrozumiesz zasady IPTABLES i zdefiniujesz zasady IPTABLES w celu ochrony sieci domowej.

Notatka: Dodano polecenie sudo dla czytelników, którzy muszą skopiować zasady wspomniane w tym samouczku iptables.

Glosariusz iptables:

CEL: Podczas korzystania z IPTables cel to działanie, które chcesz zastosować, gdy pakiet pasuje do reguły.

ŁAŃCUCH: Łańcuch to lista zasad; Dostępne wbudowane łańcuchy to: Wejście, wyjście, naprzód, prrenouting i posty jest.

TABELA: Tabele są funkcjami iptables dla każdego celu. Na przykład istnieje tabela zadań routingu i inna tabela do filtrowania zadań; Każda tabela zawiera łańcuchy reguł.

Dostępne tabele to filtr, NAT, RAW, Security i Mangle. Każda tabela zawiera wbudowane (reguły) łańcuchy. Poniższa lista pokazuje, jakie łańcuchy zawierają każdą tabelę:

FILTR WEJŚCIE WYJŚCIE DO PRZODU
Nat Prerouting Postrouting WYJŚCIE
SUROWY Prerouting WYJŚCIE
MAGIEL Prerouting Postrouting WYJŚCIE WEJŚCIE DO PRZODU
BEZPIECZEŃSTWO WEJŚCIE WYJŚCIE DO PRZODU

W zależności od działania, które chcesz wykonać, musisz określić tabelę za pomocą opcji -T, a następnie nazwy tabeli. W tym samouczku opcja -t nie jest używana. Ten samouczek koncentruje się na celach filtrowania przy użyciu tabeli filtrów zastosowanej domyślnie, gdy opcja -t nie jest przekazana. Podczas czytania tego samouczka poznasz niektóre z wyżej wymienionych pojęć.

Jak zainstalować:

Aby zainstalować IPTABLES w Debian i jego oparte na Linux dystrybucjach:

sudo apt instal iptables -y

Przed zainstalowaniem IPTABLES w rozkładach Linux opartych na Redhat musisz wyłączyć zaporę ogniową, uruchamiając:

Sudo Systemctl Stop Firewalld
sudo systemctl wyłącz zaporę ogniową
Sudo Systemctl Mask -Teraz zapora ogniowa

Następnie zainstaluj iptables, wykonując:

sudo yum instaluj usługi iptables
sudo systemctl start iptables
Sudo Systemctl Start IP6Table
sudo systemctl włącz IPTables
Sudo Systemctl Włącz IP6Table
Sudo Systemctl Start IP6Table

Pierwsze kroki z IPTABLES:

Przed rozpoczęciem sprawdź poprzednie reguły, instruując iptables, aby wymienić istniejące zasady i reguły za pomocą parametru -l (-list).

sudo iptables -l

Powyższe wyjście pokazuje 3 wiersze: Wejście łańcucha, do przodu i wyjście łańcuchowe. Gdzie WEJŚCIE odnosi się do zasad dotyczących nadchodzącego ruchu, WYJŚCIE odnosi się do zasad dotyczących ruchu wychodzącego i DO PRZODU odnosi się do zasad routingu.

Wyjście pokazuje również, że nie ma zdefiniowanych reguł, a wszystkie zdefiniowane zasady są akceptowane.

Istnieją 3 rodzaje zasad: Zaakceptuj, odrzuć i upuść.

Polityka ZAAKCEPTOWAĆ umożliwia połączenia; Polityka ODRZUCIĆ Odrzuca połączenia zwracające błąd; Polityka UPUSZCZAĆ Odrzuca połączenia bez wywoływania błędów.
Podczas używania UPUSZCZAĆ, UDP Pakiety są upuszczane, a zachowanie będzie takie samo jak podłączenie do portu bez usługi. TCP pakiety zwrócą Ack/Rst, co jest tą samą odpowiedzią, na którą odpowiada otwarty port bez usługi. Podczas używania ODRZUCIĆ, Pakiet ICMP zwraca docelową, niezmienną do hosta źródłowego.

Kiedy masz do czynienia z IPTables, musisz najpierw zdefiniować trzy zasady dla każdego łańcucha; Następnie możesz dodać wyjątki i specyfikacje. Dodanie zasad wygląda tak:

sudo iptables -p wejście
sudo iptables -p wyjście
sudo iptables -p do przodu

IPTABLES PERSIBISIVE i restrykcyjne zasady:

Możesz zastosować iptable z dopuszczalną zasadą, akceptując wszystkie przychodzące połączenia, z wyjątkiem tych, które konkretnie upuszczasz lub odrzucasz. W takim przypadku każde połączenie jest dozwolone, chyba że zdefiniujesz regułę, aby odmówić.

Przeciwnie, restrykcyjne zasady odmawiają wszystkich połączeń, z wyjątkiem tych, które konkretnie akceptujesz. W takim przypadku każde połączenie jest odmawiane, chyba że zdefiniujesz regułę, aby.

Stosowanie ograniczającej polityki z IPTables:

Poniższy przykład pokazuje, jak zastosować politykę restrykcyjną z IPTABLES, porzucając cały przychodzący ruch, z wyjątkiem dozwolonego.

Blokowanie przychodzącego ruchu.

WAŻNY: Stosowanie następujących 3 zasad może pozostawić Ci bez połączenia internetowego. Korzystając z reguł wymienionych w „IPTables dołączających regułach i stanach iptables”, dodajesz niezbędne wyjątki, aby przywrócić dostęp do Internetu. Możesz konsekwentnie wykonywać sudo iptables -f, aby spłukać.

Możesz zablokować cały przychodzący ruch, umożliwiając jedynie ruch wychodzący na przeglądanie sieci i dla potrzebnych aplikacji.

sudo iptables -p kropla wejściowa
sudo iptables -p wyjście akceptuj
sudo iptables -p do przodu kropla

Gdzie:

-P = zasady

sudo iptables -p kropla wejściowa: Poinstruuj iptable, aby odrzucili cały przychodzący ruch bez odpowiedzi na źródło.

sudo iptables -p wyjście akceptuj: definiuje akceptowanie polityki ruchu wychodzącego.

sudo iptables -p do przodu kropla: Instruuje iptables, aby nie wykonywać zadań routingu, upuszczając wszystkie pakiety przeznaczone do innego hosta (próbując przejść przez urządzenie zapory) bez odpowiedzi.

Powyższy przykład umożliwia przeglądanie sieci i połączeń uruchomionych przez urządzenie lokalne (-P Zaakceptuj wyjście), ale zapobiegnie połączeniom zainicjowanym przez innego hosta (-P spadek wejściowy) Podobnie jak SSH próbuje uzyskać dostęp do urządzenia, a nie zwrócić komunikatów o błędach.

Kiedy włączysz iptables z ograniczającymi zasadami, jak w poprzednim przykładzie, musisz dołączyć reguły, aby dostosować konfigurację. Na przykład, jeśli zachowujesz wspomnianą powyżej konfigurację bez dodawania rozsądnego wyjątku dla interfejsu Loopback (LO), niektóre aplikacje mogą nie działać poprawnie. Będziesz także musiał zezwolić na ruch przychodzący należący do lub związany z połączeniem zapoczątkowanym przez urządzenie.

IPTables dołączanie zasad i stwierdzeń iptables

Należy zrozumieć, że IPTables stosuje zasady według zamówienia. Po zdefiniowaniu reguły po poprzedniej regułach druga reguła przepisuje ostatnią, jeśli pakiet będzie pasował do tej samej reguły.

Podoba mi się poprzedni przykład; Zablokowałeś cały przychodzący ruch, musisz dołączyć wyjątki dla interfejsu Loopback; Można to osiągnąć poprzez dodanie parametru -a (dołączania).

sudo iptables -a wejście -m contrack --ctState ustalone, powiązane -j zaakceptuj
sudo iptables -A wyjściowe -m contrack --ctState ustalone -j akceptuj

Moduł (-m) conntrack -ctState Ustalone, powiązane instruuje iptables potwierdziła, czy jest stan połączenia Ustalone lub powiązane do istniejącego połączenia przed zastosowaniem określonej zasady reguł.

Istnieje 4 możliwe stany iptables mogą sprawdzić:

IPTABLES stanowi nowy: Pakiet lub ruch, który pozwala lub blokuje, próbuje rozpocząć nowe połączenie.

Ustanowiony stan IPTABLES: Pakiet lub ruch, który pozwala lub blokuje, jest częścią ustalonego połączenia.

IPTABLES STANE: Pakiet lub ruch rozpoczyna nowe połączenie, ale jest związane z istniejącym połączeniem.

IPTABLES stanowi nieważne: Pakiet lub ruch jest nieznany bez stanu.

Pierwszy wiersz powyższego przykładu instruuje iptables, aby akceptował przychodzące pakiety z ruchu pochodzącego z połączeń lub związanych z połączeniami rozpoczętymi przez urządzenie. Druga linia instruuje IPTABLES, aby zaakceptował tylko ruch wychodzący z już ustalonych połączeń.

IPTABLES DODATKOWANIE, aby zaakceptować ruch w pętli i definiowanie interfejsów:

Interfejs Loopbacka jest używany przez programy, które muszą interakcja z LocalHost. Jeśli nie zezwalasz na ruch w pętli, niektóre aplikacje mogą nie działać.

Poniższe polecenie umożliwia połączenia z pętlą:

sudo iptables -a input -i lo -j zaakceptuj
sudo iptables -a wyjście -o lo -j akceptuj

Gdzie -i i -o są używane do określenia urządzenia sieciowego do ruchu przychodzącego (-i) i ruchu wychodzącego (-o).

Zastosowanie likwizyjnej zasady z IPTABLES:

Możesz także zdefiniować dopuszczalną zasadę umożliwiającą cały ruch, z wyjątkiem określonych upuszczonych lub odrzuconych. Możesz włączyć wszystko oprócz określonego zakresu IP lub IP, lub możesz odmawiać pakietów na podstawie ich nagłówków, wśród większych możliwości.

Poniższy przykład pokazuje, jak zastosować dopuszczalną zasadę umożliwiającą cały ruch, z wyjątkiem zakresu IP zablokowanego dla usługi SSH.

sudo iptables -p wejście akceptuj
sudo iptables -p wyjście akceptuj
sudo iptables -p do przodu kropla
sudo iptables -A wejście -p.168.1.100-192.168.1.110 -J Odrzucanie

Powyższy przykład stosuje zasady dopuszczalne, ale blokuje dostęp SSH do wszystkich IP należących do zakresu 192.168.1.100 i 192.168.1.110.

Gdzie -p określa protokół, -dport (lub -destination -port) port docelowy (22, ssh) i moduł iprange z argumentem -Src -Range (zakres źródła) umożliwia zdefiniowanie zakresu adresów IP. Opcja -J (-Jump) instruuje iptable, co zrobić z pakietem; W takim przypadku reprezentujemy odrzucenie.

Blokowanie portów za pomocą iptables

Poniższy przykład pokazuje, jak zablokować określony port dla wszystkich połączeń, port SSH.

sudo iptables -a wejście -p tcp - -destination -port 22 -J upuścić

Zapisywanie zmian iptables

Reguły iptables nie są trwałe; Po ponownym uruchomieniu zasady nie zostaną przywrócone. Aby uczynić swoje reguły, uruchom następujące polecenia, w których pierwszy wiersz zapisuje reguły w pliku /etc /iptables.w górę.reguły, a drugi wiersz jest utworzenie pliku dla IPTables, aby rozpocząć po ponownym uruchomieniu.

sudo iptables-save> /etc /iptables.w górę.zasady
nano/etc/network/if-up-up.d/iptables

Dodaj następujące zmiany do pliku i zamknij zmiany zapisywania (Ctrl+X).

#!/bin/sh
/sbin/iptables-restore < /etc/iptables.up.rules

Na koniec podaj uprawnienia do wykonania pliku, uruchamiając:

CHMOD +X/etc/Network/If-Pre-up.d/iptables

Płukanie lub usuwanie zasad IPTABLES:

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

sudo iptables -f

Aby usunąć określony łańcuch, taki jak wejście, możesz uruchomić:

sudo iptables -f

Wniosek:

IPTABLES należą do najbardziej wyrafinowanych i elastycznych zapór ogniowych na rynku. Pomimo zastąpienia, pozostaje jedno z najbardziej rozprzestrzenianych oprogramowania defensywnego i routingu.

Jego wdrożenie może szybko nauczyć się nowych użytkowników Linuksa z podstawową wiedzą na temat TCP/IP. Gdy użytkownicy zrozumieją składnię, definiowanie reguł staje się łatwym zadaniem.

Jest o wiele więcej dodatkowych modułów i opcji, które nie były objęte tym wprowadzającym samouczkiem. Możesz zobaczyć więcej przykładów iptables w IPTables dla początkujących.

Mam nadzieję, że ten samouczek iptables był pomocny. Kontynuuj podążaj za Linux, aby uzyskać więcej wskazówek i samouczków Linux.