Tcpdump ir tīkla pakešu sniffing komandrindas lietderība. To visbiežāk izmanto tīklu problēmu novēršanai un drošības problēmu pārbaudei. Neskatoties uz grafiskā lietotāja interfeisa neesamību, tā ir vispopulārākā, jaudīgākā un daudzpusīgākā komandrindas lietderība.
Tā ir Linux dzimtene tā, ka lielākā daļa Linux izplatīšanas to instalē kā daļu no standarta OS. Tcpdump ir libpcap saskarnes programma, kas ir tīkla datagrammas uztveršanas bibliotēka.
Šis raksts demistificēs tcpdump, parādot, kā šajā utilītā tvert, lasīt un analizēt tverto tīkla trafiku. Vēlāk mēs izmantosim savu izpratni, lai pārbaudītu datu paketes ar uzlabotajiem TCP karodziņu filtriem.
Tcpdump instalēšana
Tcpdump noklusējuma instalēšana jūsu distro ir atkarīga no instalēšanas procesā izvēlētajām opcijām. Pielāgotas instalēšanas gadījumā iespējams, ka pakotne nav pieejama. Jūs varat pārbaudīt tcpdump instalāciju, izmantojot dpkg komandu ar “-s”Opciju.
ubuntu $ ubuntu: ~ $ dpkg -s tcpdumpVai arī izmantojiet komandu “sudo apt-get install tcpdump”, lai instalētu tcpdump Ubuntu Linux.
Pakešu tveršana Tcpdump:
Lai sāktu uzņemšanas procesu, mums vispirms jāatrod mūsu darba saskarne, izmantojot “ifconfig”Komandu. Vai arī mēs varam uzskaitīt visas pieejamās saskarnes, izmantojot tcpdump komandu ar “-D”Opciju.
ubuntu $ ubuntu: ~ $ tcpdump -DLai sāktu tveršanas procesu, varat izmantot sintaksi;
tcpdump [-options] [izteiksme]Piemēram, zemāk esošajā komandā mēs izmantojam-i”Iespēja uztvert trafiku“enp0s3”Saskarne ar“-c”Karodziņš, lai ierobežotu uzņemtās paketes un ierakstītu“-w”To uz a test_capture.pcap failu.
ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 -w / tmp / test_capture.pcapTāpat varat izmantot dažādas filtru kombinācijas, lai izolētu datplūsmu atbilstoši jūsu prasībām. Viens šāds piemērs ietver tīkla datu tveršanu, atstājot un nonākot resursdatorā, izmantojot saimnieks komandu konkrētam osta. Turklāt esmu izmantojis “-n”Karodziņu, lai tcpdump neuzņemtu DNS uzmeklējumus. Šis karodziņš ir ļoti noderīgs, lai piesātinātu trafiku tīkla traucējummeklēšanas laikā.
ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 resursdators 10.0.2.15 un dst ports 80 -w / tmp / test_capture1.pcaptcpdump: klausīšanās enp0s3, saites tipa EN10MB (Ethernet), uztveršanas izmērs 262144 baiti
Tvertas 20 paciņas
Filtrā saņemta 21 paciņa
0 paketes, kuras izmetis kodols
Mēs izmantojamun”Komandu, lai tvertu tikai paketes, kurās ir 10. resursdators.0.2.15 un galamērķa osta 80. Līdzīgi var izmantot dažādus citus filtrus, lai atvieglotu problēmu novēršanu.
Ja nevēlaties izmantot “-c”Karodziņu, lai ierobežotu uztveršanas trafiku, varat izmantot pārtraukuma signālu, t.e., Ctrl + C, lai apturētu izolācijas procesu.
Tcpdump failu lasīšana
Tcpdump uzņemto failu lasīšana var būt daudz pārliecinoša. Pēc noklusējuma TCP piešķir nosaukumus IP adresēm un portiem. Mēs izmantosim-r”Karodziņu, lai lasītu mūsu jau notverto failu test_capture.pcap saglabāts mapē / tmp mapi. Mēs izvadīsim izvadi uz awk komandu izvadīt tikai avota IP adresi un porti un nosūtīt to komandai galva lai parādītu tikai pirmos 5 ierakstus.
ubuntu $ ubuntu: ~ $ sudo tcpdump -r / tmp / test_capture1.pcap | awk -F “” 'print $ 3' | galva -5lasīšana no faila / tmp / test_capture.pcap, saites tipa EN10MB (Ethernet)
IP ubuntu.53298
IP ubuntu.53298
IP ubuntu.53298
IP ubuntu.53298
IP ubuntu.53298
Tomēr tīkla problēmu risināšanai ieteicams izmantot numurus ar IP adresēm un portiem. Mēs atspējosim IP nosaukuma izšķirtspēju ar “-n”Karoga un ostas nosaukumi ar“-nn“.
ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -ntcpdump: izvērsta izvade ir nomākta, pilna protokola atšifrēšanai izmantojiet -v vai -vv
klausīšanās enp0s3, saites tipa EN10MB (Ethernet), uztveršanas izmērs 262144 baiti
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148. lpp.443: Karogi [P.], seq 1276027591: 1276027630, ack 544039114, win 63900, garums 39
20:08:22.146745 IP 10.0.2.15.43456> 54.204.39.132.443: Karogi [P.], seq 3381018839: 3381018885, ack 543136109, win 65535, garums 46
20:08:22.147506 IP 172.67.39.148. lpp.443> 10.0.2.15.54080: Karogi.], ack 39, win 65535, garums 0
20:08:22.147510 IP 54.204.39.132.443> 10.0.2.15.43456: Karogi.], ack 46, win 65535, garums 0
20:08:22.202346 IP 216.58.209. lpp.142.443> 10.0.2.15.41050: Karogi [P.], seq 502925703: 502925826, ack 1203118935, win 65535, garums 123
20:08:22.202868 IP 10.0.2.15.41050> 216.58.209. lpp.142.443: Karogi [P.], turpinājums 1:40, ack 123, win 65535, garums 39
Izpratne par uzņemto rezultātu
Tcpdump uztver daudzus protokolus, tostarp UDP, TCP, ICMP utt. Šeit nav viegli tos visus aplūkot. Tomēr ir svarīgi saprast, kā informācija tiek parādīta un kādus parametrus tā ietver.
Tcpdump katru paketi parāda rindā ar laika zīmogu un informāciju attiecībā uz protokolu. Parasti TCP protokola formāts ir šāds:
Paskaidrosim vienu no uzņemtajiem pakešu laukiem pēc laukiem:
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148. lpp.443: Karogi [P.], seq 1276027591: 1276027630, ack 544039114, win 63900, garums 39- 20:08:22.146354: Uzņemtās paketes laika zīmogs
- IP: tīkla slāņa protokols.
- 10.0.2.15.54080: Šajā laukā ir iekļauta avota IP adrese un avota ports.
- 172.67.39.148. lpp.443: Šis lauks norāda galamērķa IP adresi un porta numuru.
- Karogi [P.] /
: Karodziņi apzīmē savienojuma stāvokli. Šajā gadījumā [P.] norāda PUSH apstiprināšanas paketi. Karoga laukā ir arī dažas citas vērtības, piemēram: - S: SYN
- P: SPIED
- [.]: ACK
- F: FIN
- [S.]: SYN_ACK
- R: RST
- seq 1276027591: 1276027630: kārtas numurs pirmajā: pēdējais formāts apzīmē datu skaitu paketē. Izņemot pirmo pakešu, kur skaitļi ir absolūti, nākamajām paketēm ir relatīvie skaitļi. Šajā gadījumā skaitļi šeit nozīmē, ka paketē ir datu baiti no 1276027591 līdz 1276027630.
- ack 544039114: apstiprinājuma numurs attēlo nākamo paredzamo datu kārtas numuru.
- win 63900: loga izmērs attēlo pieejamo baitu skaitu saņemtajā buferī.
- 39. garums: derīgās kravas datu garums baitos.
Papildu filtri
Tagad mēs varam izmantot dažas uzlabotas virsrakstu filtrēšanas opcijas, lai parādītu un analizētu tikai datu paketes. Jebkurā TCP paketē TCP karodziņi sākas no 14. baita tā, ka PSH un ACK attēlo 4. un 5. bits.
Mēs varam izmantot šo informāciju, ieslēdzot šos bitus 00011000 vai 24 lai parādītu datu paketes tikai ar PSH un ACK karodziņiem. Mēs nododam šo numuru tcpdump ar filtru “tcp [13] = 24“, Ņemiet vērā, ka masīva indekss TCP sākas ar nulli.
Mēs filtrēsim šo paketi no mūsu text_capture.pcap failu un izmantojiet -A iespēja parādīt visu pakešu informāciju jums.
Līdzīgi jūs varat filtrēt dažas citas karodziņu paketes, izmantojot “Tcp [13] = 8” un “tcp [13] = 2” tikai PSH un SYN karodziņiem utt.
ubuntu $ ubuntu: ~ $ sudo tcpdump -A 'tcp [13] = 24' -r / tmp / test_capture.pcaplasīšana no faila / tmp / test_capture.pcap, saites tipa EN10MB (Ethernet)
19:26:17.827902 IP ubuntu.53298> 32.121.122.34.bc.googleusercontent.com.http: Karogi [P.], seq 4286571276: 4286571363, ack 252096002, win 64240, garums 87: HTTP: GET / HTTP / 1.1
E…:?@[email protected].
… "Zy .2.P… P… GET / HTTP / 1.1
Resursdators: savienojamības pārbaude.ubuntu.com
Pieņemt: * / *
Savienojums: aizveriet
Secinājums
Šajā rakstā mēs esam iepazīstinājuši jūs ar dažām vissvarīgākajām tcpdump tēmām. Tcpdump apvienojumā ar CLI spēku var būt liela palīdzība tīkla problēmu novēršanā, automatizācijā un drošības pārvaldībā. Kad tie ir izpētīti un apvienoti, tā filtri un komandrindas opcijas var daudz palīdzēt ikdienas problēmu novēršanas un automatizācijas uzdevumos un vispārējā tīkla izpratnē.