Jak przechwytywać i analizować pakiety na przykładzie za pomocą Tcpdump

Jak Przechwytywac I Analizowac Pakiety Na Przykladzie Za Pomoca Tcpdump



Tcpdump to potężne narzędzie do analizy sieci, które służy do analizy ruchu sieciowego w systemach Linux i macOS. Administratorzy sieci używają tcpdump do podsłuchiwania sieci, przechwytywania i analizowania pakietów TCP/IP. Wykorzystuje bibliotekę „libpcap”, która pomaga w efektywnym przechwytywaniu ruchu sieciowego. Ponadto tcpdump pomaga w rozwiązywaniu problemów z siecią i okresowym monitorowaniu aktywności sieciowej. To narzędzie przechowuje przechwycone dane w pliku „pcap”. Pliki te są dalej analizowane przy użyciu narzędzia do analizowania pakietów TCP/IP, takiego jak Wireshark, lub innego narzędzia wiersza poleceń.

W tym przewodniku pokażemy, jak zainstalować tcpdump w systemie Linux oraz jak przechwytywać i analizować pakiety TCP/IP za pomocą tcpdump.

Jak zainstalować Tcpdump

Tcpdump jest preinstalowany w wielu dystrybucjach Linuksa. Ale jeśli nie jest jeszcze zainstalowany w twoim systemie, możesz zainstalować tcpdump w swoim systemie Linux. Aby zainstalować tcpdump w systemie Ubuntu 22.04, użyj następującego polecenia:







$ sudo apt zainstaluj tcpdump

Aby zainstalować tcpdump w Fedorze/CentOS, użyj następującego polecenia:



$ sudo dnf zainstaluj tcpdump

Jak przechwycić pakiety za pomocą polecenia Tcpdump

Aby przechwycić pakiety za pomocą tcpdump, uruchom terminal z uprawnieniami sudo, używając „Ctrl+Alt+t”. To narzędzie zawiera różne opcje i filtry do przechwytywania pakietów TCP/IP. Jeśli chcesz przechwycić wszystkie pakiety przepływające przez bieżący lub domyślny interfejs sieciowy, użyj polecenia „tcpdump” bez żadnej opcji.



$ sudo tcpdump

Podane polecenie przechwytuje pakiety domyślnego interfejsu sieciowego Twojego systemu.





Po zakończeniu wykonywania tego polecenia na terminalu zostanie wyświetlona liczba wszystkich przechwyconych i przefiltrowanych pakietów.



Rozumiemy wynik.

Tcpdump umożliwia analizę nagłówków pakietów TCP/IP. Pokazuje pojedynczą linię dla każdego pakietu, a polecenie jest kontynuowane, dopóki nie naciśniesz „Ctrl+C”, aby je zatrzymać.

Każdy wiersz dostarczony przez tcpdump zawiera następujące szczegóły:

  • Znacznik czasu Uniksa (np. 02:28:57.839523)
  • Protokół (IP)
  • Źródłowa nazwa hosta lub adres IP i numer portu
  • Docelowa nazwa hosta lub adres IP i numer portu
  • Flagi TCP (np. Flagi [F.]) wskazujące stan połączenia z wartościami takimi jak S (SYN), F (FIN). (POTWIERDŹ), P (PUSH), R (RST)
  • Numer kolejny danych w pakiecie (np. sekwencja 5829:6820)
  • Numer potwierdzenia (np. potwierdzenie 1016)
  • Rozmiar okna (np. win 65535) reprezentujący dostępne bajty w buforze odbiorczym, po których następują opcje TCP
  • Długość ładunku danych (np. długość 991)

Aby wyświetlić listę wszystkich interfejsów sieciowych systemu, użyj polecenia „tcpdump” z opcją „-D”.

$ sudo tcpdump -D

Lub

$ tcpdump --interfejsy list

To polecenie wyświetla listę wszystkich interfejsów sieciowych podłączonych lub działających w systemie Linux.

Przechwytuj pakiety określonego interfejsu sieciowego

Jeśli chcesz przechwytywać pakiety TCP/IP przechodzące przez określony interfejs, użyj flagi „-i” z poleceniem „tcpdump” i podaj nazwę interfejsu sieciowego.

$ sudo tcpdump -i lo

Podane polecenie przechwytuje ruch na interfejsie „lo”. Jeśli chcesz wyświetlić pełną lub szczegółową informację o pakiecie, użyj flagi „-v”. Aby wydrukować bardziej szczegółowe informacje, użyj flagi „-vv” z poleceniem „tcpdump”. Regularne użytkowanie i analiza przyczyniają się do utrzymania solidnego i bezpiecznego środowiska sieciowego.

Podobnie możesz przechwycić ruch na dowolnym interfejsie za pomocą następującego polecenia:

$ sudo tcpdump -i dowolny

Przechwytuj pakiety przy użyciu określonego portu

Możesz przechwytywać i filtrować pakiety, określając nazwę interfejsu i numer portu. Na przykład, aby przechwycić pakiety sieciowe przechodzące przez interfejs „enp0s3” przy użyciu portu 22, użyj następującego polecenia:

$ tcpdump -i enp0s3 port 22

Poprzednie polecenie przechwytuje wszystkie pakiety płynące z interfejsu „enp0s3”.

Przechwytuj ograniczone pakiety za pomocą Tcpdump

Możesz użyć flagi „-c” z poleceniem „tcpdump”, aby przechwycić określoną liczbę pakietów. Na przykład, aby przechwycić cztery pakiety na interfejsie „enp0s3”, użyj następującego polecenia:

$ tcpdump -i enp0s3 -c 4

Zastąp nazwę interfejsu, używając swojego systemu.

Przydatne polecenia Tcpdump do przechwytywania ruchu sieciowego

Poniżej wymieniliśmy kilka przydatnych poleceń „tcpdump”, które pomogą Ci skutecznie przechwytywać i filtrować ruch sieciowy lub pakiety:

Za pomocą polecenia „tcpdump” można przechwytywać pakiety interfejsu o zdefiniowanym docelowym lub źródłowym adresie IP.

$ tcpdump -i {nazwa-interfejsu} dst {ip-docelowy}

Można przechwytywać pakiety z rozmiarem migawki wynoszącym 65535 bajtów, który różni się od domyślnego rozmiaru 262144 bajtów. W starszych wersjach tcpdump rozmiar przechwytywania był ograniczony do 68 lub 96 bajtów.

$ tcpdump -i enp0s3 -s 65535

Jak zapisać przechwycone pakiety w pliku

Jeśli chcesz zapisać przechwycone dane w pliku w celu dalszej analizy, możesz to zrobić. Przechwytuje ruch na określonym interfejsie, a następnie zapisuje go w pliku „.pcap”. Użyj następującego polecenia, aby zapisać przechwycone dane w pliku:

$ tcpdump -i -s 65535 -w .pcap

Na przykład mamy interfejs „enps03”. Zapisz przechwycone dane w następującym pliku:

$ sudo tcpdump -i enps03 -w dump.pcap

W przyszłości będziesz mógł odczytać ten przechwycony plik za pomocą Wireshark lub innych narzędzi do analizy sieci. Jeśli więc chcesz używać Wireshark do analizy pakietów, użyj argumentu „-w” i zapisz go w pliku „.pcap”.

Wniosek

W tym samouczku zademonstrowaliśmy, jak przechwytywać i analizować pakiety za pomocą protokołu tcpdump, korzystając z różnych przykładów. Dowiedzieliśmy się również, jak zapisywać przechwycony ruch w pliku „.pcap”, który można przeglądać i analizować za pomocą Wireshark i innych narzędzi do analizy sieci.