Hoe netwerkactiviteit op een Linux-systeem te monitoren

Er zijn vele redenen waarom u de netwerkactiviteit op uw Linux-systeem zou willen monitoren. Misschien ben je een netwerkprobleem aan het oplossen, misschien wil je controleren of er geen kwaadaardige applicaties zijn die verdachte netwerkactiviteit creëren, of misschien wil je gewoon weten of er processen zijn die naar huis bellen. Wat de reden ook is, hier zijn een paar methodes om te zien welke processen op uw systeem bezig zijn met netwerkactiviteit en met wie ze communiceren.

In deze tutorial leert u:

  • Hoe u netwerkverbindingen en luisterdiensten kunt controleren met netstat
  • Hoe u netwerkverbindingen en luisterdiensten kunt controleren met lsof
  • Hoe u netwerkverbindingen en luisterdiensten kunt controleren met ifconfig
  • Welke hulpmiddelen u kunt gebruiken om de gegevens te onderzoeken die die over het netwerk worden verzonden

Hoe netwerkactiviteit te controleren op een Linux systeem

Softwarevereisten en gebruikte conventies

Softwarevereisten en Linux Command Line Conventions
Categorie Eisen, Conventies of gebruikte softwareversie
Systeem Distributie-onafhankelijk
Software netstat, lsof, ifconfig, wireshark, tcpdump
Anderen Privileged toegang tot uw Linux systeem als root of via het sudo commando.
Conventions # – vereist dat gegeven Linux commando’s worden uitgevoerd met root privileges, ofwel direct als root gebruiker ofwel door gebruik te maken van sudo commando
$ – vereist dat gegeven Linux commando’s worden uitgevoerd als gewone gebruiker zonder privileges

Netstat

Netstat is een krachtig hulpprogramma dat netwerkverbindingen kan afdrukken, routing tabellen, interface statistieken, masquerade verbindingen, en multicast lidmaatschappen. We zullen het gebruiken om het eerste te bereiken.

Netstat installeren

Op Debian en Debian-gebaseerde systemen zoals Ubuntu, gebruikt u apt.

# apt install net-tools

Op Red Hat Enterprise Linux en Red Hat-gebaseerde systemen, gebruikt u yum,

# yum install net-tools

Op Arch-gebaseerde systemen, gebruikt u pacman.

# pacman -S net-tools
Op zoek naar Linux Systems Analyst !
Het UAF Geophysical Institute is op zoek naar een ervaren Linux Systems Analyst om hun team van cyberinfrastructuuranalisten en -ingenieurs voor onderzoek te versterken. LOCATIE: Fairbanks, Alaska, USA
APPLY NOW
NOTE
In de volgende voorbeelden gebruiken we een verse installatie van RHEL 8 draaiend in VirtualBox met geïnstalleerde gasttoevoegingen

Bekijk luisterende processen

Laten we eerst de processen bekijken die luisteren voor verbindingen. Voer daartoe het volgende commando in.

$ sudo netstat -tulpen

In dit commando geeft t TCP verbindingen weer, u geeft UDP-verbindingen weer, l toont alleen luisterende sockets, p toont het programma waartoe de verbinding behoort, e toont uitgebreide informatie, en n geeft adressen, gebruikers, en poorten numeriek weer.

netstat -tulpen uitvoer

In het licht van het client-server model waarop de meeste netwerksoftware is gebaseerd, kunnen luisterende processen worden gezien als software die in “server”-modus verkeert. Er is niets verrassends aan de uitvoer gezien onze opstelling. Dit zijn alle processen waarvan u zou verwachten dat ze luisteren naar netwerkverbindingen op een verse installatie van RHEL 8 die draait inVirtualBox.
Voor elk luisterend proces kunt u het protocol zien dat wordt gebruikt, het lokale adres en de poort waarop het luistert, de gebruiker onder wie het draait en de PID/Programmanaam. Er is een belangrijk onderscheid dat hier moet worden opgemerkt. Voortcp4/udp4verbindingen (gewoon vermeld alstcpenudp) waar deLocal Addressvermeld staat als0.0.0.0luistert het proces naar verbindingen van elke machine die er via het netwerk verbinding mee kan maken, terwijl wanneer het vermeld staat als127.0.0.1het alleen luistert naar verbindingen op de localhost (de machine waar het op draait of zichzelf) en er geen verbinding mee gemaakt kan worden door andere computers op het netwerk. Hetzelfde onderscheid geldt voortcp6/udp6bij vergelijking van eenLocal Addressvan::(netwerk gericht) en::1(alleen localhost).

Bekijk alle netwerk verbindingen

Nu laten we eens kijken naar alle huidige netwerk verbindingen. Om dit te doen voert u het volgende commando in, dat vergelijkbaar is met het vorige, behalve dat we -a gebruiken om alle sockets te bekijken in plaats van -l om alleen de luisterende sockets te bekijken.

$ sudo netstat -atupen

Naast dat dit commando ons laat zien welke software als “server” luistert naar verbindingen, laat het ons ook de huidige verbindingen met die software zien en alle bestaande netwerkverbindingen die we hebben met software die als “client” fungeert, zoals een webbrowser.

netstat -atupen output

In de schermafdruk ziet u 2 verbindingen in deESTABLISHEDstatus. Ook hier zijn er geen verrassingen. Eén ervan is van NetworkManager en werkt als een DHCP client om netwerken mogelijk te maken vanaf de gateway server (In dit geval, de host machine). De andere is een SSH verbinding naar de machine die we maakten na het port forwarden van de ssh service met VirtualBox. Hadden we hier iets onverwachts gezien, dan kan dat reden zijn voor verder onderzoek.

