Powrót do bloga

Wyświetlanie i usuwanie reguł zapory sieciowej Iptables

Wyświetlanie i usuwanie reguł zapory sieciowej Iptables

Iptables jest główną zaporą sieciową, która jest domyślnie dostarczana z większością dystrybucji Linuksa. Odpowiada za obsługę bezpieczeństwa sieciowego. Działa poprzez porównywanie pakietów danych z zestawem reguł, instruując system, czy ma zaakceptować, odrzucić, czy przekazać połączenie zgodnie z regułami. W tym poradniku pokażemy Ci, jak wyświetlać i usuwać reguły, sprawdzać i czyścić liczniki pakietów i bajtów oraz czyścić łańcuchy. Gotowy? Zaczynajmy!

Wymagania wstępne

Zanim przejdziemy do poradnika, wyjaśnijmy sobie jedną rzecz. Wszystkie wskazówki i triki przedstawione w tym przewodniku są wykonywane na osobnej maszynie wirtualnej. Dobrze, abyś Ty również tak zrobił, ponieważ eliminuje to ryzyko doprowadzenia systemu do całkowitego chaosu. Dopiero po opanowaniu tych procesów należy próbować wdrażać je w rzeczywistych sytuacjach.

W tym poradniku do zademonstrowania wszystkich kroków użyjemy systemu Ubuntu. Powinny one jednak działać w podobny sposób niezależnie od dystrybucji.

Wyświetlanie reguł

Wyświetlanie reguł według specyfikacji

Najpierw sprawdźmy wszystkie aktywne reguły według specyfikacji. Uruchom następujące polecenie:

iptables list

Jeśli wcześniej pracowałeś z tworzeniem reguł iptables, mogłeś zauważyć podobieństwo. Dane wyjściowe przypominają polecenia, które zostały użyte do ich utworzenia, z wyjątkiem części „iptables”. Mają one również podobną strukturę do plików konfiguracyjnych reguł iptables.

Wyświetlanie konkretnego łańcucha

Spróbujmy czegoś bardziej precyzyjnego. Zamiast wyświetlać wszystkie reguły iptables, nakaż iptables wyświetlenie reguł konkretnego łańcucha. Na przykład TCP, INPUT, OUTPUT itp. Aby to zrobić, określ nazwę łańcucha po fladze „-S”:

list specific chain

Wyświetlanie reguł w postaci tabeli

Widok tabeli jest przydatny przy porównywaniu różnych reguł. Użyj flagi „-L”, aby nakazać iptables wyświetlenie wszystkich aktywnych reguł w formacie tabeli:

list rules as table iptables

Dane wyjściowe zawierają wszystkie bieżące reguły posortowane według łańcucha. Podobnie jak w poprzedniej sekcji, możliwe jest również filtrowanie listy wyjściowej według określonego łańcucha, takiego jak INPUT, TCP, OUTPUT itp. Aby to zrobić, określ łańcuch po fladze „-L”:

filter by chain

Przeanalizujmy krótko dane wyjściowe. W naszym przypadku, ze względu na reguły, dane wyjściowe mogą wydawać się nieco nieuporządkowane. Pierwsza linia danych wyjściowych deklaruje nazwę łańcucha (INPUT) wraz z jego domyślną polityką (DROP). Następna linia określa nagłówki kolumn tabeli. Reszta to reguły łańcucha. Przyjrzyjmy się, co oznaczają nagłówki:

  • target: Jeśli pakiet pasuje do reguły, ta sekcja definiuje, jakie działanie powinno zostać podjęte. Może to być zaakceptowanie pakietu, odrzucenie, rejestrowanie lub przesłanie go do innego łańcucha.
  • prot: Definiuje protokół, na przykład udp, tcp, icmp lub all.
  • opt: Ta kolumna wskazuje opcje IP. Jest rzadko używana.
  • source: Pochodzenie pakietu (adres IP lub podsieć). Wartość może być konkretna lub określona jako „anywhere”.
  • destination: Miejsce docelowe pakietu (adres IP lub podsieć). Wartość może być konkretna lub określona jako „anywhere”.

Jak zapewne zauważyłeś, ostatnia kolumna nie jest podpisana. Dzieje się tak, ponieważ służy ona do wskazywania opcji reguły. Będzie zawierać wszystkie części reguły, które nie zmieściły się w poprzednich polach. Może zawierać wszystko, od portów źródłowych/docelowych po stan połączenia pakietu itp.

Liczba pakietów i łączny rozmiar

Czyszczenie liczników pakietów i bajtów

Podczas wyświetlania reguł iptables możemy również sprawdzić liczbę pakietów oraz łączny rozmiar pakietów w bajtach, które zostały dopasowane do każdej konkretnej reguły. Jest to przydatna metryka, gdy chcesz mieć ogólny obraz tego, które reguły są dopasowywane do pakietów.

W tym przykładzie użyjemy łańcucha INPUT. Tym razem dodaj flagę „-v”, która oznacza tryb szczegółowy (verbose):

package and byte counters iptables

Zauważysz, że dane wyjściowe tabeli zawierają teraz dwa dodatkowe pola: pkts i bytes.

