tcpdump

Tinklo srauto analizės įrankio TCPDUMP vadovas

Tinklo srauto analizės įrankio TCPDUMP vadovas

Tcpdump yra tinklo paketų uostymas komandinės eilutės įrankiu. Jis dažniausiai naudojamas tinklų trikčių šalinimui ir saugumo problemų testavimui. Nepaisant to, kad nėra grafinės vartotojo sąsajos, tai yra populiariausias, galingiausias ir universaliausias komandinės eilutės įrankis.

Tai yra gimtoji „Linux“, todėl dauguma „Linux“ paskirstymų ją įdiegia kaip standartinės OS dalį. „Tcpdump“ yra „libpcap“ sąsajos programa, kuri yra tinklo duomenų perdavimo tinkle biblioteka.

Šis straipsnis demistifikuos „tcpdump“, parodydamas, kaip užfiksuoti, skaityti ir analizuoti užfiksuotą tinklo srautą šioje priemonėje. Vėliau naudosimės supratimu, kad patikrintume duomenų paketus su išplėstiniais TCP vėliavos filtrais.

„Tcpdump“ diegimas

Numatytasis „Tcpdump“ diegimas jūsų platintuve priklauso nuo parinkčių, pasirinktų diegimo proceso metu. Pasirinktinio diegimo atveju gali būti, kad paketo nėra. Galite patikrinti „tcpdump“ diegimą naudodami dpkg komanda su „-s“Parinktį.

ubuntu $ ubuntu: ~ $ dpkg -s tcpdump

Arba naudokite komandą „sudo apt-get install tcpdump“, kad įdiegtumėte tcpdump „Ubuntu Linux“.

Paketų užfiksavimas „Tcpdump“:

Norėdami pradėti fiksavimo procesą, pirmiausia turime rasti savo veikiančią sąsają naudodami „ifconfig”Komanda. Arba galime išvardyti visas galimas sąsajas naudodami tcpdump komanda su „-D“Parinktį.

ubuntu $ ubuntu: ~ $ tcpdump -D

Norėdami pradėti fiksavimo procesą, galite naudoti sintaksę;

tcpdump [-options] [išraiška]

Pavyzdžiui, žemiau esančioje komandoje mes naudojame-i“Parinktis fiksuoti srautą„enp0s3“Sąsaja, su„-c“Vėliava, kad apribotų užfiksuotus paketus ir parašytų„-w“Tai a test_capture.pcap failą.

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

Panašiai, norėdami izoliuoti srautą, galite naudoti įvairius filtrų derinius. Vienas iš tokių pavyzdžių apima tinklo duomenų, paliekančių ir atvykstančių į pagrindinį kompiuterį, fiksavimą naudojant vedėjas komanda konkrečiam uostas. Be to, aš naudojau „-n”, Kad tcpdump neužfiksuotų DNS paieškos. Ši žymė yra labai naudinga prisotinant srautą, kai trikdomi tinklas.

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 pagrindinis kompiuteris 10.0.2.15 ir dst prievadas 80 -w / tmp / test_capture1.pcap
tcpdump: klausymasis naudojant enp0s3, nuorodos tipo EN10MB („Ethernet“), 262144 baitų fiksavimo dydis
Užfiksuota 20 pakelių
Filtru gauta 21 paketas
0 paketų, kuriuos numetė branduolys

Mes naudojameir“Komanda užfiksuoti tik paketus, kuriuose yra 10 pagrindinio kompiuterio.0.2.15 ir paskirties uostas 80. Panašiai gali būti naudojami įvairūs kiti filtrai, kad būtų lengviau atlikti trikčių šalinimo užduotis.

Jei nenorite naudoti „-c“Vėliavą, kad apribotumėte fiksavimo srautą, galite naudoti pertraukimo signalą, t.e., „Ctrl“ + C, sustabdyti izoliacijos procesą.

Skaitykite „Tcpdump“ failus

Skaityti tcpdump užfiksuotus failus gali būti daug. Pagal numatytuosius nustatymus TCP priskiria vardus IP adresams ir prievadams. Mes naudosime-r“Vėliava skaityti mūsų jau užfiksuotą failą test_capture.pcap išsaugotas / tmp aplanką. Mes išvedžiosime išvestį į awk komandą, kad išvestų tik šaltinio IP adresą ir prievadus ir persiųstų jį į komandą galva rodyti tik pirmuosius 5 įrašus.

ubuntu $ ubuntu: ~ $ sudo tcpdump -r / tmp / test_capture1.pcap | awk -F „“ spausdinti $ 3 '| galva -5
skaitymas iš failo / tmp / test_capture.„Pcap“, nuorodos tipo EN10MB („Ethernet“)
IP „ubuntu“.53298
IP „ubuntu“.53298
IP „ubuntu“.53298
IP „ubuntu“.53298
IP „ubuntu“.53298

Tačiau norint išspręsti tinklo problemas, rekomenduojama naudoti numerius IP adresais ir prievadais. Mes išjungsime IP vardų skyrimą naudodami „-n“Vėliavos ir uosto pavadinimai su„-nn„.

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -n
tcpdump: daugialypė išvestis užblokuota, viso protokolo iššifravimui naudokite -v arba -vv
klausytis „enp0s3“, nuorodos tipo EN10MB („Ethernet“), fiksuoti 262144 baitų dydį
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Vėliavos [P.], sek 1276027591: 1276027630, ack 544039114, win 63900, ilgis 39
20:08:22.146745 IP 10.0.2.15.43456> 54.204.39.132.443: Vėliavos [P.], sek 3381018839: 3381018885, ack 543136109, win 65535, ilgis 46
20:08:22.147506 IP 172.67.39.148.443> 10.0.2.15.54080: Vėliavos [.], ack 39, laimėti 65535, ilgis 0
20:08:22.147510 IP 54.204.39.132.443> 10.0.2.15.43456: Vėliavos [.], ack 46, win 65535, ilgis 0
20:08:22.202346 IP 216.58.209.142.443> 10.0.2.15.41050: Vėliavos [P.], seka 502925703: 502925826, ack 1203118935, win 65535, ilgis 123
20:08:22.202868 IP 10.0.2.15.41050> 216.58.209.142.443: Vėliavos [P.], seka 1:40, ack 123, laimėk 65535, ilgis 39

