Jak używać iptables do filtrowania pakietów w systemie Linux?

Spisie treści

W tym samouczku będziemy rozmawiać iptables, firewall lub firewall, który mamy w Linuksie. To narzędzie pozwoli nam filtrować pakiety (z czym zajmie się samouczek), wygenerować rekord logu, wykonać translację NAT.

Dzięki iptables możemy w prosty sposób generować reguły do ​​filtrowania pakietów, chociaż przy pierwszym użyciu może to wydawać się nieco mylące, zobaczysz, że po kilku dniach korzystania z niego nie ma żadnych komplikacji.

Korzystanie z tego narzędzia wymaga wysokich uprawnień, to znaczy, że będziemy musieli być superużytkownikami, aby je uruchomić. Mamy wiele funkcji w iptables, celem samouczka jest przybliżenie jego użycia na przykładach. Ważne jest, aby po ukończeniu samouczka kopać dalej, ponieważ jest to bardzo przydatne.

Następnie opuszczamy oficjalną stronę internetową w przypadku zainteresowania:

NotatkaDla IPv6 mamy ip6tables.

Jeśli chcemy zobaczyć informacje o iptables, wykonamy w terminalu:

 człowiek iptables
Zobaczymy następujące informacje:

Na obrazku możesz zobaczyć część informacji dostarczonych przez polecenie, aby zobaczyć je wszystkie, przewiń w dół w terminalu. Jak widzieliśmy na początku samouczka, jednym z zadań, które pozwoli nam iptables, jest tworzenie reguł lub filtrów, aby wiedzieć, co zrobić z pakietami, których źródłem / miejscem docelowym jest nasza maszyna. W tym zadaniu będziemy chcieli wiedzieć, dlaczego używamy następujących pojęć:

Tablice
Iptables ma kilka tabel, ale w naszym samouczku skupiamy się tylko na filtruj tabelę, który odpowiada za filtrowanie, jest domyślnie używany w iptables.

Więzy
Ciągi, które zamierzam tutaj umieścić, to te, które należą do wcześniej skomentowanej tabeli.

  • Wejście: Opakowania przeznaczone do naszej maszyny.
  • Wyjście: Pakiety pochodzące z naszego systemu.
  • Do przodu: Paczki, które przechodzą przez naszą maszynę, aby zostać przekierowanym do innej.

Zasady
Zamierzamy wskazać 2, które zostaną użyte w samouczku, ale jest ich więcej.

  • Zaakceptować: Pakiety są akceptowane.
  • Upuszczać: Pakiety są odrzucane.

Parametry
Niektóre parametry, których możemy użyć, są następujące.

  • -Zasada: Aby dodać regułę
  • -D zasada: Aby usunąć wskazaną przez nas regułę.
  • -L: Pozwala nam wymienić reguły.
  • -F: Usuń wszystkie istniejące reguły.
  • -j cel: Ustaw typ reguły (Akceptuj, Odrzuć).
  • -t stół: Wskazuje używaną tabelę (domyślnie filtruj tabelę).
  • -p protokół: Używany do wskazania protokołu.
  • -i interfejs: Ustalamy interfejs dla reguły.
  • -s: Aby wskazać pochodzenie.
  • -D: Wskazuje miejsce docelowe.
  • -h: Wyświetla pomoc.

Jest ich znacznie więcej, ponieważ mogą być --Port docelowy lub --Port źródłowy. Aby zobaczyć je wszystkie, możesz uruchomić polecenie, które omówiliśmy powyżej:

 człowiek iptables
Możesz też uruchomić:
 iptables -h
NotatkaTrzeba dokładnie przyjrzeć się opcjom oferowanym przez narzędzie, ponieważ rozróżnia ono małe i wielkie litery i możemy się pomylić (nie będzie tak samo wstawiać -P że -P).

Zacznijmy od przykładów, w sumie zostanie wstawionych 10, dzięki czemu będzie lepiej zrozumiane i możemy zobaczyć, jak działa iptables w trybie zapory. W przykładach nie zobaczysz sudo, nie będzie to konieczne, jeśli jesteś rootem, w przeciwnym razie będziesz musiał dodać słowo sudo na początku każdego przykładu.

1. Zakaz wyjazdu do dowolnego miejsca przeznaczeniaNa początek podamy prosty przykład, nigdzie nie zostawiaj wyjścia.

 iptables -A WYJŚCIE -j DROP
Ten jest bardzo łatwy, jak widać, następny jest jeszcze prostszy.

2. Wyczyść wszystkie zasadyKontynuujemy bardzo prosty przykład, zostawiamy nasze iptables bez reguł, w tym celu wykonamy:

 iptables -F
