Introduksjon til Tcpdump

Hvis du kjører en server, vil du utvilsomt komme til et punkt hvor du trenger å fikse noen nettverksrelaterte problemer. Selvfølgelig ville det være lett å bare sende en e-post til supportavdelingen, men noen ganger må du skitne på hendene. I dette tilfellet tcpdumper verktøyet for den jobben. Tcpdump er en nettverkspakkeanalysator som kjører under kommandolinjen.

Denne artikkelen vil deles inn i tre deler:

  • Grunnleggende funksjoner.
  • Filtrering basert på visse trafikkegenskaper.
  • Et kort utdrag av de mer avanserte funksjonene (som logiske uttrykk, filtrering etter TCP-flagg).

Siden tcpdump ikke er inkludert i de fleste basissystemer, må du installere det. Imidlertid har nesten alle Linux-distribusjoner tcpdump i sine kjernelager. For Debian-baserte distribusjoner er kommandoen for å installere tcpdump:

apt-get install tcpdump

For CentOS/RedHat, bruk følgende kommando:

yum install tcpdump

FreeBSD tilbyr en forhåndsbygd pakke som kan installeres ved å utstede:

pkg install tcpdump

Det er også en port tilgjengelig, net/tcpdumpsom kan installeres via:

cd /usr/ports/net/tcpdump
make install clean

Hvis du kjører tcpdumputen noen argumenter, vil du bli slått med resultater. Å kjøre den på en nyopprullet instans her på Vultr i mindre enn fem sekunder gir følgende resultater:

2661 packets captured
2663 packets received by filter
0 packets dropped by kernel

Før du går inn på flere detaljer om hvordan du filtrerer inndata, bør du ta en titt på noen parametere som kan sendes til tcpdump:

  • -i- Spesifiserer grensesnittet du vil lytte på, for eksempel: tcpdump -i eth0.
  • -n- Ikke prøv å gjøre omvendte oppslag på IP-adresser, for eksempel: tcpdump -n(hvis du legger til en annen nvil tcpdump vise deg portnumre i stedet for navn).
  • -X- Vis innholdet i de innsamlede pakkene: tcpdump -X.
  • -c- Bare fangst xpakker, som xer et vilkårlig tall, tcpdump -c 10fanger for eksempel nøyaktig 10 pakker.
  • -v- Øk mengden pakkeinformasjon du blir vist, mer vs legg til mer ordlyd.

Hver av parametrene nevnt her kan kombineres sammen. Hvis du ønsket å fange 100 pakker, men bare på VPN-grensesnittet tun0, ville tcpdump-kommandoen se slik ut:

tcpdump -i tun0 -c 100 -X

Det er dusinvis (om ikke hundrevis) av alternativer i tillegg til de få, men de er de vanligste. Les gjerne tcpdumps manpage på systemet ditt.

Nå som du har en grunnleggende forståelse av tcpdump, er det på tide å se på en av tcpdumps mest fantastiske funksjoner: uttrykk. Uttrykk vil gjøre livet ditt mye enklere. De er også kjent som BPF- eller Berkeley-pakkefiltre. Ved å bruke uttrykk kan du selektivt vise (eller ignorere) pakker basert på visse egenskaper - som opprinnelse, destinasjon, størrelse eller til og med TCP-sekvensnummer.

Så langt har du klart å begrense søket til en viss mengde pakker på et bestemt grensesnitt, men la oss være ærlige her: det etterlater fortsatt for mye bakgrunnsstøy til å fungere effektivt med de innsamlede dataene. Det er der uttrykk spiller inn. Konseptet er ganske enkelt, så vi utelater den tørre teorien her og støtter forståelsen med noen praktiske eksempler.

Uttrykkene du sannsynligvis kommer til å bruke mest er:

  • host - Se etter trafikk basert på vertsnavn eller IP-adresser.
  • srceller dst- Se etter trafikk fra eller til en bestemt vert.
  • proto- Se etter trafikk av en bestemt protokoll. Fungerer for tcp, udp, icmp og andre. Å utelate protonøkkelordet er også mulig.
  • net - Se etter trafikk til/fra et visst utvalg av IP-adresser.
  • port - Se etter trafikk til/fra en bestemt havn.
  • greatereller less- Se etter trafikk som er større eller mindre enn en viss mengde byte.