Suprasti užfiksuotą produkciją

Tcpdump užfiksuoja daugybę protokolų, įskaitant UDP, TCP, ICMP ir kt. Čia nėra lengva aptarti juos visus. Tačiau svarbu suprasti, kaip informacija rodoma ir kokius parametrus ji apima.

„Tcpdump“ rodo kiekvieną paketą eilutėje su laiko žyma ir informacija apie protokolą. Paprastai TCP protokolo formatas yra toks:

. > .: , , , , ,

Paaiškinkime vieną iš užfiksuotų paketų laukų pagal laukus:

20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Vėliavos [P.], sek 1276027591: 1276027630, ack 544039114, win 63900, ilgis 39
  • 20:08:22.146354: užfiksuoto paketo laiko žymė
  • IP: tinklo sluoksnio protokolas.
  • 10.0.2.15.54080: Šiame lauke yra šaltinio IP adresas ir šaltinio prievadas.
  • 172.67.39.148.443: Šis laukas nurodo paskirties IP adresą ir prievado numerį.
  • Vėliavos [P.] /: Vėliavos nurodo ryšio būseną. Šiuo atveju [P.] nurodo PUSH patvirtinimo paketą. Vėliavos lauke taip pat yra keletas kitų reikšmių, tokių kaip:
    1. S: SYN
    2. P: PUSH
    3. [.]: ACK
    4. F: FIN
    5. [S.]: SYN_ACK
    6. R: RST
  • seq 1276027591: 1276027630: eilės numeris pirmuoju: paskutinis formatas žymi duomenų skaičių pakete. Išskyrus pirmąjį paketą, kuriame skaičiai yra absoliutūs, tolesni paketai turi santykinius skaičius. Šiuo atveju skaičiai reiškia, kad pakete yra duomenų baitai nuo 1276027591 iki 1276027630.
  • ack 544039114: patvirtinimo numeris nurodo kitą numatomą duomenų sekos numerį.
  • win 63900: lango dydis nurodo galimų baitų skaičių gautame buferyje.
  • ilgis 39: naudingosios apkrovos duomenų ilgis baitais.

Išplėstiniai filtrai

Dabar galime naudoti kai kurias išplėstines antraštės filtravimo parinktis, kad būtų rodomi ir analizuojami tik duomenų paketai. Bet kuriame TCP pakete TCP vėliavos prasideda nuo 14 baito taip, kad PSH ir ACK vaizduoja 4 ir 5 bitai.

Šią informaciją galime naudoti įjungę šiuos bitus 00011000 arba 24 rodyti duomenų paketus tik su PSH ir ACK vėliavomis. Mes perduodame šį skaičių tcpdump su filtru “tcp [13] = 24“, Atkreipkite dėmesį, kad TCP masyvo indeksas prasideda nuo nulio.

Filtruosime šį paketą iš savo text_capture.pcap failą ir naudokite -A galimybė rodyti visą paketo informaciją jums.

Panašiai galite filtruoti kai kuriuos kitus vėliavos paketus naudodami „Tcp [13] = 8“ ir „tcp [13] = 2“ tik PSH ir SYN vėliavoms ir kt.

ubuntu $ ubuntu: ~ $ sudo tcpdump -A 'tcp [13] = 24' -r / tmp / test_capture.pcap
skaitymas iš failo / tmp / test_capture.„Pcap“, nuorodos tipo EN10MB („Ethernet“)
19:26:17.827902 IP „ubuntu“.53298> 32.121.122.34.bc.googleusercontent.com.http: Vėliavos [P.], sek 4286571276: 4286571363, ack 252096002, win 64240, ilgis 87: HTTP: GET / HTTP / 1.1
E…:?@[email protected].
... "zy .2.P… P… GET / HTTP / 1.1
Priimančioji: ryšio patikrinimas.ubuntu.com
Priimti: */*
Ryšys: uždaryti

Išvada

Šiame straipsnyje mes supažindinome jus su keliomis svarbiausiomis tcpdump temomis. „Tcpdump“ kartu su CLI galia gali būti labai naudinga tinklo trikčių šalinimo, automatizavimo ir saugos valdymo srityse. Išnagrinėjus ir sujungus, jo filtrai ir komandinės eilutės parinktys gali daug prisidėti prie kasdienių trikčių šalinimo ir automatizavimo užduočių bei bendro tinklo supratimo.

Kaip atsisiųsti ir paleisti „Sid Meier Civilization VI“ sistemoje „Linux“
Įvadas į žaidimą „Civilization 6“ yra šiuolaikinė klasikinės koncepcijos, pristatytos „Age of Empires“ žaidimų serijoje, koncepcija. Idėja buvo gana p...
Kaip įdiegti ir žaisti „Doom“ sistemoje „Linux“
Įvadas į Doom „Doom“ serija atsirado 90-aisiais, išleidus originalų „Doom“. Tai buvo tiesioginis hitas, o nuo to laiko žaidimų serija gavo daugybę apd...
„Vulkan“, skirta „Linux“ vartotojams
Kiekvienos naujos kartos grafikos plokštės matome, kaip žaidimų kūrėjai peržengia grafinės ištikimybės ribas ir artėja prie fotorealizmo. Nepaisant vi...