Če morate v Linuxu analizirati ali prejeti omrežne pakete, je najbolje, da uporabite konzolo utility tcpdump . Toda problem se pojavi v precej zapletenem vodenju. Običajni uporabnik bo ugotovil, da je delo z orodjem neprijetno, vendar je le na prvi pogled. Članek vam bo povedal, kako je strukturiran tcpdump, kakšna sintaksa ima, kako jo uporabljati, in tudi navaja številne primere njegove uporabe.
Preberite tudi: Priročniki za nastavitev internetne povezave v Ubuntu , Debian , Ubuntu strežnik
Večina razvijalcev operacijskih sistemov, ki temeljijo na Linuxu, vključujejo pripomoček tcpdump na vnaprej nameščen seznam, vendar če iz neznanega razloga ni v vaši distribuciji, ga lahko vedno prenesete in namestite prek »Terminal« . Če vaš OS temelji na Debianu, in to je Ubuntu, Linux Mint, Kali Linux in podobno, morate zagnati ta ukaz:
sudo apt install tcpdump
Pri nameščanju morate vnesti geslo. Upoštevajte, da med tipkanjem ni prikazana in morate vnesti znak "D" in pritisnite Enter, da potrdite namestitev.
Če imate Red Hat, Fedora ali CentOS, bo ukaz za namestitev izgledal takole:
sudo yam install tcpdump
Ko je pripomoček nameščen, ga lahko takoj uporabite. V zvezi s tem in še veliko več bomo podrobneje obravnavali v besedilu.
Preberite tudi: PHP Navodila za namestitev za Ubuntu Server
Kakršen koli drug ukaz ima tcpdump svojo sintakso. Če poznate to možnost, lahko nastavite vse potrebne parametre, ki bodo upoštevani pri izvedbi ukaza. Sintaksa je naslednja:
tcpdump опции -i интерфейс фильтры
Pri uporabi ukaza morate določiti vmesnik za sledenje. Filtri in možnosti niso obvezne spremenljivke, vendar omogočajo bolj prilagodljivo prilagajanje.
Čeprav vam ni treba določiti možnosti, morate navesti razpoložljive možnosti. Tabela ne prikazuje vseh svojih seznamov, ampak le najbolj priljubljenih, vendar so več kot dovolj za reševanje večine nalog.
Možnost | Opredelitev |
---|---|
-A | Omogoča, da razvrščate pakete v formatu ASCII |
-l | Doda funkcijo za pomikanje |
-i | Po vnosu morate določiti omrežni vmesnik, ki ga boste nadzorovali. Če želite začeti slediti vsem vmesnikom, vnesite besedo "katera koli" po možnosti |
-c | Izključi postopek sledenja po preverjanju določenega števila paketov |
-w | Ustvari besedilno datoteko s poročilom o preverjanju |
-e | Označuje raven internetne povezave podatkovnega paketa |
-L | Ustvari samo tiste protokole, ki podpirajo določen omrežni vmesnik |
-C | Ustvari drugo datoteko, medtem ko je paket napisan, če je njegova velikost večja od določene |
-r | Odpre bralno datoteko, ki je bila ustvarjena z možnostjo -w |
-j | Za snemanje paketov bo uporabljen format TimeStamp |
-J | Omogoča ogled vseh razpoložljivih formatov TimeStamp |
-G | Služi za ustvarjanje datoteke z dnevniki. Možnost zahteva tudi začasno vrednost, po kateri bo ustvarjen nov dnevnik |
-v, -vv, -vvv | Odvisno od števila znakov v možnosti, bo izhod ukaza bolj natančen (povečanje je neposredno sorazmerno s številom znakov) |
-f | Izhod prikazuje ime domene IP naslova |
-F | Omogoča branje informacij, ki niso iz omrežnega vmesnika, ampak iz navedene datoteke |
-D | Prikazuje vse omrežne vmesnike, ki jih lahko uporabite |
-n | Izključi prikaz domenskih imen |
-Z | Določi uporabnika, katerega račun bo ustvaril vse datoteke |
-K | Manjka analiza preskusa |
-q | Prikaz kratkih informacij |
-H | Odkriva glave 802.11s |
-I | Uporablja se pri zajemanju paketov v načinu monitorja |
Po razstavitvi možnosti, tik pod, bomo šli neposredno v njihove aplikacije. V tem času bodo upoštevani filtri.
Kot je že omenjeno na samem začetku članka, lahko v sintakso tcpdump dodate filtre. Zdaj bodo najpogostejši med njimi:
Filter | Opredelitev |
---|---|
gostitelj | Določa ime gostitelja |
neto | Podaja IP-podmnožico in omrežje |
ip | Služi za naslov protokola |
src | Prikaže pakete, ki so bili poslani z navedenega naslova |
dst | Prikaže pakete, ki jih je prejela določen naslov |
arp, udp, tcp | Filtriranje po enem od protokolov |
pristanišče | Prikaže informacije o določenem pristanišču |
in, ali | Uporablja se za združitev več filtrov v ukaz |
manj, večje | Proizvodnja paketov, manjših ali večjih od določene velikosti |
Vsi zgornji filtri se lahko kombinirajo med seboj, zato boste pri izdaji ukaza videli samo podatke, ki jih želite videti. Za boljše razumevanje uporabe zgoraj navedenih filtrov je smiselno dati primere.
Preberite tudi: Pogosto uporabljeni ukazi v "Terminal" Linuxu
Najpogosteje uporabljene možnosti sintakse za ukaz tcpdump so zdaj navedene. Vse jih ni mogoče navesti, saj so njihove različice lahko neskončno število.
Priporočljivo je, da vsak uporabnik najprej preveri seznam vseh svojih omrežnih vmesnikov, ki jih je mogoče spremljati. V zgornji tabeli vemo, da morate uporabiti možnost -D , zato v terminalu izvedite naslednji ukaz:
sudo tcpdump -D
Primer:
Kot vidite, v tem primeru je na voljo osem vmesnikov, ki jih lahko pregledate s pomočjo ukaza tcpdump. V članku bodo navedeni primeri s ppp0 , lahko uporabite katero koli drugo.
Če želite slediti enemu omrežnemu vmesniku, lahko to storite z možnostjo -i . Ne pozabite vnesti imena vmesnika po vnosu. Tu je primer izvedbe takega ukaza:
sudo tcpdump -i ppp0
Opomba: pred samim ukazom morate vnesti »sudo«, ker zahteva nadrejeno pravico.
Primer:
Opomba: po pritisku na Enter v "Terminal" se bodo prestrezani paketi stalno prikazovali. Če želite ustaviti njihov pretok, morate pritisniti kombinacijo tipk Ctrl + C.
Če zaženete ukaz brez dodatnih možnosti in filtrov, boste videli prikaz za sledilne pakete:
22:18:52.597573 IP vrrp-topf2.p.mail.ru.https > 10.0.6.67.35482 : Flags [P.], seq 1:595, ack 1118, win 6494, options [nop,nop,TS val 257060077 ecr 697597623], length 594
Kjer je označena barva:
Ta sintaksa ima možnost izpisa v oknu "Terminal" brez dodatnih možnosti.
Kot veste iz tabele, možnost -v omogoča povečanje količine informacij. Na primer bomo analizirali. Preverimo isti vmesnik:
sudo tcpdump -v -i ppp0
Primer:
Tukaj lahko vidite, da se je na izhodu pojavila naslednja vrstica:
IP (tos 0x0, ttl 58 , id 30675, offset 0, flags [DF] , proto TCP (6) , length 52
Kjer je označena barva:
Tudi v sintaksi ukaza lahko določite možnost -vv ali -vvv , ki bo dodatno povečala količino informacij, prikazanih na zaslonu.
Tabela možnosti omenja možnost shranjevanja vseh izhodnih podatkov v ločeni datoteki, tako da jih je mogoče ogledati pozneje. Za to je odgovorna možnost -w . Če ga uporabljate, je precej preprosto, samo pokažite na ukaz, nato pa vnesite ime prihodnje datoteke z razširitvijo ».pcap« . Vzemimo vse na primer:
sudo tcpdump -i ppp0 -w file.pcap
Primer:
Opomba: med snemanjem dnevnikov v datoteki na zaslonu »Terminal« se ne prikaže nobeno besedilo.
Ko si želite ogledati posneti izhod, morate uporabiti možnost -r , nato pa napišite ime prej zapisane datoteke. Uporablja se brez drugih možnosti in filtrov:
sudo tcpdump -r file.pcap
Primer:
Obe možnosti sta odlični, ko morate za kasnejši razčlenitev shraniti veliko količino besedila.
V tabeli filtrov vemo, da dst vam omogoča prikazovanje samo tistih paketov, ki jih je naslov prejel na konzoli, kot je določeno v sintaksi ukaza. Tako je zelo primerno, da si ogledate pakete, ki jih prejme vaš računalnik. Če želite to narediti, morate samo v svojem računu navesti svoj naslov IP:
sudo tcpdump -i ppp0 ip dst 10.0.6.67
Primer:
Kot lahko vidite, smo poleg ekipe dst v ekipi napisali ip filter. Z drugimi besedami, računalniku smo povedali, da bi pri izbiri paketov upošteval njihov IP-naslov in ne druge parametre.
Z IP lahko filtrirate in pošiljate pakete. V primeru vrnemo naš IP. To je zdaj, bomo spremljali, kateri paketi so poslani iz našega računalnika na druge naslove. Če želite to narediti, izvedite naslednji ukaz:
sudo tcpdump -i ppp0 ip src 10.0.6.67
Primer:
Kot lahko vidite v sintaksi ukaza, smo spremenili dst filter v src , kar pomeni, da je naprava iskala pošiljatelja po IP-ju.
Po analogiji z IP-jem v ukazu lahko navedemo gostiteljski filter, s katerim odložimo pakete z veliko zanimanjem. To pomeni, da je v sintaksi namesto IP naslov pošiljatelja / sprejemnika potrebno določiti gostitelja. Izgleda takole:
sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com
Primer:
Na sliki si lahko ogledate, da so v "Terminalu" prikazani le tisti paketi, ki so bili poslani iz našega IP-ja za gostovanje google.com. Kot lahko vidite, namesto gostitelja Google lahko vnesete katerokoli drugo.
Kot pri filtriranju IP lahko sintakso dst zamenjate z srcom in si ogledate pakete, ki so poslani v računalnik:
sudo tcpdump -i ppp0 src host google-public-dns-a.google.com
Opomba: filter gostitelja mora biti nastavljen po dst ali src, sicer bo ukaz ustvaril napako. V primeru filtriranja IP, nasprotno, dst in src sta pred ip filterom.
Če morate v istem ukazu naenkrat uporabiti več filtrov, morate uporabiti filter in ali ali (odvisno od primera). Z določitvijo filtrov v sintaksi in ločevanjem s tem operaterjem, jih »prisilite«, da delajo kot ena. Na primer, izgleda tako:
sudo tcpdump -i ppp0 ip dst 95.47.144.254 or ip src 95.47.144.254
Primer:
Iz sintakse ukaza je jasno, da na zaslonu "Terminal" želimo prikazati vse pakete, ki so bili poslani na naslov 95.47.144.254 in pakete, ki jih prejme isti naslov. V tem izrazu lahko spremenite tudi nekatere spremenljivke. Na primer, namesto IP navedite HOST ali sami naslove zamenjajte.
Filter vrat je popoln, ko potrebujete informacije o paketih s specifičnim pristaniščem. Torej, če potrebujete samo odgovore ali poizvedbe DNS, morate določiti vrata 53:
sudo tcpdump -vv -i ppp0 port 53
Primer:
Če želite ogledati http pakete, morate vnesti vrata 80:
sudo tcpdump -vv -i ppp0 port 80
Primer:
Med drugim je mogoče slediti razponu pristanišč hkrati. Za to se uporablja filter portranžiranja :
sudo tcpdump portrange 50-80
Kot lahko vidite, ni treba določiti dodatnih možnosti v povezavi s filtrom portpoint . Dovolj je samo nastaviti obseg.
Prav tako lahko prikažete samo promet, ki ustreza kateremukoli protokolu. Če želite to narediti, morate uporabiti ime tega protokola kot filter. Oglejmo si primer udp :
sudo tcpdump -vvv -i ppp0 udp
Primer:
Kot je prikazano na sliki, po izvedbi ukaza so bili v "Terminal" prikazani samo paketi z udp protokolom. V skladu s tem lahko filtrirate na druge, na primer arp :
sudo tcpdump -vvv -i ppp0 arp
ali tcp :
sudo tcpdump -vvv -i ppp0 tcp
Omrežni operater pomaga filtrirati pakete, pri čemer kot osnovo označuje njihovo omrežje. Če ga želite uporabiti enako kot ostale, morate v sintaksi podati neto atribut in nato vnesti omrežni naslov. Tukaj je primer takega ukaza:
sudo tcpdump -i ppp0 net 192.168.1.1
Primer:
Nismo upoštevali še dveh zanimivih filtrov: manj in več . V tabeli s filtri vemo, da služijo za izpis podatkovnih paketov, ki so večji ( manj ) ali manjši ( večji ) velikosti, določeni po vnosu atributa.
Denimo, da želimo spremljati samo pakete, ki ne presegajo oznake 50 bitov, potem bo ukaz izgledal takole:
sudo tcpdump -i ppp0 less 50
Primer:
Zdaj bomo prikazali v paketih »Terminal«, ki so večji od 50 bitov:
sudo tcpdump -i ppp0 greater 50
Primer:
Kot lahko vidite, se uporabljajo enako, razlika pa je le v imenu filtra.
Na koncu članka lahko ugotovite, da je ukaz tcpdump odlično orodje, s katerim lahko sledite vsem paketom podatkov, poslanim prek interneta. Toda za to ni dovolj samo vstopiti v ekipo v "Terminal" . Če želite doseči želeni rezultat, boste dobili le, če uporabljate vse vrste možnosti in filtre ter njihove kombinacije.