Bekijk gevestigde verbindingen

Je kan in een situatie komen waar je alleen de ESTABLISHED verbindingen wil bekijken. Dit is zo eenvoudig als het pipen van de uitvoer van netstat naar grep zoals dit.

$ sudo netstat -atupen | grep ESTABLISHED

sudo netstat -atupen | grep ESTABLISHED uitvoer

We voerden het bovenstaande commando in na het navigeren naar wikipedia.com in firefox en de schermafbeelding toont de verbindingen die door firefox tot stand zijn gebracht bij het bereiken van de site. Zoals u kunt zien zijn er vier servers waarmee firefox verbinding heeft gemaakt; 91.198.174.192, 172.217.23.100, 216.58.215.67, en 104.111.215.142. Om te zien tot wie deze servers behoren, kunnen we de ip-adressen met whois als volgt opvragen.

$ whois 91.198.174.192| less

Doen we dit voor elk van hen, dan blijkt dat ze respectievelijk behoren tot Wikimedia, Google, Google, en Akamai. Dit is logisch aangezien Wikimedia eigenaar en host van wikipedia is en het heel gebruikelijk is voor sites om bronnen te laden die worden gehost op servers van Google en Akamai. Onderzoek van de broncode van de wikipedia homepage onthult dat het de Google Play Store app-badge van google.com en de Apple AppStore app-badge van apple.com laadt.
Navigeren naar de url’s voor deze 2 app-badges individueel en het bovenstaande netstat-commando uit te voeren, verifieert inderdaad dat ze worden gehost op servers die eigendom zijn van Google en Akamai respectievelijk.

Als dit je interesse in netstat heeft gewekt, dan hebben we een artikel dat je kunt lezen om meer te leren over het gebruik van het netstat commando

ss

Het netstat commando is lang een favoriet van sysadmins geweest, maar het is onlangs vervangen door het ss commando dat er prat op gaat sneller, eenvoudiger en beter leesbaar te zijn dan netstat. Laten we eens kijken hoe we dezelfde acties kunnen uitvoeren als hierboven met ss. Ss heeft ook een -e optie om uitgebreide informatie te bekijken, maar die optie is weggelaten uit de voorbeelden hieronder omdat het extra informatie produceert die kan resulteren in minder leesbare uitvoer.

Bekijk luisterende processen

Om alle luisterende processen te bekijken voert u het volgende in.

$ sudo ss -tlunp

In dit commando geeft t TCP verbindingen weer, l geeft alleen luisterende sockets weer, u geeft UDP-verbindingen weer, n geeft adressen, gebruikers en poorten numeriek weer, en p geeft het programma aan waartoe de verbinding behoort.

Bekijk alle netwerkverbindingen

Om alle netwerkverbindingen te bekijken voert u het volgende in, waarbij a l vervangt en alle netwerk sockets toont, niet alleen de luisterende.

$ sudo ss -taunp

Bekijk gevestigde verbindingen

Als -a of -l niet zijn opgenomen dan zal ss alleen gevestigde verbindingen tonen. Om alleen opgezette verbindingen te zien, voert u het volgende in.

$ sudo ss -tunp

lsof

Voor het geval netstat en ss niet genoeg voor u waren, presenteren we lsof. Lsof wordt gebruikt om open bestanden op te sommen. GNU/Linux heeft het UNIX ontwerp principe geërfd dat alles een bestand is; dit geldt ook voor netwerk verbindingen. Als gevolg hiervan kan lsof worden gebruikt om netwerkactiviteit te bekijken op een manier die vergelijkbaar is met de eerder genoemde commando’s.

Bekijk alle netwerkverbindingen

Om alle netwerkverbindingen te bekijken voert u het volgende in.

$ sudo lsof -nP -i

In dit commando geeft n de adressen numeriek weer, P de poorten numeriek, en i onderdrukt de lijst van alle open bestanden die niet als netwerkbestanden worden beschouwd.

Bezichtig gevestigde verbindingen

Om alleen gevestigde verbindingen weer te geven, voert u het volgende in waarbij de extra schakelaars alle gevestigde TCP verbindingen weergeven.

$ sudo lsof -nP -iTCP -sTCP:ESTABLISHED

Bekijk luisterende processen

Om luisterende processen met lsof te bekijken, voert u het volgende in.

$ sudo lsof -nP -iTCP -sTCP:LISTEN

Dit zal alle processen missen die over UDP luisteren, dus het kan wenselijk zijn om in plaats daarvan het volgende in te voeren om die ook op te nemen.

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

Monitoren van gegevens die over het netwerk worden verzonden

We hebben gezien hoe netstat, ss, en ifconfig kunnen worden gebruikt om te monitoren welke netwerkverbindingen er worden gemaakt en naar wie, maar het is vaak wenselijk om precies te zien welke gegevens er over het netwerk worden verzonden. Om dit doel te bereiken hebben we applicaties nodig die in staat zijn om pakketten te sniffen. Twee programma’s die zich hierin specialiseren zijn tcpdump en wireshark.
We hebben eerder gidsen geschreven over hoe wireshark te installeren op RHEL 8, The Basics of network protocol analyzer Wireshark On Linux, Filtering Packets In Wireshark on Kali Linux, en de Network Monitoring sectie van Linux system and hardware monitoring made efficient bevat een aardige introductie tot tcpdump.

Conclusion

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.