Cóż, skomplikujmy to nieco bardziej w następnym.

3. Zakaz wyjazdu przez port 80Teraz zadbamy o zamknięcie wyjścia przez określony port, w tym przypadku jest to 80, dlatego nie będziemy mieli przeglądania stron internetowych przez protokół http (jeśli przejdziemy do strony https, możemy nawigować, chociaż moglibyśmy zrobić to samo jak 80) .

 iptables -A WYJŚCIE -p tcp --destination-port 80 -j DROP
NotatkaUżywając portu docelowego lub źródłowego, będziemy musieli umieścić parametr -p, aby wskazać protokół.

Przechodzimy do czwartego przykładu.
4. Zabroń nawigacji do stronyPrzy tej okazji jesteśmy zainteresowani zakazem dostępu do strony X z naszego systemu, wyobraźmy sobie, że ta strona to solvetic.com, w tym celu poznajemy jej adres IP, bardzo łatwo wykonując ping, który ją uzyskamy.

A teraz wykonamy:

 iptables -A WYJŚCIE -d 178.33.118.246 -j DROP
Jak widzimy, po parametrze wystarczy podać swój adres IP -D.

5. Wymień istniejące zasadyW tym przykładzie spróbujemy wyświetlić listę reguł filtrowania, które obecnie zdefiniowaliśmy:

 iptables -L
Widzimy obraz, mamy zdefiniowane tylko dwie reguły, jak widać poniżej:

Przejdźmy do szóstego przykładu, w którym ponownie wykorzystamy listę reguł.

6. Usuń określoną regułęTutaj, zaczynając od reguł, które mieliśmy w poprzednim przykładzie, usuniemy jedną z reguł wyjścia, w tym przypadku pierwszą, która się pojawi, wykonujemy co następuje:

 iptables -D WYJŚCIE 1
Aby sprawdzić, czy został skutecznie usunięty, posługujemy się przykładem 5:

Kontynuujmy więcej.

7. Unikaj pingowaniaNie chcemy, aby nas pingowali, w tym celu zablokujemy wpis dla protokołu ICMP.

 iptables -A INPUT -p ICMP -j DROP
Poniżej zostawiam obraz pingowania przed wykonaniem powyższego polecenia i po:

Widzimy, że nasza maszyna nie odpowiada, ponieważ odrzuca pakiety ICMP. Jeśli zablokujemy wyjście zamiast wejścia, wykonalibyśmy:

 iptables -A WYJŚCIE -p ICMP -j DROP
To samo, co na poprzednim obrazie, powtórzy się. Aby przetestować wykonałem 3 razy ping, jeśli wykonamy możemy zobaczyć ilość pakietów:
 iptables -L -v

Widzimy, że skutecznie umieszcza 3 na poprzednim obrazku.

8. Zapobiegaj wysyłaniu nam danych przez IPZamierzamy zastosować jeden wejściowy, nie chcemy, aby konkretny adres IP nas łączył, więc wykonamy:

 iptables -A WEJŚCIE -s 192.168.66.1 -j DROP
Spójrzmy na nieco dłuższy przykład.

9. Zezwól na wyjścia z zakresu adresów IPWyobraź sobie, że chcesz akceptować tylko wyjścia z zakresu adresów IP, ale odrzucać pozostałe wyjścia, musimy wykonać:

 Iptables -A WYJŚCIE -d 192.168.0.0/24 -j AKCEPTUJ Iptables -A WYJŚCIE -j DROP
NotatkaKolejność wykonywania reguł ma znaczenie, wypróbuj ten przykład z siecią, na którą chcesz zezwolić i nawiąż połączenie, zobaczysz, że działa, a następnie usuń wszystkie reguły i wykonaj 2 zdania w odwrotnej kolejności, teraz odrzuci połączenia .

Przejdźmy do dziesiątego i ostatniego przykładu.

10. Otwórz port 143 (imap)Otworzymy port do wprowadzania wszystkich pakietów tcp, w tym przypadku 143 (tak samo będzie z resztą).

 iptables -A INPUT -m stan --state NOWY -p tcp --dport 143 -j AKCEPTUJ
W tym przykładzie chcieliśmy użyć --dport, więc widać, że możemy użyć tego lub --Port docelowy, moglibyśmy również użyć --sport zamiast --Port źródłowy.

Samouczek kończy się tutaj, teraz spróbujesz zastosować inne zasady, im więcej ćwiczysz, tym szybciej będziesz miał ich stosowanie i tym mniej będzie cię to kosztować. Na koniec zostawiamy samouczek, który może Cię zainteresować, otwierając i zamykając porty w systemie Windows 10.

wave wave wave wave wave