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