Jak używać tcpdump do monitorowania naszej sieci?

Spisie treści

W tym samouczku zobaczymy jak pracować z tcpdump. Jest to narzędzie typu open source dla wiersza poleceń, służy do monitorować sieć, możemy to rozumieć jako analizator pakietów, które przechodzą przez sieć, w której wykonujesz program. Jest używany w środowiskach Unix, chociaż istnieje wariant dla Windows o nazwie WinDump. Może Cię zainteresować samouczek dotyczący EtherApe, który jest narzędziem do graficznego podglądu stanu naszej sieci.

W tutorialu będziemy pracować pod Linuksem, a konkretnie w Ubuntu 16.04, aby narzędzie działało musimy uruchomić je z wysokimi uprawnieniami, poza pewnymi opcjami, które będą konieczne.

Możemy użyć tcpdump do różnych zadań, takich jak debugowanie naszych aplikacji sieciowych, odczytywanie danych przesyłanych między użytkownikami przez sieć, w której się znajdujemy itp. Poniżej umieścimy jego składnię:

 tcpdump [-aAbdDefhHIJKlLnNOpqRStuUvxX #] [-B rozmiar] [-c liczba] [-C rozmiar_pliku] [-E coś: sekret] [-F plik] [-G sekund] [-i interfejs] [-j tstamptype] [- M sekret] [--number] [-Q in | out | inout] [-r plik] [-s snaplen] [--time-stamp-precyzja] [--tryb natychmiastowy] [-T typ] [ --wersja] [-V plik] [-w plik] [-W liczba plików] [-y typ łącza danych] [-z polecenie] [-Z użytkownik] [wyrażenie]
To narzędzie ma dużą liczbę parametrów, z których możemy korzystać, tutaj zobaczymy niektóre.

Niektóre parametry tcpdump

  • -DO: Wydrukuj pakiety w kodzie ASCII.
  • -x: Drukuj pakiety w systemie szesnastkowym.
  • -D: Pokazuje dostępne interfejsy.
  • -C number: Program zostanie zamknięty po przechwyceniu wskazanej liczby pakietów.
  • -i interfejs: program nasłuchuje na określonym interfejsie.
  • -I: Przełącza interfejs w tryb monitora.
  • -P: Nie przełącza interfejsu w tryb rozwiązły.
  • -f plik: Dane wyjściowe są przechowywane we wskazanym przez nas pliku.
  • -h: Wyświetla pomoc do jego użycia.

Jeśli chcemy zobaczyć wszystkie dostępne parametry, w Linuksie używamy:

 człowiek tcpdump
Korzystanie z tego polecenia jest pełniejsze niż pomoc oferowana przez parametr -h lub --Wsparcie, który pokaże nam tylko:

Zobaczymy 10 przykładów, aby rozpocząć korzystanie z tego potężnego narzędzia.

NotatkaW prawie wszystkich przykładach zobaczysz, że sudo jest używane przed tcpdump, jak wspomniano wcześniej, konieczne jest uruchomienie go z wysokimi uprawnieniami, jeśli używasz terminala jako root, nie ma potrzeby umieszczania czegokolwiek przed tcpdump. Jeśli chcesz zatrzymać przechwytywanie, możesz połączyć klawisze:

CTRL + C

Przykład 1
Najprostszy przykład z wykorzystaniem parametru -DO. W tym celu wykonujemy:

 tcpdump -A

Zobaczmy przykład z większą zawartością.

Przykład 2
Teraz przefiltrujemy według hosta i dodamy tryb szczegółowy z parametrem -v:

 sudo tcpdump host 192.168.66.130 -v
Poniżej znajduje się obraz za pomocą powyższego polecenia:

Dla obrazu zrobiłem ping z innej maszyny, więc możemy zobaczyć ICMP. Przejdźmy do trzeciego przykładu.

Przykład 3
W tym przykładzie przyjrzymy się pakietom z tego samego hosta, tylko tym razem pakiety związane z portem 80:

 sudo tcpdump host 192.168.66.130 i port 80 -v
Jeśli spojrzymy na przechwycenie, zobaczymy coś podobnego do tego:

Możesz zobaczyć, jak łatwe w obsłudze jest to narzędzie, przejdźmy dalej.

Przykład 4
Użyjemy przykładu 3 i będziemy go modyfikować, chcemy filtrować pakiety o źródle 192.168.66.130, które trafiają na port 80:

 sudo tcpdump src host 192.168.66.130 i dst port 80 -v
Widzimy, że użyliśmy warunkowego i aby oba warunki zostały spełnione, możemy również użyć lub, jeśli chcemy, aby był spełniony tylko jeden z nich. Jeśli spojrzymy na zrzuty ekranu, zobaczymy żądanie POST.

Przechodzimy do piątego przykładu.

Przykład 5
Zamierzamy przechwycić pakiety wskazujące interfejs:

 sudo tcpdump -i pl33
NotatkaTwój interfejs to prawdopodobnie eth0, możesz to zobaczyć za pomocą polecenia ifconfig, ale również z parametrem -D tcpdump zadziała u nas, zobaczymy to w poniższym przykładzie.

Poniżej możesz zobaczyć obraz przechwytywania.

Przejdźmy do następnego.

Przykład 6
W tym przykładzie jedyne, co zamierzamy zrobić, to pokazać dostępne interfejsy, w tym celu wykonujemy:

 tcpdump -D
W tym przypadku nie trzeba być rootem.

Kontynuujmy.

Przykład 7
Chcemy przechwycić 3 pakiety przeznaczone dla portu 1987 i gdy to nastąpi, zatrzymaj program:

 sudo tcpdump -c 3 port dst 1987
Na poniższym obrazku widać, że przechwytywane są tylko 3 pakiety:

Zobaczmy jeszcze kilka przykładów.

Przykład 8
Gdy jesteśmy zainteresowani uzyskaniem wszystkich pakietów ruchu tcp, które nie trafiają na określony port, na przykład port 80, wykonamy następujące czynności:

 sudo tcpdump nie port 80 i tcp
Dane wyjściowe są podobne, więc w tym przykładzie nie ustawiono przechwytywania. Przejdźmy do przedostatniego przykładu.

Przykład 9
Zamierzamy przechwycić 2 pakiety określonego interfejsu i pokażemy je w formacie szesnastkowym, w tym celu musimy wykonać:

 sudo tcpdump -i ens33 -x -c 2
Poniżej możesz zobaczyć wynik:

Przejdźmy teraz do ostatniego przykładu samouczka.

Przykład 10
W tym przykładzie zapiszemy przechwycony plik w pliku, aby móc go później przejrzeć. Przechwytywanie jest ograniczone do 3 pakietów i określony jest interfejs, więc wykonamy:

 sudo tcpdump -w test.pcap -i ens33 -c 3
Zobaczmy zrzut ekranu:

Jeśli chcemy teraz przeczytać ten plik, musimy wykonać:

 tcpdump -r test.pcap
Widzimy to na poniższym obrazku:

Samouczek dotyczący tcpdump zaszedł tak daleko, ma wiele możliwości i wiele opcji, więc aby nauczyć się dobrze obsługiwać to narzędzie, najlepiej ćwiczyć i stopniowo odkrywać wszystkie jego funkcje. Możesz również przeczytać coś o narzędziu netcat, więc oto link do samouczka z przykładami:

Jak korzystać z netcata

Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave