08 January 2013

tcpdump mini howto


Tcpdump je packet sniffer program - jedan od osnovnih alata za dijagnostiku mreže. On "hvata" pakete koji prolaze kroz mašinu i može da ih sačuva u fajl. Ovaj fajl se kasnije može analizirati i samom komandom tcpdump, ali i alatima kao što je Wireshark. Mogu se čuvati čitavi paketi ili samo njihovi headeri. Pokretanje komande bez argumenata će na ekran ispisivati saobraćaj sa prvog od mrežnih interfejsa (ignoriše se lo).

Prilikom čuvanja rezultata izvršavanja u fajl, tcpdump će sačuvati samo prvih 68 bajtova podataka iz svakog paketa. Ostatak se odbacuje. Ovo ponašanje je moguće podešavati opcijom -s.

Moguće je koristiti i filtere paketa. Takvi izrazi su: port, portrange, ether, net, host. Uz njih se mogu koristiti i prefiksi (ili sufiksi) src i dst. Ako se prefiksi ili sufiksi ne navedu, podrazumijeva se saobraćaj u oba smjera.
Tcpdump omogućava pravljenje kompleksnih filtera korištenjem izraza not, and, or, length, greater, less, kao i korištenje zagrada u cilju grupisanja izraza, tj. određivanja prioriteta izvršavanja.

Opcije tcpdumpa
  1. -A - Prikazuje sadržaj capture-ovanih paketa u ASCII formatu.
  2. -c - Capturuje samo određen broj paketa.
  3. -e - Prikazuje ethernet header svakog paketa.
  4. and - Kvalifikator - logičko i. Koristi se u kompleksnim upitima za tcpdump.
  5. ether - Filtriranje paketa po Ethernet (MAC) adresi. Može se koristiti u oblicima ether src, ether dst i ether host.
  6. host - filtriranje paketa po imenu hosta. Može da se koristi i u oblicima host, src host i dst host.
  7. -i - Capturuje pakete sa određenog mrežnog interface-a.
  8. less N - Capture-uje pakete koji su manji od N bajtova. Vidjeti primjer.
  9. -n - Ne razrješava DNS imena. Ovo omogućava brži rad komande i smanjuje ukupnu količinu paketa koji se vide na ekranu (nema DNS upita)
  10. net - Filtriranje paketa po subnetu. Može se koristiti u oblicima src net, dst net  i net. Ova komanda zahtijeva i korišćenje mask parametra.On se može navoditi po staroj notaciji navođenjem netmaska ili po CIDR notaciji. Vidjeti primjere.
  11. not - Izraz. Koristi se za filtriranje saobraćaja - ako ne želimo da tcpdump prikazuje saobraćaj po nekom portu.
  12. or - Kvalifikator - logičko ili. Koristi se u kompleksnim upitima za tcpdump.
  13. port - Koristi se za označavanje porta. Ako se navedu izrazi src ili dst prije njega, može se specifikovati da li se filter odnosi na dolazni ili odlazni saobraćaj. Ako se ništa ne navede, izraz port će filtrirati sav saobraćaj po nekom portu. Primjer:
    tcpdump -n dst port 80 - Prikazuje sve odlazne HTTP pakete.
  14. portrange - Radi vrlo slično kao izraz port, međutim, odnosi se na rang portova. Takođe može da ima prefikse src i dst.
  15. -r - Koristi se za čitanje fajla sa capture-ovanim paketima.
  16. -s - Koristi se prilikom snimanja rezultata u fajl i označava koliko će se podataka snimiti iz svakog paketa. Ako se navede vrijednost 0, snimiće sve pakete u kompletu (neće odbacivati ostatak od prvih 68 bajtova).
  17. -x - Prikazivanje sadržaja TCP paketa u heksadecimalnom obliku. Podrazumijevano, prikazaće prvih 82 bajta paketa (ethernet header se ne prikazuje). Komandom -s je moguce kontrolisati broj bajtova koji se prikazuju, a korišćenjem komande -xx umjesto -x ce se prikazati i ethernet header - dodatnih 14 bajtova.
  18. -v - Verbose mode. Korištenje opcije -vv daje više detalja, a korišćenje -vvv još više detalja.
  19. -w - Snima izlaz tcpdumpa u fajl
Primjeri korišćenja:
  1. tcpdump -ni eth0 not port 22 - Filtrira saobraćaj tako da prikazuje sve pakete osim onih koji dolaze na port 22 (SSH). Ovo je posebno korisno ako se preko SSH pristupa sistemu - ignoriše sve pakete koji se razmjenjuju između SSH klijenta i servera. Takođe, u komandi je rečeno da ne razrješava DNS imena i da se "sluša" samo interfejs eth0.
  2. tcpdump -c 10 - Capturuje samo prvih 10 paketa.
  3. tcpdump -w file.cap -s 0 - U navedeni fajl snima rezultate izvršavanja komande i to čitave data pakete, bez odsijecanja.
  4. tcpdump -r file.cap - Čitanje paketa iz navedenog fajla
  5. tcpdump -e -n not port 22 - Prikazuje ethernet headere svakog paketa osim paketa koji dolaze na port 22.
  6. tcpdump -n src portrange 22-23 - Primjer filtriranja paketa za SSH i Telnet saobraćaj.
  7. tcpdump src host example.com - Ispisuje sve pakete koji dolaze sa domena example.com.
  8. tcpdump src net 81.93.11.100 mask 255.255.255.0
  9. tcpdump src net 81.93.11.100/24 - Obe varijante (klasična i CIDR notacija) rade isto, a to je filtriranje paketa koji dolaze sa mreže 81.93.77.100.
  10. tcpdump -XX greater 100 and \(src host google.com or src host microsoft.com\) - Prikazuje sve pakete (uključujući i Ethernet header) veće od 100kb, koji dolaze sa domena google.com ili microsoft.com. Karakter "\" znači escape sekvencu koja se navodi ispred znaka zagrade, da bi se zagrada u takvom obliku i poslala komandi tcpdump. Ona određuje prioritet izvršavanja komandi. U ovom slučaju, da nema zagrade, nikada ne bi došlo do capture-ovanja paketa sa microsoft.com.
    Ovaj primjer se mogao napisati i kao
    tcpdump -XX greater 100 and \(src host google.com or microsoft.com \).
    Izostavljen je prefiks src host za domen microsoft.com. Ovo se koristi zbog pojednostavljenja korišćenja komande i boljeg pregleda, tj. kada se kvalifikator koristi dva ili više puta u nizu, dovoljno ga je navesti samo za prvi host.
  11. tcpdump -w l_1024.pcap less 1024 - Capture-uje pakete koji su manji od 1024 bajta i snima ih u fajl l_1024.pcap.

No comments:

Post a Comment

Vas komentar...