Hur man övervakar nätverksaktivitet på ett Linuxsystem

Det finns många anledningar till varför du vill övervaka nätverksaktiviteten på ditt Linuxsystem. Du kanske felsöker ett nätverksproblem, du kanske vill kontrollera att det inte finns några skadliga program som skapar misstänkt nätverksaktivitet, eller så vill du helt enkelt veta om det är några processer som ringer hem. Oavsett orsaken finns här några metoder för att se vilka processer på ditt system som har nätverksaktivitet och vem de kommunicerar med.

I den här handledningen lär du dig:

  • Hur man övervakar nätverksanslutningar och lyssnande tjänster med netstat
  • Hur man övervakar nätverksanslutningar och lyssnande tjänster med lsof
  • Hur man övervakar nätverksanslutningar och lyssnande tjänster med ifconfig
  • Vilka verktyg du kan använda för att undersöka de data som skickas över nätverket

Hur man övervakar nätverksaktivitet på ett Linuxsystem

Mjukvarukrav och konventioner som används

Mjukvarukrav och konventioner för Linuxkommandoraden
Kategori Krav, Konventioner eller programvaruversion som används
System Distributionsoberoende
Programvara netstat, lsof, ifconfig, wireshark, tcpdump
Andra Priviligierad åtkomst till ditt Linuxsystem som root eller via kommandot sudo.
Konventioner # – kräver att givna Linuxkommandon exekveras med rootprivilegier, antingen direkt som rootanvändare eller med hjälp av sudo-kommandot
$ – kräver att givna Linuxkommandon exekveras som en vanlig icke-priviligierad användare

Netstat

Netstat är ett kraftfullt verktyg som kan skriva ut nätverksförbindelser, routningstabeller, gränssnittsstatistik, maskeringsanslutningar och multicastmedlemskap. Vi kommer att använda det för att utföra det förstnämnda.

Installation av Netstat

På Debian och Debianbaserade system som Ubuntu, använd apt.

# apt install net-tools

På Red Hat Enterprise Linux och Red Hat-baserade system, använd yum,

# yum install net-tools

På Arch-baserade system, använd pacman.

# pacman -S net-tools
Söker Linux Systems Analyst !
UAF Geophysical Institute, söker en erfaren Linux Systems Analyst för att gå med i deras team av analytiker och ingenjörer inom forskning om cyberinfrastruktur. PLATS: Fairbanks, Alaska, USA
ANSÖK NU
OBS
I följande exempel använder vi en färsk installation av RHEL 8 som körs i VirtualBox med gästtillägg installerade

Visa lyssnande processer

Först ska vi visa de processer som lyssnar efter anslutningar. För att göra det så ange följande kommando:

$ sudo netstat -tulpen

I det här kommandot visar t TCP anslutningar, u visar UDP-anslutningar, l visar endast lyssnande sockets, p visar det program som anslutningen tillhör,e visar utökad information och n representerar adresser, användare och portar numeriskt.

netstat -tulpen output

När man tänker på den klient-server-modell som de flesta nätverksmjukvara bygger på kan lyssnande processer ses som mjukvara som är i ”server”-läge. Det finns inget överraskande i utmatningen med tanke på vår inställning. Detta är alla processer som du skulle förvänta dig att lyssna på nätverksanslutningar på en nyinstallerad RHEL 8 som körs iVirtualBox.
För varje lyssnande process kan du se vilket protokoll som används, lokal adress och port som den lyssnar på, användaren som den körs under och PID/Programnamn. Det finns en viktig skillnad att notera här. Förtcp4/udp4-anslutningar (anges helt enkelt somtcpochudp) därLocal Addressanges som0.0.0.0lyssnar processen på anslutningar från alla maskiner som kan ansluta till den via nätverket, medan när den anges som127.0.0.1lyssnar den bara på anslutningar på localhost (den maskin som den körs på eller sig själv) och kan inte anslutas till av andra datorer i nätverket. Samma distinktion gäller förtcp6/udp6när man jämför enLocal Addressav::(nätverk som vetter mot) och::1(endast localhost).

Se alla nätverksanslutningar

Nu ska vi ta en titt på alla aktuella nätverksanslutningar. För att göra detta anger du följande kommando, som liknar det föregående förutom att vi använder -a för att visa alla sockets istället för -l för att bara visa lyssnande sockets.

$ sudo netstat -atupen

Förutom att visa oss vilken mjukvara vi har som lyssnar på anslutningar som ”servrar” visar det här kommandot oss också för närvarande upprättade anslutningar till den mjukvaran och alla upprättade nätverksanslutningar som vi har med hjälp av mjukvara som agerar som ”klient”, till exempel en webbläsare.

netstat -atupen output

I skärmdumpen ser du 2 anslutningar i statusenESTABLISHED. Återigen finns det inga överraskningar här. En av dem tillhör NetworkManager och fungerar som en DHCP-klient för att aktivera nätverk från gateway-servern (i det här fallet värdmaskinen). Den andra är en SSH-anslutning till maskinen som vi gjorde efter att ha port forwardat ssh-tjänsten med VirtualBox. Om vi hade sett något oväntat här så kan det vara skäl till ytterligare undersökning.