Resetowanie liczników pakietów i łącznego rozmiaru

W niektórych sytuacjach możesz chcieć zresetować liczniki, które zademonstrowaliśmy wcześniej. Jeśli system zostanie zrestartowany, liczniki zostaną automatycznie wyczyszczone. Możesz również ręcznie wymusić reset. Użyjemy flagi „-Z”, aby zresetować liczbę pakietów i łączny rozmiar:

Reset packet counts and aggregate size

Pamiętaj, że to polecenie zresetuje liczniki wszystkich łańcuchów. Podobnie jak w przypadku innych poleceń, możliwe jest zresetowanie licznika dla określonych łańcuchów. Na przykład kolejne polecenie zresetuje liczniki dla łańcucha INPUT:

reset particular counter

Możliwe jest bardziej precyzyjne zresetowanie licznika. Możesz zresetować licznik dla konkretnej reguły w określonym łańcuchu. Aby to zrobić, dodaj numer reguły po nazwie łańcucha:

reset specific rule

Usuwanie reguł

Usuwanie reguł według specyfikacji

Istnieje wiele sposobów na usuwanie reguł iptables. Pierwszą metodą usuwania reguł jest użycie specyfikacji reguły. Do usunięcia użyjemy flagi „-D”, po której następuje specyfikacja reguły:

Delete rules by specification

Jeśli dodawałeś już wcześniej jakiekolwiek reguły iptables, zauważysz podobieństwo. Jedyną rzeczą, która się tutaj zmieniła, jest flaga „-D” zamiast flagi „-A”.

Usuwanie reguł według łańcucha i numeru

Usuwanie reguł według ich specyfikacji wymaga nieco więcej wysiłku, prawda? A co, gdybyśmy mogli je usunąć bez konieczności pamiętania specyfikacji reguły? Usuńmy reguły według ich łańcucha i numeru! W porównaniu z pierwszą metodą (usuwanie według specyfikacji), ta jest stosunkowo łatwiejsza, ponieważ nie musisz mieć pod ręką całej specyfikacji.

Ta metoda wymaga podania łańcucha i numeru linii docelowej reguły. Skąd wziąć numer linii? Uruchom następujące polecenie, aby to ustalić:

Delete rules by chain and number - get line number

Otrzymasz obszerny wynik ze wszystkimi regułami i ich numerami linii. Aby zawęzić wynik, użyj nazwy łańcucha po fladze „-L”:

Delete rules by chain and number - filter

W wyjściu zauważysz dodatkową kolumnę num. Wskazuje ona numer linii dla każdej reguły. Po ustaleniu docelowego numeru wykonaj usunięcie:

delete iptables rule

Czyszczenie łańcuchów

W przypadku iptables, czym jest czyszczenie (flushing) łańcucha? To proces usuwania wszystkich reguł w określonym łańcuchu. Jeśli potrzebujesz masowo usunąć reguły, możesz skorzystać z tej metody. Przed wykonaniem czyszczenia łańcucha zdecydowanie zalecamy wykonanie kopii zapasowej istniejących reguł za pomocą iptables-save. Jest to wbudowane narzędzie iptables, które wyświetli wszystkie bieżące łańcuchy i reguły. Wynik można wyeksportować do pliku tekstowego:

iptables rules export

Czyszczenie pojedynczego łańcucha

Sprawdźmy, jak wyczyścić łańcuch. Użyj flagi „-F”, a następnie docelowego łańcucha:

flush a single chain

Czyszczenie wszystkich łańcuchów

Przed wyczyszczeniem wszystkich łańcuchów upewnij się, że rozumiesz, co robisz. Spowoduje to usunięcie wszystkich reguł zapory sieciowej iptables. Powinieneś wcześniej utworzyć kopię zapasową reguł iptables.

Gotowy? Wyczyść wszystkie łańcuchy iptables, uruchamiając następujące polecenie:

flush all changes

Czyszczenie reguł, usuwanie łańcuchów i akceptowanie wszystkiego

Wykonanie kroków opisanych w tej sekcji skutecznie wyłączy zaporę sieciową, umożliwiając nieograniczony ruch sieciowy. Podobnie jak w poprzedniej sekcji, przed przejściem dalej zalecamy posiadanie kopii zapasowej iptables. Najpierw zmienimy domyślną politykę każdego z wbudowanych łańcuchów na ACCEPT. Ma to na celu upewnienie się, że iptables nie zablokuje Ci dostępu do serwera przez SSH:

Flush rules, delete chains and accept all

Teraz wyczyść tabele nat i mangle:

 flush nat and mangle tables

 mangle tables

Wyczyść wszystkie łańcuchy i usuń wszystkie niestandardowe łańcuchy:

Flush all the chains

 delete all the non-default chains

Następnie sprawdźmy wynik:

iptables result

Podsumowanie

Iptables to potężna zapora sieciowa. Mamy nadzieję, że ten poradnik okazał się pomocny w nauce wyświetlania i usuwania reguł zapory iptables. I nie zapomnij poćwiczyć ich przed zastosowaniem w rzeczywistym środowisku.

Miłego korzystania z komputera!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.