Ako trebate analizirati ili presresti mrežne pakete u Linuxu, onda je najbolje koristiti uslužni program za konzolu tcpdump. Ali problem nastaje u njegovom prilično kompliciranom upravljanju. Prosječnom će se korisniku činiti da je rad s uslužnim programom nezgodan, ali to je samo na prvi pogled. U članku će se objasniti kako tcpdump funkcionira, koju sintaksu ima, kako se koristi, te će se dati brojni primjeri njegove uporabe.
Pogledajte također: Vodiči za podešavanje internetske veze u Ubuntu, Debianu, Ubuntu poslužitelju
Instalacija
Većina programera Linux operativnih sistema uključuje uslužni program tcpdump na listu unaprijed instaliranih, ali ako iz nekog razloga nije u vašoj distribuciji, uvijek ga možete preuzeti i instalirati putem "Terminal". Ako je vaš OS zasnovan na Debianu, a to su Ubuntu, Linux Mint, Kali Linux i slično, trebate pokrenuti ovu naredbu:
sudo apt install tcpdump
Prilikom instaliranja trebate unijeti lozinku. Imajte na umu da se prilikom biranja ne prikazuje, takođe da biste potvrdili postavku koja je potrebna za unos znaka D i kliknite Unesite.
Ako imate Red Hat, Fedora ili CentOS, naredba za instalaciju će izgledati ovako:
sudo yam install tcpdump
Nakon što se uslužni program instalira, može se odmah koristiti. O ovome i mnogim drugim bit će govora kasnije u tekstu.
Pogledajte također: Vodič za instalaciju PHP-a na Ubuntu poslužitelju
Sintaksa
Kao i svaka druga naredba, i tcpdump ima svoju sintaksu. Znajući ga, možete postaviti sve potrebne parametre koji će se uzeti u obzir pri izvršavanju naredbe. Sintaksa je sljedeća:
tcpdump opcije -i sučelja filtri
Kada koristite naredbu, morate navesti sučelje za praćenje. Filtri i opcije su izborne varijable, ali omogućuju fleksibilnije prilagođavanje.
Opcije
Iako nije potrebno navesti opciju, ipak morate navesti dostupne. Tablica ne prikazuje njihov cijeli popis, već samo one najpopularnije, ali oni su više nego dovoljni za rješavanje većine zadataka.
Opcija | Definicija |
---|---|
-A | Omogućuje vam sortiranje paketa u ASCII formatu |
-l | Dodaje funkciju za pomicanje. |
-i | Nakon ulaska morate odrediti mrežno sučelje koje će se nadzirati. Za početak praćenja svih sučelja, nakon opcije unesite riječ "bilo koja" |
-c | Završava postupak praćenja nakon provjere određenog broja paketa |
-w | Generiše tekstualnu datoteku sa izveštajem o verifikaciji |
-e | Prikazuje razinu internetske veze podataka |
-L | Prikazuje samo one protokole koje definirano mrežno sučelje podržava. |
-C | Stvara drugu datoteku za vrijeme snimanja u paketu ako je njegova veličina veća od navedene |
-r | Otvara datoteku za čitanje koja je kreirana pomoću opcije -w |
-j | Format TimeStamp koristiće se za snimanje paketa |
-J | Omogućuje vam pregled svih dostupnih formata TimeStamp |
-G | Služi za kreiranje datoteke dnevnika. Opcija također zahtijeva privremenu vrijednost nakon koje će se stvoriti novi dnevnik |
-v, -vv, -vvv | Ovisno o broju znakova u opciji, izlaz naredbe postat će detaljniji (povećanje je izravno proporcionalno broju znakova) |
-f | Izlaz prikazuje naziv domene IP adresa |
-F | Omogućuje čitanje informacija ne s mrežnog sučelja, već iz navedene datoteke |
-D | Demonstrira sva mrežna sučelja koja se mogu koristiti. |
-n | Deaktivira prikaz imena domena |
-Z | Određuje korisnika pod čijim računom će se stvoriti sve datoteke. |
-K | Preskakanje analize provjere |
-q | Izlog izloga |
-H | Otkriva zaglavlja 802.11s |
-Ja | Koristi se prilikom snimanja paketa u načinu rada monitora |
Ispitajući opcije, malo niže preći ćemo izravno na njihove aplikacije. U međuvremenu će se razmatrati filtri.
Filteri
Kao što je navedeno na samom početku članka, možete dodati filtre u sintaksu tcpdump. Sada će se smatrati da su najpopularnije od njih:
Filter | Definicija |
---|---|
domaćin | Određuje ime domaćina |
neto | Označava IP podmreže i mreže |
ip | Određuje adresu protokola |
src | Prikazuje pakete koji su poslani sa navedene adrese |
dst | Prikazuje pakete koji su primljeni navedenom adresom |
arp, udp, tcp | Filtriranje po jednom od protokola |
luka | Prikazuje informacije povezane sa određenim priključkom |
i, ili | Kombinuje nekoliko filtera u naredbi. |
manje veći | Izlazni paketi manji ili veći od navedene veličine |
Svi gornji filtri mogu se kombinovati jedan s drugim, tako da ćete u izdavanju naredbe vidjeti samo one podatke koje želite vidjeti. Da biste detaljnije razumjeli upotrebu gore navedenih filtera, vrijedi dati primjere.
Pogledajte također: Često korištene naredbe na Linux terminalu
Primjeri upotrebe
Sada će se prikazati često korištene mogućnosti sintakse za naredbu tcpdump. Ne mogu se nabrojiti svi, jer može postojati beskonačan broj njihovih varijacija.
Pogledajte popis sučelja
Preporučuje se svakom korisniku u početku provjeriti popis svih njegovih mrežnih sučelja koja se mogu pratiti. Iz gornje tablice znamo da za to trebate koristiti opciju -D, pa u terminalu pokrenite sljedeću naredbu:
sudo tcpdump -D
Primjer:
Kao što vidite, primjer ima osam sučelja koja se mogu pregledati pomoću naredbe tcpdump. U članku ćemo naći primjere sa ppp0Možete koristiti bilo koju drugu.
Normalno zauzimanje prometa
Ako trebate pratiti jedno mrežno sučelje, to možete učiniti pomoću opcije -i. Ne zaboravite nakon unosa unijeti ime sučelja. Evo primjera takve naredbe:
sudo tcpdump -i ppp0
Napominjemo: prije naredbe trebate unijeti "sudo", jer zahtijeva prava superuse.
Primjer:
Napomena: nakon pritiska na Enter u "Terminalu" neprekidno će se prikazivati presretnuti paketi. Da biste zaustavili njihov protok, morate pritisnuti kombinaciju tipki Ctrl + C.
Ako naredbu izvršite bez dodatnih opcija i filtera, vidjet ćete sljedeći format za prikaz nadziranih paketa:
22: 18: 52.597573 IP vrrp-topf2.p.mail.ru.https> 10.0.6.67.35482: Zastave [P.], red 1: 595, ack 1118, win 6494, opcije [nop, nop, TS val 257060077 ecr 697597623], dužina 594
Gdje je istaknuta boja:
- plava - vrijeme prijema paketa;
- narandžasta - verzija protokola;
- zelena - adresa pošiljatelja;
- ljubičasta - adresa primaoca;
- siva - dodatne informacije o tcp;
- crvena - veličina paketa (prikazana u bajtovima).
Ova sintaksa ima mogućnost prikaza u prozoru. "Terminal" bez upotrebe dodatnih opcija.
Snimanje prometa sa opcijom -v
Kao što je poznato iz tabele, opcija -v omogućava vam povećavanje količine informacija. Uzmimo primjer. Provjerite isti interfejs:
sudo tcpdump -v -i ppp0
Primjer:
Ovdje možete vidjeti da se u izlazu pojavio sljedeći redak:
IP (tos 0x0, ttl 58, id 30675, pomak 0, zastave [DF], proto TCP (6), dužina 52
Gdje je istaknuta boja:
- narandžasta - verzija protokola;
- plava - životni vijek protokola;
- zelena - dužina zaglavlja polja;
- ljubičasta - verzija paketa tcp;
- crvena - veličina paketa.
Također u sintaksi naredbi možete napisati opciju -vv ili -vvv, što će dodatno povećati količinu informacija prikazanih na ekranu.
Opcija -w i -r
Tablica opcija spominjala je mogućnost spremanja svih rezultata u zasebnu datoteku kako biste ih kasnije mogli pogledati. Za to je odgovorna opcija. -w. Korištenje je prilično jednostavno, samo ga navedite u naredbi, a zatim unesite ime buduće datoteke s nastavkom ".pcap". Pogledajmo primjer:
sudo tcpdump -i ppp0 -w file.pcap
Primjer:
Napomena: dok pišete zapise u datoteku, na ekranu "Terminal" ne prikazuje se tekst.
Kad želite pregledati snimljeni izlaz, morate koristiti opciju -r, nakon čega napišite ime prethodno snimljene datoteke. Koristi se bez drugih opcija i filtera:
sudo tcpdump -r file.pcap
Primjer:
Obje su ove mogućnosti odlične u slučajevima kada trebate spremiti velike količine teksta za kasniji raščlanjivanje.
IP filtriranje
Iz tablice filtera to znamo dst omogućava vam da se na ekranu konzole prikazuju samo oni paketi koji su primljeni po adresi koja je navedena u sintaksi naredbe. Stoga je vrlo prikladno pregledati pakete koji su primljeni od vašeg računara. Da bi to postigao, tim treba samo da navede svoju IP adresu:
sudo tcpdump -i ppp0 ip dst 10.0.6.67
Primjer:
Kao što vidite, pored dst, registrovali smo i filter u timu ip. Drugim riječima, rekli smo računalu da će prilikom odabira paketa obratiti pažnju na njihovu IP adresu, a ne na ostale parametre.
Prema IP-u možete filtrirati i odlazne pakete. U primjeru ćemo ponovo dati našu IP adresu. Odnosno, sada ćemo pratiti koji paketi se šalju s našeg računara na druge adrese. Da biste to učinili, pokrenite sljedeću naredbu:
sudo tcpdump -i ppp0 ip src 10.0.6.67
Primjer:
Kao što vidite, u sintaksi naredbe promijenili smo filter dst na src, na taj način naredi mašini da traži pošiljatelja preko IP-a.
HOST Filtriranje
Analogno IP-u u naredbi možemo odrediti filter domaćinfiltrirati pakete prema domaćinu koji vas zanima. Odnosno, u sintaksi, umjesto IP adrese pošiljatelja / primatelja, morat ćete odrediti njegovog domaćina. To izgleda ovako:
sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com
Primjer:
Na slici to možete videti u "Terminal" prikazuju se samo oni paketi koji su s našeg IP adrese poslani na host google.com. Kao što možete razumjeti, umjesto google hosta, možete unijeti bilo koji drugi.
Kao i kod filtriranja IP-a, sintaksa dst može se zameniti sa srcDa biste vidjeli pakete koji se šalju na vaš računar:
sudo tcpdump -i ppp0 src host google-public-dns-a.google.com
Napomena: glavni filter mora biti nakon dst ili src, u protivnom naredba će dovesti do pogreške. U slučaju filtriranja po IP-u, naprotiv, dst i src su ispred ip filtra.
Primjena i i ili filtra
Ako trebate koristiti nekoliko filtera u jednoj naredbi odjednom, tada morate primijeniti filtar i ili ili (ovisi o slučaju). Određivanjem filtera u sintaksi i razdvajajući ih s ovim operatorima, učinit ćete da djeluju kao jedan. Na primjer, izgleda ovako:
sudo tcpdump -i ppp0 ip dst 95.47.144.254 ili ip src 95.47.144.254
Primjer:
Sintaksa naredbi pokazuje što želimo prikazati "Terminal" svi paketi koji su poslani na adresu 95.47.144.254 i paketi primljeni na istu adresu. Možete promijeniti i neke varijable u ovom izrazu. Na primjer, umjesto IP-a, navedite HOST ili direktno zamijenite same adrese.
Priključak i portrange filter
Filter luka savršeni u slučajevima kada trebate dobiti informacije o paketima s određenim priključkom. Dakle, ako samo trebate vidjeti odgovore ili DNS upite, morate odrediti port 53:
sudo tcpdump -vv -i ppp0 port 53
Primjer:
Ako želite vidjeti http pakete, morate unijeti port 80:
sudo tcpdump -vv -i ppp0 port 80
Primjer:
Između ostalog, moguće je odmah pratiti domet portova. Za to se primjenjuje filter. portrange:
sudo tcpdump portrange 50-80
Kao što vidite, u kombinaciji s filterom portrange opcionalne opcije su potrebne. Samo podesite raspon.
Filtriranje protokola
Možete prikazati i samo promet koji se podudara s bilo kojim protokolom. Da biste to učinili, koristite naziv ovog protokola kao filtra. Pogledajmo primjer udp:
sudo tcpdump -vvv -i ppp0 udp
Primjer:
Kao što možete vidjeti na slici, nakon što ste izvršili naredbu u "Terminal" prikazani su samo paketi sa protokolom udp. Prema tome možete filtrirati i druge, npr. arp:
sudo tcpdump -vvv -i ppp0 arp
ili tcp:
sudo tcpdump -vvv -i ppp0 tcp
Neto filter
Operator neto pomaže filtriranje paketa na temelju njihove mrežne oznake. Pomoću njega je jednostavno kao i ostalo - morate odrediti atribut u sintaksi neto, a zatim unesite mrežnu adresu. Evo primjera takve naredbe:
sudo tcpdump -i ppp0 neto 192.168.1.1
Primjer:
Filtriranje veličine paketa
Nismo razmotrili još dva zanimljiva filtera: manje i veći. Iz tablice s filtrima znamo da oni služe za izlaz više paketa podataka (manje) ili manje (veći) veličina navedena nakon unosa atributa.
Pretpostavimo da želimo nadzirati samo pakete koji ne prelaze 50-bitnu marku, tada će naredba izgledati ovako:
sudo tcpdump -i ppp0 manje 50
Primjer:
Sada da prikažemo "Terminal" paketi veći od 50 bita:
sudo tcpdump -i ppp0 veći 50
Primjer:
Kao što vidite, oni se primjenjuju na isti način, jedina razlika je naziv filtra.
Zaključak
Na kraju članka možemo zaključiti da je tim tcpdump - Ovo je odličan alat s kojim možete pratiti bilo koji paket podataka koji se prenosi putem Interneta. Ali za to nije dovoljno samo ući u samu naredbu "Terminal". Željeni rezultat će se dobiti samo ako koristite sve vrste opcija i filtera, kao i njihove kombinacije.