Visa etablerade anslutningar

Du kan hamna i en situation där du bara vill visa ESTABLISHED-anslutningarna. Detta är lika enkelt som att pipa utdata från netstat till grep så här:

$ sudo netstat -atupen | grep ESTABLISHED

sudo netstat -atupen | grep ESTABLISHED output

Vi skrev in ovanstående kommando efter att ha navigerat till wikipedia.com i firefox och skärmdumpen fångar de anslutningar som etablerades av firefox när man nådde webbplatsen. Som du kan se är det fyra servrar som firefox anslöt till: 91.198.174.192, 172.217.23.100, 216.58.215.67 och 104.111.215.142. För att se vem dessa servrar tillhör kan vi fråga efter IP-adresserna med whois på följande sätt:

$ whois 91.198.174.192| less

Om vi gör det för var och en av dem visar det sig att de tillhör Wikimedia, Google, Google respektive Akamai. Detta är logiskt med tanke på att Wikimedia äger och är värd för wikipedia och att det är mycket vanligt att webbplatser laddar resurser som finns på servrar som ägs av Google och Akamai. En undersökning av källkoden för wikipedias hemsida visar att den laddar app-badge för Google Play Store från google.com och app-badge för Apple AppStore från apple.com.
Navigering till urls för dessa två app-badges var för sig och utfärdande av ovanstående netstat-kommando verifierar att de finns på servrar som ägs av Google respektive Akamai.

Om detta väckte ditt intresse för netstat så har vi en artikel du kan läsa för att lära dig mer om hur man använder netstat-kommandot

ss

Kommandot netstat har länge varit en favorit bland sysadmins, men det har nyligen ersatts av ss-kommandot som skryter med att det är snabbare, enklare och mer lättläst än netstat. Låt oss se hur man kan utföra samma åtgärder som utförts ovan med hjälp av ss. Ss har också ett -e-alternativ för att visa utökad information, men det alternativet har utelämnats från exemplen nedan eftersom det producerar ytterligare information som kan resultera i mindre läsbar utdata.

Visa lyssnande processer

För att visa alla lyssnande processer anger du följande.

$ sudo ss -tlunp

I det här kommandot visar t TCP anslutningar, l visar endast lyssnande sockets, u visar UDP-anslutningar, n representerar adresser, användare och portar numeriskt och p visar det program som anslutningen tillhör.

Visa alla nätverksanslutningar

För att visa alla nätverksanslutningar anger du följande, där a ersätter l och visar alla nätverksuttag, inte bara lyssnande uttag.

$ sudo ss -taunp

Visa etablerade anslutningar

Om -a eller -l inte är inkluderade så visar ss endast etablerade anslutningar. För att endast visa etablerade anslutningar anger du följande:

$ sudo ss -tunp

lsof

Om inte netstat och ss var tillräckliga för dig, presenterar vi lsof. Lsof används för att lista öppna filer. GNU/Linux ärvde UNIX:s konstruktionsprincip att allt är en fil; detta inkluderar nätverksanslutningar. Därför kan lsof användas för att visa nätverksaktivitet på ett sätt som liknar de tidigare nämnda kommandona.

Se alla nätverksanslutningar

För att visa alla nätverksanslutningar anger du följande.

$ sudo lsof -nP -i

I detta kommando representerar n adresserna numeriskt, P representerar portarna numeriskt och i undertrycker listningen av alla öppna filer som inte betraktas som nätverksfiler.

Visa etablerade anslutningar

För att visa endast etablerade anslutningar anger du följande där de ytterligare växlarna listar alla etablerade TCP anslutningar.

$ sudo lsof -nP -iTCP -sTCP:ESTABLISHED

Visa lyssnande processer

För att visa lyssnande processer med hjälp av lsof anger du följande.

$ sudo lsof -nP -iTCP -sTCP:LISTEN

Detta kommer att missa alla processer som lyssnar över UDP, så det kan vara önskvärt att i stället ange följande för att inkludera även dessa.

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

Övervakning av data som skickas över nätverket

Vi har sett hur netstat, ss och ifconfig kan användas för att övervaka vilka nätverksanslutningar som görs och till vem, men det är ofta önskvärt att se exakt vilken data som skickas över nätverket. För att uppnå detta mål behöver vi program som kan sniffa paket. Två program som specialiserar sig på detta område är tcpdump och wireshark.
Vi har tidigare skrivit guider om hur man installerar wireshark på RHEL 8, The Basics of network protocol analyzer Wireshark On Linux, Filtering Packets In Wireshark on Kali Linux, och Network Monitoringavsnittet Linux system och hårdvaruövervakning effektiviserat innehåller en trevlig introduktion till tcpdump.

Konklusion

Lämna ett svar

Din e-postadress kommer inte publiceras.