Jak monitorować aktywność sieciową w systemie Linux

Istnieje wiele powodów, dla których możesz chcieć monitorować aktywność sieciową w swoim systemie Linux. Możesz rozwiązywać problem z siecią, możesz chcieć sprawdzić, czy nie ma złośliwych aplikacji tworzących podejrzaną aktywność sieciową, lub po prostu chcesz wiedzieć, czy jakieś procesy dzwonią do domu. Niezależnie od powodu, oto kilka metod, aby sprawdzić, które procesy w systemie są zaangażowane w aktywność sieciową i z kim się komunikują.

W tym poradniku nauczysz się:

  • Jak monitorować połączenia sieciowe i usługi nasłuchujące za pomocą netstat
  • Jak monitorować połączenia sieciowe i usługi nasłuchujące za pomocą lsof
  • Jak monitorować połączenia sieciowe i usługi nasłuchujące za pomocą ifconfig
  • Jakich narzędzi możesz użyć do zbadania danych przesyłanych przez sieć

Jak monitorować aktywność sieciową w systemie Linux

Wymagania dotyczące oprogramowania i używane konwencje

Wymagania dotyczące oprogramowania i konwencje wiersza poleceń systemu Linux
Kategoria Wymagania, Konwencje lub używane wersje oprogramowania
System Niezależne od dystrybucji
Oprogramowanie netstat, lsof, ifconfig, wireshark, tcpdump
Inne Przywilejowany dostęp do systemu Linux jako root lub przez polecenie sudo.
Zastrzeżenia # – wymaga, aby dane polecenia linuksowe były wykonywane z uprawnieniami roota albo bezpośrednio jako użytkownik root, albo przez użycie polecenia sudo
$ – wymaga, aby dane polecenia linuksowe były wykonywane jako zwykły nieuprzywilejowany użytkownik

Netstat

Netstat jest potężnym narzędziem, które może drukować połączenia sieciowe, tablic routingu, statystyk interfejsów, połączeń maskaradowych i członkostwa w multicastach. Będziemy go używać do osiągnięcia tego pierwszego.

Instalacja Netstat

W Debianie i systemach opartych na Debianie, takich jak Ubuntu, użyj apt.

# apt install net-tools

W Red Hat Enterprise Linux i systemach opartych na Red Hat użyj yum,

# yum install net-tools

W systemach opartych na Arch użyj pacman.

# pacman -S net-tools
Poszukiwany Analityk Systemów Linuksowych !
Instytut Geofizyczny UAF, poszukuje doświadczonego Analityka Systemów Linuksowych, który dołączy do zespołu analityków i inżynierów zajmujących się cyber infrastrukturą badawczą. LOKALIZACJA: Fairbanks, Alaska, USA
APPLY NOW
UWAGA
W poniższych przykładach używamy świeżej instalacji RHEL 8 uruchomionej w VirtualBox z zainstalowanymi dodatkami gościa

Wyświetl procesy nasłuchujące

Po pierwsze, wyświetlmy procesy, które nasłuchują połączeń. W tym celu wprowadź następujące polecenie.

$ sudo netstat -tulpen

W tym poleceniu t wyświetla TCP połączeń, u wyświetla połączenia UDP, l pokazuje tylko nasłuchujące gniazda, p pokazuje program, do którego należy połączenie,e pokazuje informacje rozszerzone, a n reprezentuje adresy, użytkowników i porty numerycznie.

netstat -tulpen output