Mens manpage for tcpdumpbare inneholder noen få eksempler, har manpage for pcap-filtersvært detaljerte forklaringer på hvordan hvert filter fungerer og kan brukes.

Hvis du vil se hvordan kommunikasjonen din med en bestemt server går, kan du hostfor eksempel bruke nøkkelordet (inkludert noen av parameterne ovenfra):

tcpdump -i eth0 host vultr.com

Noen ganger er det datamaskiner på nettverket som ikke respekterer MTU eller spammer deg med store pakker; å filtrere dem ut kan noen ganger være vanskelig. Uttrykk lar deg filtrere ut pakker som er større eller mindre enn et visst antall byte:

tcpdump -i eth0 -nn greater 128
or
tcpdump -i eth0 -nn less 32

Kanskje bare en viss havn er av interesse for deg. I dette tilfellet bruker du portuttrykket:

tcpdump -i eth0 -X port 21

Du kan også se etter portområder:

tcdump -i eth0 -X portrange 22-25

Siden NAT-gatewayer er ganske vanlige, kan du bare se etter destinasjonsporter:

tcpdump dst port 80

Hvis du ser på trafikk til webserveren din, vil du kanskje bare se på TCP-trafikk til port 80:

tcpdump tcp and dst port 80

Du spør deg sikkert hva søkeordet andgjør der. Godt spørsmål. Det bringer oss til den siste delen av denne artikkelen.

tcpdump tilbyr grunnleggende støtte for logiske uttrykk, mer spesifikt:

  • and/ &&- Logisk "og".
  • or/ ||- Logisk "eller".
  • not/ !- Logisk "ikke".

Sammen med muligheten til å gruppere uttrykk sammen, lar dette deg lage svært kraftige søk etter innkommende og utgående trafikk. Så la oss filtrere ut trafikk som kommer fra vultr.com på port 22 eller 443:

tcpdump -i eth0 src host vultr.com and (dst port 22 or 443)

Å kjøre dette på kommandolinjen vil gi deg følgende feil:

bash: syntax error near unexpected token `('

Det er fordi det er et forbehold: bashprøver å evaluere hver karakter den kan. Dette inkluderer den (og )tegn. For å unngå denne feilen bør du bruke enkle anførselstegn rundt det kombinerte uttrykket:

tcpdump -i eth0 'src host vultr.com and (dst port 22 or 443)'

Et annet nyttig eksempel: Når du feilsøker SSH-problemer med en av brukerne dine, vil du kanskje ignorere alt som er relatert til SSH-økten din:

tcpdump '!(host $youripaddress) && port 22)'

Igjen, brukstilfellene er uendelige, og du kan spesifisere i ekstreme dybder hva slags trafikk du vil se. Følgende kommando vil bare vise deg SYNACK-pakker av et TCP-håndtrykk:

tcpdump -i eth0 'tcp[13]=18'

Dette fungerer ved å se på den trettende forskyvningen til TCP-overskriften og den attende byten i den.

Hvis du kom deg helt hit, er du klar for de fleste brukstilfeller som vil dukke opp. Jeg kan knapt ta på overflaten uten å gå inn i for mange detaljer. Jeg anbefaler på det sterkeste at du eksperimenterer litt videre med de forskjellige alternativene og uttrykkene; og som vanlig: referer til manpage når du går deg vill.

Sist men ikke minst – et raskt tilbakeblikk. Husker du begynnelsen av denne artikkelen? Med tusenvis av pakker fanget i løpet av sekunder? Kraften til tcpdumpkan trimme det ned mye:

tcpdump -i eth0 tcp port 22

Resultatet er nå:

81 packets captured
114 packets received by filter
0 packets dropped by kerne

Dette er mye sunnere og lettere å feilsøke. Godt nettverk!

Legg igjen en kommentar

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer