tcpdump

Een gids voor het hulpprogramma voor netwerkverkeersanalyse TCPDUMP

Een gids voor het hulpprogramma voor netwerkverkeersanalyse TCPDUMP

Tcpdump is een opdrachtregelprogramma voor het snuiven van netwerkpakketten. Het wordt het meest gebruikt voor het oplossen van problemen met netwerken en het testen van beveiligingsproblemen. Ondanks het ontbreken van een grafische gebruikersinterface, is dit het meest populaire, krachtige en veelzijdige opdrachtregelprogramma.

Het is inheems in Linux, zodat de meeste Linux-distributies het installeren als onderdeel van het standaard besturingssysteem. Tcpdump is een programma met libpcap-interface, een bibliotheek voor het vastleggen van netwerkdatagrammengram.

Dit artikel demystificeert tcpdump door te laten zien hoe vastgelegd netwerkverkeer in dit hulpprogramma kan worden vastgelegd, gelezen en geanalyseerd. We zullen later ons begrip gebruiken om datapakketten te inspecteren met de geavanceerde TCP-vlagfilters.

Tcpdump-installatie

De standaardinstallatie van Tcpdump in je distro hangt af van de opties die tijdens het installatieproces zijn geselecteerd. In het geval van een aangepaste installatie is het mogelijk dat het pakket niet beschikbaar is. U kunt de tcpdump-installatie controleren met behulp van de dpkg commando met de “-zo" keuze.

ubuntu$ubuntu:~$ dpkg -s tcpdump

Of gebruik de opdracht "sudo apt-get install tcpdump" om tcpdump te installeren in de Ubuntu Linux.

Pakketten vastleggen in Tcpdump:

Om het opnameproces te starten, moeten we eerst onze werkinterface vinden met behulp van de "ifconfig” commando. Of we kunnen alle beschikbare interfaces opsommen met behulp van de tcpdump commando met de “-D" keuze.

ubuntu$ubuntu:~$ tcpdump -D

Om het opnameproces te starten, kunt u de syntaxis gebruiken;

tcpdump [-opties] [expressie]

In de onderstaande opdracht gebruiken we bijvoorbeeld de "-ik” optie om verkeer vast te leggen op de “enp0s3”-interface, met een “-c"vlag om de vastgelegde pakketten te beperken en te schrijven"-met wiehet naar een test_capture.pcap het dossier.

ubuntu$ubuntu:~$ sudo tcpdump -i enp0s3 -c 20 -w /tmp/test_capture.pcap

Op dezelfde manier kunt u verschillende filtercombinaties gebruiken om verkeer te isoleren volgens uw vereisten. Een voorbeeld hiervan is het vastleggen van netwerkgegevens die vertrekken en aankomen bij de host met behulp van de gastheer opdracht voor een specifieke haven. Bovendien heb ik de "-nee”vlag om te voorkomen dat tcpdump DNS-lookups vastlegt. Deze vlag is erg handig bij het verzadigen van verkeer tijdens het oplossen van problemen met het netwerk.

ubuntu$ubuntu:~$ sudo tcpdump -i enp0s3 -c 20 host 10.0.2.15 en dst-poort 80 -w /tmp/test_capture1.pcap
tcpdump: luisteren op enp0s3, link-type EN10MB (Ethernet), opnamegrootte 262144 bytes
20 pakketten gevangen
21 pakketten ontvangen door filter
0 pakketten gedropt door kernel

Wij gebruiken de "en” commando om alleen pakketten vast te leggen die host 10 bevatten.0.2.15 en bestemmingspoort 80. Op dezelfde manier kunnen verschillende andere filters worden toegepast om het oplossen van problemen te vergemakkelijken.

Als u geen gebruik wilt maken van de “-c” vlag om het opnameverkeer te beperken, u kunt een onderbrekingssignaal gebruiken, i.e., Ctrl+C, om het isolatieproces te stoppen.

Tcpdump-bestanden lezen

Het lezen van door tcpdump vastgelegde bestanden kan overweldigend zijn. Standaard wijst tcp namen toe aan IP-adressen en poorten. We gebruiken de “-r”vlag om ons reeds vastgelegde bestand te lezen test_capture.pcap opgeslagen in de /tmp map. We zullen de uitvoer doorsluizen naar: awk opdracht om alleen het bron-IP-adres en de poorten uit te voeren en deze naar de opdracht te sturen hoofd om alleen de eerste 5 items weer te geven.

ubuntu$ubuntu:~$ sudo tcpdump -r /tmp/test_capture1.pcap | awk -F “ ” 'print$3' | hoofd -5
lezen uit bestand /tmp/test_capture.pcap, verbindingstype EN10MB (Ethernet)
IP ubuntu.53298
IP ubuntu.53298
IP ubuntu.53298
IP ubuntu.53298
IP ubuntu.53298

Het wordt echter aanbevolen om IP-adressen en poorten in cijfers te gebruiken om netwerkproblemen op te lossen. We zullen de IP-naamomzetting uitschakelen met de “-nee” vlag en poortnamen met “-nn“.