Rozważając model klient-serwer, na którym opiera się większość oprogramowania sieciowego, o procesach nasłuchujących można myśleć jak o oprogramowaniu pracującym w trybie „serwera”. Nie ma w tym nic zaskakującego, biorąc pod uwagę naszą konfigurację. Są to wszystkie procesy, które powinny nasłuchiwać połączeń sieciowych na świeżej instalacji RHEL 8 działającej wVirtualBox.
Dla każdego procesu nasłuchującego możesz zobaczyć używany protokół, adres lokalny i port, na którym nasłuchuje, użytkownika, pod którym działa oraz nazwę PID/programu. Jest jedno ważne rozróżnienie, na które należy zwrócić uwagę. Dla połączeńtcp4/udp4(po prostu wymienionych jakotcpiudp), gdyLocal Addressjest wymieniony jako0.0.0.0proces nasłuchuje połączeń z każdej maszyny, która jest w stanie połączyć się z nim przez sieć, podczas gdy gdy jest wymieniony jako127.0.0.1nasłuchuje tylko połączeń na localhost (maszyna, na której jest uruchomiony lub on sam) i nie może być połączony z innymi komputerami w sieci. To samo rozróżnienie jest prawdziwe dlatcp6/udp6przy porównywaniuLocal Addressz::(network facing) i::1(localhost only).

Wyświetl wszystkie połączenia sieciowe

Przyjrzyjrzyjmy się teraz wszystkim bieżącym połączeniom sieciowym. Aby to zrobić wprowadź następującą komendę, która jest podobna do poprzedniej z tą różnicą, że używamy -a aby wyświetlić wszystkie gniazda zamiast -l aby wyświetlić tylko gniazda nasłuchujące.

$ sudo netstat -atupen

Oprócz pokazania nam jakie oprogramowanie nasłuchuje połączeń jako „serwery”, ta komenda pokazuje nam również aktualnie ustanowione połączenia z tym oprogramowaniem oraz wszelkie ustanowione połączenia sieciowe jakie mamy używając oprogramowania działającego jako „klient” takiego jak przeglądarka internetowa.

netstat -atupen output

Na zrzucie ekranu widać 2 połączenia w stanieESTABLISHED. Po raz kolejny, nie ma tu żadnych niespodzianek. Jedno z nich należy do NetworkManager i działa jako klient DHCP, aby umożliwić połączenie z serwerem bramy (w tym przypadku, z maszyną hosta). Drugi to połączenie SSH z maszyną, które nawiązaliśmy po przekierowaniu portu usługi ssh z VirtualBoxa. Gdybyśmy zobaczyli tutaj coś nieoczekiwanego to może to być powód do dalszego dochodzenia.

Wyświetl ustanowione połączenia

Możesz znaleźć się w sytuacji, w której chcesz zobaczyć tylko ESTABLISHED połączeń. Jest to tak proste, jak przesłanie wyjścia netstat do grep w następujący sposób.

$ sudo netstat -atupen | grep ESTABLISHED

sudo netstat -atupen | grep ESTABLISHED output

Wprowadziliśmy powyższe polecenie po przejściu do wikipedia.com w firefoxie i zrzut ekranu przedstawia połączenia nawiązane przez firefoxa po wejściu na stronę. Jak widać są cztery serwery, z którymi połączył się firefox: 91.198.174.192, 172.217.23.100, 216.58.215.67 i 104.111.215.142. Aby zobaczyć do kogo należą te serwery możemy sprawdzić ich adresy IP w whois w następujący sposób.

$ whois 91.198.174.192| less

Wykonanie tej operacji dla każdego z nich ujawnia, że należą one odpowiednio do Wikimedia, Google, Google i Akamai. Ma to sens, biorąc pod uwagę, że Wikimedia jest właścicielem i gospodarzem wikipedii, a bardzo często zdarza się, że strony ładują zasoby, które są hostowane na serwerach należących do Google i Akamai. W rzeczywistości, badanie kodu źródłowego strony głównej wikipedii ujawnia, że ładuje ona plakietkę aplikacji Google Play Store z google.com i plakietkę aplikacji Apple AppStore z apple.com.
Przejście do adresów URL tych dwóch plakietek indywidualnie i wydanie powyższego polecenia netstat rzeczywiście weryfikuje, że są one hostowane na serwerach należących odpowiednio do Google i Akamai.

Jeśli to wzbudziło twoje zainteresowanie netstat to mamy artykuł, który możesz przeczytać, aby dowiedzieć się więcej o używaniu polecenia netstat

ss

