Ako trebate analizirati ili presresti mrežne pakete u Linuxu, najbolje je koristiti konzolni program za to. tcpdump. Ali problem se javlja u njegovom prilično komplikovanom upravljanju. Čini se nezgodnim za običnog korisnika da radi sa uslužnim programom, ali to je samo na prvi pogled. U članku će se objasniti kako je organizovan tcpdump, koja sintaksa ima, kako se koristi i brojni primjeri njegove upotrebe.
Pogledajte i: Tutoriali za postavljanje internet veze u Ubuntu, Debian, Ubuntu Serveru
Instalacija
Većina programera operativnog sistema zasnovanog na Linuxu uključuje uslužni program tcpdump na listi prethodno instaliranih, ali ako iz nekog razloga nije u vašoj distribuciji, uvijek ga možete preuzeti i instalirati putem "Terminal". Ako je vaš OS baziran na Debianu, a ovo je Ubuntu, Linux Mint, Kali Linux i slično, morate pokrenuti ovu naredbu:
sudo apt install tcpdump
Prilikom instaliranja potrebno je unijeti lozinku. Imajte na umu da prilikom kucanja nije prikazan, a da biste potvrdili instalaciju, morate unijeti znak "D" i pritisnite Enter.
Ako imate Red Hat, Fedora ili CentOS, instalacijska naredba će izgledati ovako:
sudo yam instalirajte tcpdump
Nakon instalacije uslužnog programa, možete ga odmah koristiti. O ovome i još mnogo toga će biti govora kasnije u tekstu.
Takođe pogledajte: Vodič za instalaciju PHP-a za Ubuntu Server
Sintaksa
Kao i svaka druga naredba, tcpdump ima svoju sintaksu. Znajući ga, možete podesiti sve potrebne parametre koji će se uzeti u obzir prilikom izvršavanja naredbe. Sintaksa je:
tcpdump opcije -i filteri sučelja
Kada koristite naredbu, morate specificirati sučelje za praćenje. Filtri i opcije nisu obavezne varijable, ali omogućuju fleksibilniju konfiguraciju.
Opcije
Iako nije potrebno specificirati opciju, ipak je potrebno navesti one dostupne. Tabela ne prikazuje njihovu celokupnu listu, već samo one najpopularnije, ali oni su više nego dovoljni za rešavanje većine zadataka.
Opcija | Definicija |
---|---|
-A | Omogućava vam da sortirate pakete u ASCII formatu |
-l | Dodaje scroll funkciju. |
-i | Nakon unošenja morate navesti mrežni interfejs koji će se pratiti. Da biste počeli sa praćenjem svih interfejsa, otkucajte reč "bilo" posle opcije. |
-c | Završava proces praćenja nakon provjere određenog broja paketa. |
-w | Generira tekstualnu datoteku sa izvještajem o verifikaciji. |
-e | Prikazuje nivo internet veze paketa podataka. |
-L | Prikazuje samo one protokole koji su podržani navedenim mrežnim sučeljem. |
-C | Kreira drugu datoteku dok piše paket ako je njegova veličina veća od specificirane. |
-r | Otvara datoteku za čitanje koja je kreirana sa -w opcijom. |
-j | TimeStamp format će se koristiti za snimanje paketa. |
-J | Omogućava vam da vidite sve dostupne formate TimeStamp |
-G | Koristi se za kreiranje datoteke s logovima. Opcija također zahtijeva privremenu vrijednost, nakon čega će se kreirati novi dnevnik |
-v, -vv, -vvv | Ovisno o broju znakova u opciji, izlaz naredbe će biti detaljniji (povećanje je izravno proporcionalno broju znakova) |
-f | Izlaz prikazuje naziv domene IP adrese |
-F | Omogućava vam da pročitate informacije ne iz mrežnog interfejsa, već iz navedenog fajla |
-D | Pokazuje sve mrežne interfejse koji se mogu koristiti. |
-n | Deaktivira prikaz imena domena |
-Z | Određuje korisnika pod kojim će računom biti kreirane sve datoteke. |
-K | Preskoči analizu kontrolnog zbira |
-q | Demonstracija kratkih informacija |
-H | Otkriva zaglavlja 802.11s |
-I | Koristi se za snimanje paketa u modu monitora. |
Ispitujući opcije, u nastavku ćemo se direktno osvrnuti na njihove aplikacije. U međuvremenu će se uzeti u obzir filteri.
Filteri
Kao što je spomenuto na samom početku članka, možete dodati filtre u sintaksu tcpdump. Sada će se razmatrati najpopularniji od njih:
Filter | Definicija |
---|---|
host | Određuje ime hosta. |
net | Određuje IP podmrežu i mrežu |
ip | Određuje adresu protokola |
src | Prikazuje pakete koji su poslani s navedene adrese |
dst | Prikazuje pakete koji su primljeni specificiranom adresom. |
arp, udp, tcp | Filtriranje po jednom od protokola |
port | Prikazuje informacije vezane za određeni port. |
i, ili | Koristi se za kombiniranje više filtera u naredbi. |
manje, veće | Izlazni paketi manji ili veći od specificirane veličine |
Svi gore navedeni filteri se mogu kombinovati jedni s drugima, tako da ćete prilikom izdavanja naredbe promatrati samo one informacije koje želite vidjeti. Da bi se detaljnije razumjelo korištenje gore navedenih filtera, vrijedi dati primjere.
Pogledajte i: Često korištene naredbe u Linux terminalu
Primjeri upotrebe
Često korištene opcije sintakse tcpdump sada će biti navedene. Svi oni ne mogu biti navedeni, jer njihove varijacije mogu biti beskonačne.
Prikaz liste sučelja
Preporučuje se da svaki korisnik na početku proveri listu svih svojih mrežnih interfejsa koji se mogu pratiti. Iz gornje tabele znamo da za to morate koristiti opciju -D, stoga u terminalu pokrenite sljedeću naredbu:
sudo tcpdump -D
Primjer:
Kao što možete vidjeti, postoji osam sučelja u primjeru koji se može pregledati pomoću naredbe tcpdump. Članak će dati primjere ppp0, možete koristiti bilo koju drugu.
Normalno snimanje saobraćaja
Ako trebate pratiti jedno mrežno sučelje, to možete učiniti s opcijom -i. Ne zaboravite da unesete ime interfejsa nakon njegovog unošenja. Evo primjera izvršavanja takve naredbe:
sudo tcpdump -i ppp0
Imajte na umu: potrebno je da unesete "sudo" pre same komande, jer zahteva pravo super-korisnika.
Primjer:
Napomena: nakon pritiska na Enter u "Terminalu", presretnuti paketi će biti prikazani kontinuirano. Da biste zaustavili njihov protok, morate pritisnuti kombinaciju tipki Ctrl + C.
Ako pokrenete naredbu bez dodatnih opcija i filtera, vidjet ćete sljedeći format za prikazivanje praćenih paketa:
22: 18: 52.597573 IP vrrp-topf2.p.mail.ru.https> 10.0.6.67.35482: Zastave [P.], seq 1: 595, ack 1118, win 6494, opcije [nop, nop, TS val 257060077 ecr 697597623], dužina 594
Gdje je boja istaknuta:
- plavo - vrijeme prijema paketa;
- narandžasta - verzija protokola;
- zelena - adresa pošiljatelja;
- ljubičasta - adresa primaoca;
- siva - dodatne informacije o tcp;
- red - veličina paketa (prikazana u bajtovima).
Ova sintaksa ima mogućnost izlaza u prozoru "Terminal" bez upotrebe dodatnih opcija.
Snimite promet sa -v opcijom
Kao što je poznato iz tabele, opcija -v omogućava vam da povećate količinu informacija. Razmotrimo jedan primjer. Provjerite isto sučelje:
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 boja istaknuta:
- narandžasta - verzija protokola;
- plavo - život protokola;
- zeleno - dužina zaglavlja polja;
- purple - verzija tcp paketa;
- crvena - veličina paketa.
Takođe u sintaksi komandi možete napisati opciju -vv ili -vvv, što će dodatno povećati količinu informacija prikazanih na ekranu.
Opcija -w i -r
Tablica s opcijama spominje mogućnost spremanja svih izlaznih podataka u zasebnu datoteku, tako da se mogu vidjeti kasnije. Opcija je odgovorna za to. -w. Vrlo je jednostavan za upotrebu, samo unesite u naredbu i zatim unesite ime budućeg fajla sa ekstenzijom ".pcap". Razmotrimo sav primjer:
sudo tcpdump -i ppp0 -w file.pcap
Primjer:
Imajte na umu: dok pišete zapise u datoteku, na ekranu "Terminal" se ne prikazuje tekst.
Kada želite pogledati snimljeni izlaz, morate koristiti opciju -rpraćeno imenom prethodno snimljene datoteke. Primjenjuje se bez drugih opcija i filtera:
sudo tcpdump -r file.pcap
Primjer:
Obje ove opcije su savršene u slučajevima kada je potrebno spremiti velike količine teksta za kasniju analizu.
IP filtriranje
Iz tabele filtera to znamo dst dozvoljava vam da na ekranu konzole prikažete samo one pakete koji su primljeni na adresu navedenu u sintaksi naredbe. Zbog toga je veoma pogodno da vidite pakete koje vaš računar primi. Da biste to uradili, tim treba samo da navedete vašu IP adresu:
sudo tcpdump -i ppp0 ip dst 10.0.6.67
Primjer:
Kao što vidite, osim toga dst, u timu smo registrovali i filter ip. Drugim rečima, rekli smo kompjuteru da će pri izboru paketa obratiti pažnju na njihovu IP adresu, a ne na druge parametre.
IP-om možete filtrirati i slati pakete. U primjeru ponovo dajemo IP. To jest, sada ćemo pratiti koji se paketi šalju sa 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 možete vidjeti, promijenili smo filtar u sintaksi naredbi. dst on src, time govoreći mašini da traži pošiljaoca putem IP-a.
HOST filtriranje
Po analogiji sa IP-om u timu, možemo odrediti filter hostda ukloni pakete sa domaćinom od interesa. To jest, u sintaksi, umjesto IP adrese pošiljaoca / primatelja, morat ćete odrediti njegov host. Izgleda ovako:
sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com
Primjer:
Na slici možete to vidjeti "Terminal" Prikazuju se samo oni paketi koji su poslani s našeg IP-a na google.com host. Kao što možete vidjeti, umjesto google hosta, možete unijeti bilo koji drugi.
Kao i kod IP filtriranja, sintaksa je: dst može se zamijeniti srcDa biste vidjeli pakete koji se šalju na računalo:
sudo tcpdump -i ppp0 src host google-public-dns-a.google.com
Napomena: host filter mora biti nakon dst ili src, inače će naredba generirati grešku. U slučaju IP filtriranja, naprotiv, dst i src su ispred ip filtera.
Filtrirajte i i ili
Ako trebate koristiti nekoliko filtera odjednom u jednoj naredbi, onda morate primijeniti filtar. i ili ili (zavisi od slučaja). Utvrđujući filtere u sintaksi i odvajajući ih sa ovim izjavama, vi radite kao jedan. U primjeru, izgleda ovako:
sudo tcpdump -i ppp0 ip dst 95.47.144.254 ili ip src 95.47.144.254
Primjer:
Iz sintakse naredbi možete vidjeti da želimo prikazati "Terminal" sve pakete koji su poslani na adresu 95.47.144.254 i paketi primljeni na istoj adresi. Također možete promijeniti neke varijable u ovom izrazu. Na primjer, umjesto IP-a, navedite HOST ili izravno zamijenite adrese.
Port port i portrange
Filter port savršen za kada trebate dobiti informacije o paketima s određenim portom. Dakle, ako trebate samo vidjeti odgovore ili DNS upite, morate odrediti port 53:
sudo tcpdump -vv -i ppp0 port 53
Primjer:
Ako želite pogledati http pakete, morate unijeti port 80:
sudo tcpdump -vv -i ppp0 port 80
Primjer:
Između ostalog, moguće je odmah pratiti raspon portova. Da biste to uradili, primenite filter portrange:
sudo tcpdump portrange 50-80
Kao što možete vidjeti, zajedno s filtrom portrange Nije potrebno navesti dodatne opcije. Samo podesite opseg.
Filtriranje protokola
Također možete prikazati samo promet koji odgovara bilo kojem protokolu. Da biste to uradili, koristite ime ovog protokola kao filter. Pogledajmo primjer udp:
sudo tcpdump -vvv -i ppp0 udp
Primjer:
Kao što možete vidjeti na slici, nakon izvršavanja naredbe u "Terminal" prikazani su samo paketi sa protokolom udp. Prema tome, možete filtrirati druge, na primjer, arp:
sudo tcpdump -vvv -i ppp0 arp
ili tcp:
sudo tcpdump -vvv -i ppp0 tcp
Filter net
Operator net pomaže filtrirati pakete na osnovu oznake njihove mreže. Lako je koristiti kao i ostatak - morate specificirati atribut u sintaksi net, zatim unesite mrežnu adresu. Evo primjera takve naredbe:
sudo tcpdump -i ppp0 net 192.168.1.1
Primjer:
Filtrirajte prema veličini paketa
Nismo razmatrali još dva zanimljiva filtera: manje i veći. Iz tablice s filtrima znamo da služe za izlaz više paketa podataka (manje) ili manje (veći) veličinu određenu nakon unosa atributa.
Pretpostavimo da želimo samo nadgledati pakete koji ne prelaze 50 bita, onda će naredba izgledati ovako:
sudo tcpdump -i ppp0 manje 50
Primjer:
Sada ćemo prikazati "Terminal" paketi veći od 50 bita:
sudo tcpdump -i ppp0 veći 50
Primjer:
Kao što vidite, koriste se jednako, jedina razlika je u nazivu filtera.
Zaključak
Na kraju članka možemo zaključiti da je tim tcpdump - Ovo je odličan alat kojim možete pratiti sve pakete podataka koji se prenose preko Interneta. Ali za to nije dovoljno samo ući u samu komandu "Terminal". Da biste postigli željeni rezultat, dobićete samo ako koristite sve vrste opcija i filtera, kao i njihove kombinacije.