ubuntu$ubuntu:~$ sudo tcpdump -i enp0s3 -n
tcpdump: uitgebreide uitvoer onderdrukt, gebruik -v of -vv voor volledige protocoldecodering
luisteren op enp0s3, link-type EN10MB (Ethernet), opnamegrootte 262144 bytes
20:08:22.146354 IP10.0.2.15.54080 > 172.67.39.148.443: Vlaggen [P.], volgende 1276027591:1276027630, ack 544039114, win 63900, lengte 39
20:08:22.146745 IP10.0.2.15.43456 > 54.204.39.132.443: Vlaggen [P.], volgende 3381018839:3381018885, ack 543136109, win 65535, lengte 46
20:08:22.147506 IP-172.67.39.148.443 > 10.0.2.15.54080: Vlaggen [.], ack 39, win 65535, lengte 0
20:08:22.147510 IP54.204.39.132.443 > 10.0.2.15.43456: Vlaggen [.], ack 46, win 65535, lengte 0
20:08:22.202346 IP-216.58.209.142.443 > 10.0.2.15.41050: Vlaggen [P.], volgende 502925703:502925826, ack 1203118935, win 65535, lengte 123
20:08:22.202868 IP10.0.2.15.41050 > 216.58.209.142.443: Vlaggen [P.], volgende 1:40, ack 123, win 65535, lengte 39

Vastgelegde uitvoer begrijpen

Tcpdump legt veel protocollen vast, waaronder UDP, TCP, ICMP, enz. Het is niet eenvoudig om ze hier allemaal te behandelen. Het is echter belangrijk om te begrijpen hoe de informatie wordt weergegeven en welke parameters deze bevat.

Tcpdump geeft elk pakket in een regel weer, met een tijdstempel en informatie met betrekking tot het protocol. Over het algemeen is het formaat van een TCP-protocol als volgt:

. > .: , , , , ,

Laten we een van de vastgelegde pakketvelden per veld uitleggen:

20:08:22.146354 IP10.0.2.15.54080 > 172.67.39.148.443: Vlaggen [P.], volgende 1276027591:1276027630, ack 544039114, win 63900, lengte 39
  • 20:08:22.146354: Tijdstempel van het vastgelegde pakket
  • IP: Netwerklaagprotocol.
  • 10.0.2.15.54080: Dit veld bevat het bron-IP-adres en de bronpoort.
  • 172.67.39.148.443: Dit veld staat voor het bestemmings-IP-adres en poortnummer.
  • Vlaggen[P.]/: De vlaggen vertegenwoordigen de verbindingsstatus. In dit geval [P.] geeft het PUSH-bevestigingspakket aan. Het vlagveld bevat ook enkele andere waarden, zoals:
    1. S: SYN
    2. P: DRUK
    3. [.]: ACK
    4. F: FIN
    5. [S.]: SYN_ACK
    6. R: RST
  • seq 1276027591:1276027630: Het volgnummer in de eerste: het laatste formaat geeft het aantal gegevens in het pakket aan. Met uitzondering van het eerste pakket waar de getallen absoluut zijn, hebben de volgende pakketten relatieve getallen. In dit geval betekenen de cijfers hier dat het pakket databytes bevat van  1276027591 tot 1276027630.
  • ack 544039114: Het bevestigingsnummer geeft het volgende verwachte gegevensvolgnummer weer.
  • win 63900: de venstergrootte geeft het aantal beschikbare bytes in de ontvangen buffer weer.
  • lengte 39: lengte van payloadgegevens, in bytes.

Geavanceerde filters

Nu kunnen we enkele geavanceerde kopfilteropties gebruiken om alleen datapakketten weer te geven en te analyseren. In elk TCP-pakket beginnen de TCP-vlaggen vanaf de 14e byte, zodat PSH en ACK worden weergegeven door 4e en 5e bits.

We kunnen deze informatie gebruiken door deze bits aan te zetten 00011000 of 24 om datapakketten weer te geven met alleen PSH- en ACK-vlaggen. Dit nummer geven we door aan tcpdump met het filter “tcp[13]=24", merk op dat de array-index in TCP begint bij nul.

We filteren dit pakket uit onze text_capture.pcap bestand en gebruik de -EEN optie om alle pakketdetails voor u weer te geven.

Op dezelfde manier kunt u enkele andere vlagpakketten uitfilteren met “tcp[13]=8” en “tcp[13]=2” alleen voor PSH- en SYN-vlaggen, enz.

ubuntu$ubuntu:~$ sudo tcpdump -A 'tcp[13]=24' -r /tmp/test_capture.pcap
lezen uit bestand /tmp/test_capture.pcap, verbindingstype EN10MB (Ethernet)
19:26:17.827902 IP-ubuntu.53298 > 32.121.122.34.bc.googleusercontent.com.http: Vlaggen [P.], volgende 4286571276:4286571363, ack 252096002, win 64240, lengte 87: HTTP: GET / HTTP/1.1
E... :?@[email protected].
… "zy .2.P… P… GET / HTTP/1.1
Host: connectiviteitscontrole.ubuntu.com
Aanvaarden: */*
Verbinding: sluiten

Conclusie

In dit artikel hebben we u kennis laten maken met enkele van de belangrijkste onderwerpen van tcpdump. Tcpdump, gecombineerd met de kracht van CLI, kan een grote hulp zijn bij het oplossen van problemen met netwerken, automatisering en beveiligingsbeheer. Eenmaal bestudeerd en gecombineerd, kunnen de filters en opdrachtregelopties veel bijdragen aan uw dagelijkse probleemoplossing en automatiseringstaken en algemeen begrip van het netwerk.

Sid Meier's Civilization VI downloaden en spelen op Linux and
Inleiding tot het spel Civilization 6 is een moderne versie van het klassieke concept dat werd geïntroduceerd in de serie Age of Empires-games. Het id...
Doom installeren en spelen op Linux
Inleiding tot Doom De Doom-serie is ontstaan ​​in de jaren 90 na de release van de originele Doom. Het was meteen een hit en vanaf die tijd heeft de g...
Vulkan voor Linux-gebruikers
Met elke nieuwe generatie grafische kaarten zien we game-ontwikkelaars de grenzen van grafische betrouwbaarheid verleggen en een stap dichter bij foto...