Polecenie netstat od dawna jest ulubionym poleceniem sysadminów, jednak ostatnio zostało zastąpione przez polecenie ss, które szczyci się tym, że jest szybsze, łatwiejsze i bardziej czytelne niż netstat. Zobaczmy, jak wykonać te same czynności, które zostały wykonane powyżej przy użyciu ss. Polecenie Ss ma również opcję -e umożliwiającą wyświetlenie rozszerzonych informacji, ale opcja ta została pominięta w poniższych przykładach, ponieważ generuje ona dodatkowe informacje, które mogą skutkować mniej czytelnymi danymi wyjściowymi.

Wyświetl procesy nasłuchujące

Aby wyświetlić wszystkie procesy nasłuchujące, wpisz następujące polecenie.

$ sudo ss -tlunp

W tym poleceniu t wyświetla TCP połączeń, l pokazuje tylko nasłuchujące gniazda, u wyświetla połączenia UDP, n przedstawia adresy, użytkowników i porty numerycznie, a p pokazuje program, do którego należy połączenie.

Wyświetl wszystkie połączenia sieciowe

Aby wyświetlić wszystkie połączenia sieciowe, wpisz następujące polecenie, gdzie a zastępuje l i pokazuje wszystkie gniazda sieciowe, a nie tylko nasłuchujące.

$ sudo ss -taunp

Wyświetl ustanowione połączenia

Jeśli -a lub -l nie są dołączone, to polecenie ss pokaże tylko ustanowione połączenia. Aby wyświetlić tylko ustanowione połączenia, wpisz następujące polecenie.

$ sudo ss -tunp

lsof

Na wypadek gdyby netstat i ss nie były dla ciebie wystarczające, przedstawiamy lsof. Lsof jest używany do listowania otwartych plików. GNU/Linux odziedziczył po UNIX-ie zasadę, że wszystko jest plikiem; dotyczy to również połączeń sieciowych. W rezultacie, lsof może być użyty do przeglądania aktywności sieciowej w sposób podobny do wyżej wymienionych poleceń.

Wyświetl wszystkie połączenia sieciowe

Aby wyświetlić wszystkie połączenia sieciowe wpisz następujące polecenie.

$ sudo lsof -nP -i

W tym poleceniu n reprezentuje adresy numerycznie, P reprezentuje porty numerycznie, a i wyłącza listing wszelkich otwartych plików, które nie są uważane za pliki sieciowe.

Wyświetl ustanowione połączenia

Aby wyświetlić tylko ustanowione połączenia wprowadź następujące polecenie, gdzie dodatkowe przełączniki wymieniają wszystkie ustanowione TCP połączenia.

$ sudo lsof -nP -iTCP -sTCP:ESTABLISHED

Wyświetl procesy nasłuchujące

Aby wyświetlić procesy nasłuchujące przy użyciu lsof wpisz poniższy tekst.

$ sudo lsof -nP -iTCP -sTCP:LISTEN

To pominie wszelkie procesy nasłuchujące przez UDP, więc może być pożądane, aby zamiast tego wpisać poniższy tekst, aby również je uwzględnić.

$ sudo lsof -nP -i | grep 'LISTEN\|UDP'

Monitorowanie danych wysyłanych przez sieć

Widzieliśmy, jak netstat, ss i ifconfig mogą być użyte do monitorowania, jakie połączenia sieciowe są wykonywane i do kogo, ale często pożądane jest, aby zobaczyć dokładnie, jakie dane są wysyłane przez sieć. Aby osiągnąć ten cel, potrzebujemy aplikacji, które są zdolne do sniffowania pakietów. Dwa programy, które specjalizują się w tej dziedzinie, to tcpdump i wireshark.
Poprzednio napisaliśmy przewodniki na temat instalacji programu wireshark w systemie RHEL 8, podstaw analizatora protokołów sieciowych Wireshark w systemie Linux, filtrowania pakietów w programie Wireshark w systemie Kali Linux, a sekcja Network Monitoring monitorowania systemu Linux i sprzętu, która stała się wydajna, zawiera niezłe wprowadzenie do programu tcpdump.

Wniosek

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.