Linux jest wyposażony w mnóstwo narzędzi sieciowych do wyboru. tcpdump jest jednym z takich potężnych narzędzi sieciowych, które może przechwytywać i analizować ruch sieciowy, jeśli zajdzie potrzeba rozwiązywania problemów z siecią w systemie Linux.
Zapoznajmy się z poleceniem tcpdump i dowiedzmy się, jak go używać do przechwytywania ruchu sieciowego.
Instalowanie tcpdump w systemie Linux
tcpdump zwykle jest fabrycznie instalowany z wszystkie główne dystrybucje Linuksa i alternatywy oparte na zabezpieczeniach. Powinieneś więc móc go użyć od razu, wpisując tcpdump z sudo prefiks.
Jeśli nie możesz uruchomić polecenia tcpdump i utknąłeś na „tcpdump: nie znaleziono polecenia" błąd, nauczmy się, jak zainstalować tcpdump na komputerze z systemem Linux.
Aby zainstalować tcpdump, uruchom terminal i uruchom polecenie odpowiadające aktualnie używanej dystrybucji Linuksa:
W pochodnych Debiana/Ubuntu uruchom:
sudo apt-Dostawać zainstaluj tcpdump
Na Systemy oparte na łuku, biegać:
sudo pacman -S tcpdump
Aby zainstalować narzędzie tcpdump w Fedorze, CentOS i RHEL, wydaj następujące polecenie:
sudo dnf zainstalować tcpdump
Pamiętaj, że jeśli zostaniesz poproszony o zainstalowanie libcap, Wpisz TAk lub Tak ponieważ jest to główna zależność, bez której tcpdump odmówi uruchomienia. Powinno to zainstalować narzędzie tcpdump i rozwiązać błąd „nie znaleziono polecenia”.
Teraz, gdy tcpdump został zainstalowany w twoim systemie, przyjrzyjmy się różnym opcjom i funkcjom, które oferuje.
Przechwytywanie ruchu sieciowego za pomocą tcpdump
tcpdump oferuje wiele flag do modyfikacji jego wykonania, ale może być również uruchamiany jako samodzielne polecenie. Jednak uruchomienie tcpdump bez żadnych flag lub argumentów byłoby zaniedbaniem jego pełnego potencjału. Zawsze lepiej jest użyć kilku flag, aby w razie potrzeby dostosować wykonanie i wyjście.
Wpisz to polecenie, aby monitorować transmisje sieciowe za pomocą tcpdump:
sudo tcpdump
Teraz tcpdump zacznie automatycznie przechwytywać pakiety sieciowe, dopóki sygnał przerwania jest wysyłany z Ctrl + Z ręcznie przerwać proces. Aby ograniczyć całkowitą liczbę przechwyconych pakietów, użyj -c flagę i wpisz obok niej żądany limit pakietów:
sudo tcpdump -c 5
Jeśli nie możesz teraz zrozumieć wyników, musisz zapoznaj się z formatem wyjściowym tcpdump pierwszy.
Sprawdź dostępne interfejsy sieciowe za pomocą tcpdump
Domyślnie tcpdump przechwytuje ruch z dowolnego z dostępnych interfejsów sieciowych. Jeśli używasz wielu aktywnych interfejsów sieciowych, możesz zdefiniować interfejs sieciowy, z którego tcpdump powinien przechwytywać pakiety. Aby uruchomić tcpdump na określonym interfejsie, musisz najpierw poznać nazwę interfejsu.
Oto jak wyświetlić listę wszystkich dostępnych interfejsów sieciowych za pomocą tcpdump:
sudo tcpdump -D
Lub możesz dodać --lista-interfejsów flaga do polecenia:
sudo tcpdump --lista-interfejsy
Zwrócone dane wyjściowe zawierają listę wszystkich aktywnych interfejsów sieciowych, których może nasłuchiwać tcpdump. Aby skonfigurować tcpdump do przechwytywania transmisji z określonego interfejsu sieciowego, wpisz następujące polecenie:
sudo tcpdump -i identyfikator_interfejsu
Lub możesz dodać --interfejs flaga do polecenia:
sudo tcpdump --interfejsidentyfikator_interfejsu
Teraz, gdy przechwyciliśmy kilka pakietów, przyjrzyjmy się im uważnie i dowiedzmy się, jak dostosować dane wyjściowe, aby były bardziej czytelne.
Odkrywanie filtrów tcpdump
tcpdump jest w stanie przechwycić przytłaczającą ilość ruchu w jednym przebiegu. Takie przeciążenie informacjami może zepchnąć Cię z właściwej drogi podczas badania lub rozwiązywania problemów z określonym hostem lub protokołem sieciowym.
Tutaj w grę wchodzą filtry tcpdump. Do polecenia tcpdump można dołączyć określone flagi, aby odfiltrować ruch sieciowy i przechwycić określone pakiety. Następnie możesz przechowywać te pakiety, a później analizować je, aby dotrzeć do źródła wszelkich problemów związanych z siecią. Nauczmy się używać filtrów w tcpdump.
Filtruj pakiety na podstawie używanego protokołu sieciowego
Aby filtrować pakiety przesyłane przez określony protokół, wpisz nazwę protokołu za pomocą polecenia tcpdump, a przechwyci on tylko pakiety przesyłane przez zdefiniowany protokół sieciowy.
Na przykład, aby przechwycić pakiety oparte na protokole ICMP, wystarczy po prostu dołączyć icmp na końcu polecenia tcpdump. Proces jest taki sam, jeśli chcesz przechwytywać tylko pakiety UDP lub TCP.
sudo tcpdump -c 5 icmp
To polecenie zwróci dane wyjściowe tylko w przypadku wymiany danych za pośrednictwem protokołu ICMP.
Filtruj pakiety na podstawie hosta
Możesz skonfigurować tcpdump do przechwytywania pakietów związanych z pojedynczym hostem za pomocą gospodarz parametr. Jest to szczególnie przydatne, gdy działają wszystkie systemy w Twojej sieci z wyjątkiem jednego. Ten filtr umożliwia przeprowadzenie ukierunkowanego dochodzenia i przyspiesza ogólny przepływ pracy przy rozwiązywaniu problemów, ponieważ nie rozpraszają Cię niepotrzebne dane.
Aby przechwytywać pakiety związane z określonym hostem, zdefiniuj adres sieciowy hosta za pomocą gospodarz parametr:
sudotcpdump-c 5 gospodarz 192.168.2.1
Podobnie jak w przypadku filtru protokołu sieciowego, to polecenie zwróci dane wyjściowe tylko wtedy, gdy trwająca transmisja jest związana ze zdefiniowanym hostem.
Filtruj pakiety na podstawie aktywnego portu
tcpdump jest wyposażony w parametr, który pozwala filtrować ruch sieciowy i przechwytywać tylko te pakiety, które są przesyłane do lub z określonego portu.
Aby przechwytywać pakiety przychodzące z określonego portu, dołącz Port do polecenia tcpdump i zdefiniuj numer portu obok. Na przykład, aby przechwycić każdy przychodzący lub wychodzący ruch HTTP, zdefiniuj port 80:
sudo tcpdump -c 5 portów 80
tcpdump będzie nasłuchiwał na porcie 80, czekając na transmisje HTTP. Gdy wykryje pakiety HTTP w sieci, przechwyci je.
Połącz filtry razem w celu zaawansowanego sortowania
Poprzednie sekcje omawiały, jak filtrować ruch na podstawie portu, protokołu lub hosta, ale co jeśli chciałeś przechwycić ruch z jednego portu określonego hosta przy użyciu określonej sieci protokół? Cóż, masz szczęście, ponieważ jest to możliwe, co wynika z możliwości używania operatorów logicznych z poleceniem tcpdump.
Aby przechwycić pakiety z pojedynczego hosta za pomocą portu 443, użyj tego polecenia:
sudotcpdump-c 5 gospodarz 192.168.2.1orazPort 443
Sprawdź zawartość przechwyconych pakietów
Domyślnie tcpdump wyświetla nagłówki pakietu w danych wyjściowych. Chociaż w większości przypadków jest to więcej niż wystarczające, czasami możesz chcieć lub potrzebować dokładniejszego przyjrzenia się przechwyconym danym. Możesz przekazać pewne parametry za pomocą polecenia tcpdump, aby sprawdzić zawartość przechwyconego pakietu.
Oto jak wyświetlić zawartość pakietów:
sudo tcpdump -c 5 -x
To polecenie zwraca szesnastkową wersję zawartości przechwyconego pakietu. Jeśli chcesz wyświetlić formularz ASCII danych, możesz przekazać -A parametr z:
sudo tcpdump -A
Zapisz wynik tcpdump do pliku
Jak prawie każde inne narzędzie wiersza poleceń Linuksa, możesz przechowywać dane wyjściowe utworzone przez tcpdump w pliku, do którego można się później odwołać.
Można to zrobić, dodając -w flaga do polecenia. Po wykonaniu tcpdump zapisze przechwycone dane w .pcap plik, który można później przeanalizować za pomocą tcpdump lub innych narzędzi do monitorowania sieci, takich jak Wireshark.
Wpisz to polecenie, aby zapisać dane wyjściowe polecenia tcpdump w pliku:
sudotcpdump-wzdobyć.pcap
Aby przeczytać .pcap pliku, możesz użyć tcpdump z -r parametr:
sudotcpdump-rzdobyć.pcap
Linux jest dostarczany z mnóstwem narzędzi sieciowych, które mogą rozwiązać każdy problem z siecią, o ile dotyczy to oprogramowania. Umiejętność korzystania z kilku najlepszych narzędzi sieciowych w Linuksie z pewnością się przyda, niezależnie od tego, czy jesteś administratorem zarządzającym sieciami na życie, czy tylko zwykłym użytkownikiem Linuksa.
Ponieważ rzeczywista lista dostępnych poleceń sieciowych może być zbyt długa, aby pojąć, oto lista niektórych z najważniejszych narzędzi sieciowych Linuksa, które powinieneś znać.