Tcpdump

From ICO wiki
Revision as of 22:14, 24 April 2011 by Kakukk (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Sissejuhatus

See artikkel on loodud eesmärgiga, tutvustamaks Tcpdumpi ning on mõeldud kõigile, kes soovivad seda programmi tundma õppida või jäävad kasutamisel hätta.

Tcpdump on käsurealt käivitatav paketianalüsaator, mis võimaldab salvestada ning kuvada erinevaid võrgus liiklevaid andmepakette. Tegemist BSD litsentsi all avaldatud vabavaraga. Tcpdump töötab enamikel Unixi distributsioonidel, nagu Linux, Solaris, BSD, Mac OS-X, HP-UX ja AIX. Nendes süsteemides kasutatakse pakettide püüdmiseks libpcap teeki.

Windowsile mõeldud versioon kannab nime WinDump.

Ajalugu

Algupäraselt loodud, 1987. aastal, Van Jacobsoni, Craig Lerese ja Steven McCanne poolt, kes töötasid tol ajal Lawrence Berkley laboratooriumis võrguarenduse grupis.

Kasutusala

Tcpdump analüüsib võrgu käitumist, suutlikkust ning rakendusi, mis toodavad ning võtavad vastu võrguliiklust. Seda saab kasutada ka võrgu infrastruktuuri analüüsiks, kontrollimaks kas marsruutimine toimub eesmärgipäraselt. Tcpdumpi kasutatakse samuti ka võrguvigade avastamiseks.

Seda programmi on võimalik kasutada ka teise kasutaja või arvuti võrguliikluse pealt kuulamiseks. Tcpdump võimaldab valida IP aadressi järgi välja mingi arvuti ning hakata vaatlema selle hosti andmevahetust teiste hostidega. Andmete ilmumine toimub terminalis küll teatava viivisega, kuid see-eest võib programmi käima jätta ka pikema aja vältel. Kasutaja, kellel on piisavad kasutajaõigused, võib käituda kui marsruuter või gateway, läbi kelle käib krüpteerimata võrguliiklus (nagu näiteks Telnet või HTTP) ning seeläbi kasutada Tcpdump-i, et vaadelda logimise ID-sid, salasõnu, URL-e, kuvatavate veebilehtede sisu või muud krüpteerimata informatsiooni.

Kasutaja võib lisada ka valikulisi BPF-i põhiseid filtreid, et piirata Tcpdump-i poolt kuvatavate pakettide arvu. See võimaldab parandada ülevaadet tiheda võrguliiklusega võrgus kuvatavast infost.

Tcpdump programmiga saab filtreerida liiklust järgnevate tunnuste järgi:

  • Protokoll (nt tcp, icmp, udp, arp)
  • Andmevahetuse lähte ja sihtpunkti port
  • Andmevahetuse lähte ja sihtpunkti ip aadress
  • IP paketi lippude järgi (nt salvestada vaid SYN pakette)
  • Paketi suurus

OpenBSD puhul lisanduvad järgmised võimalused:

  • Paketifiltri reegli number,
  • Paketifiltri reegline määratud tegevus (pass, block, nat, rdr jt ning logitud liiklus)

Tcpdump-i tulemuse saab täies mahus salvestada faili ning ühtlasi on võimalik ka esitada IP- paketti puudutavaid andmeid programmi standardväljundisse. Oluline on teada, et sisenevad paketid paistavad sellisena nagu nad olid enne RDR-teisendust ning väljuvad paketid on sellised nagu nad on peale NAT-teisendust.

Haldamine

Tcpdump-i installeerimine:

apt-get install tcpdump

Näitab, millistest programmidest sõltub Tcpdump:

apt-cache depends tcpdump

Kuvab tcpdump-ist sõltuvad programmid:

apt-cache rdepends tcpdump

Kuvab Tcpdump-i versiooni:

apt-cache policy tcpdump

Kustutab Tcpdump-i:

apt-get remove tcpdump

Lühiülevaade

tcpdump [ -AdDeflLnNOpqRStuUvxX ] [ -c arv ]
[ -C faili suurus] [ -F failinimi]
[ -i liides ] [ -m moodul ] [ -M võti ]
[ -r fail ] [ -s püütava info hulk baitides ] [ -T tüüp ] [ -w fail ]
[ -W failide arv ]
[ -E spi@ipaddr salastusvõti ]
[ -Z kasutaja ] [ avaldis ]

Parameetrid

-A Kuva kõik paketid (ASCII). Kasulik veebilehtede kuvamiseks.

-c Sulge programm, kui pakettide loendus on lõppenud.

-d Salvestab paketi sisu inimloetavale kujule ning lõpetab töö.

-D Kuvab süsteemile nähtavate võrguseadmete nimekirja. Esitatakse võrguseadmega seotud number, liidese nimi ning võimalusel võrguseadme kirjeldus. Näidatava võrguliidese nime ja numbrit saab määrata -i parameetriga. Antud parameeter ei pruugi olla saadaval vanemates tcpdump-i versioonides, kus puudub pcap_findalldevs() funktsioon.

-e Kuvab iga rea algusesse paketi päise.

-E Võimaldab dekrüpteerida ja kuvada ka krüpteeritud pakette (eeldab krüpteerimisvõtme olemasolu).

-i Vaikimisi kuvatakse kõige väiksema numbriga võrguseade. Koos any parameetriga kuvatakse kõik hetkel nähtaval olevad ning infot saatvad/vastu võtvad võrguseadmed.

-n Ära konverteeri aadresse (näiteks hosti aadresse, pordi numbreid jne) nimedeks.

-q Kärbitud väljund - kuvatakse vähem protokolli informatsiooni.

-r Kuvatakse eelnevalt failidesse (-w atribuudiga) salvestatud pakette.

-S Kuvatakse absoluutse numbriga järjendinumbrid.

-s Kinni püütud info hulk baitides (vaikimisi 65535 baiti).

-T Parameeter pakettide filtreerimiseks. Hetkel kasutusel olevad tüübid on aodv(Ad-hoc On-demand Distance Vector protocol), cnfp (Cisco NetFlow protocol), rpc (Remote Procedure Call), rtp (Real-Time Applications protocol), rtcp (Real-Time Applications control protocol), snmp (Simple Network Management Protocol), tftp (Trivial File Transfer Protocol), vat (Visual Audio Tool), ja wb (distributed White Board).

-t Ära kuva igal real ajatemplit.

-v -vv -vvv Suurenda tagastatava info hulka.

-w Salvesta info failidesse. Hilisemalt on võimalik failide sisu taaskord kasutajale kuvada, kasutades -r parameetrit.

-X Kuva paketi sisu nii kaheksand- kui ka ASCII kujul. Väga tõhus tööriist uute protokollide analüüsimisel.

-Z Kasutaja kõrgendatud õiguste langetamine pärast pakettide kinnipüüdmist (olles root kasutaja) ning muudab kasutaja ID user-iks.

Näited

Teatud Unix-i sarnastes operatsioonisüsteemides peab kasutajal tcpdump-i kasutamiseks olema “superkasutaja” kasutajaõigused, kuna pakettide püüdmine eeldab kõrgendatud õiguseid. Kasutaja (kellel tavapäraselt kõrgendatud õigusi ei ole) õiguste langetamiseks peale pakettide pealtkuulamise alustamist on ette nähtud -Z lipp. Unixi operatsioonisüsteemides on võimalik pakettide pealtkuulamist lubada ka eri õigusteta kasutajatele, mis peale ei ole “superkasutaja” õigused enam nõutud.

Kuva konkreetse võrguliidese võrguliiklust:

tcpdump -i eth0

Kuva võrgus liiklevaid UDP pakette:

tcpdump udp

Kuva TCP port 80 võrguliiklust:

tcpdump port http

Kuva võrguliiklust, failis ära määratud filtri põhjal:

tcpdump -F file_name

Loo fail, kus on eelseadistatud filter (antud juhul TCP 80.port):

vim file_name
port 80

Peata pakettide salvestamine peale 20. paketti:

tcpdump -c 20

Saada salvestise väljavõte faili, selle asemel, et otse ekraanile kuvada:

tcpdump -w capture.log

Loe eelsalvestatud faili sisu:

tcpdump -r capture.log

Kuva pakette, mille algallikas või sihtmärk on “www.openmaniak.com”:

tcpdump host www.openmaniak.com

Kuva FTP pakette, mis pärinevad aadressilt 192.168.1.100 ning on suunatud aadressile 192.168.1.2:

tcpdump src 192.168.1.100 and dst 192.168.1.2 and port ftp

Kuva pakettide sisu:

tcpdump -A

Kuva kõik paketid, mis saabuvad või tulevad hostist nimega sundown:

tcpdump host sundown

Kuva helios’e ja hot’i või ace’i vaheline võrguliiklus:

tcpdump host helios and \( hot or ace \)

Kuva kõik ace’i ning kõikide hostide, v.a helios’e, vahelised IP paketid:

tcpdump ip host ace and not helios

Kuva kogu ftp pakettide võrguliiklus läbi interneti gateway ‘snup’:

tcpdump 'gateway snup and (port ftp or ftp-data)'

Pöörata tähelepanu sellele, et väljend on jutumärkides, et tcpdump-i kest käsku valesti ei tõlgendaks.

Kuva võrguliiklust, mis ei tulene ega ei ole saadetud localhost’i:

tcpdump ip and not net localnet

Kuva kõikide mitte-localhost’ide alguse ja lõpu (SYN ja FIN) paketid:

tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'

Kuvada kõik IPv4 HTTP paketid, mis seonduvad 80. pordiga, näiteks kuvada ainult paketid, mis sisaldavad andmeid, mitte näiteks SYN ja FIN pakette:

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

Kuva pikemaid kui 576 baidiseid pakette, mis liiguvad läbi gateway snup:

tcpdump 'gateway snup and ip[2:2] > 576'

Kuva kõik IP broadcast või multicast paketid, mis ei ole saadetud läbi ethernet-i broadcasti või multicasti.

tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'

Kuva kõik ICMP paketid, mis ei ole echo päringud ega vastused (näiteks mitte ping paketid):

tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-echoreply'

Kokkuvõte

Tcpdump on suure hulga seadistatavate parameetritega palju võimalusi pakkuv võrguliikluse testimise ja jälgimise programm. Esmapilgul võib olla andmete tõlgendamine küllaltki keerukas, kuid süvenemise korral on neist võimalik aru saada.

Kasutatud Kirjandus

  1. http://kuutorvaja.eenet.ee/wiki/V%C3%B5rgudiagnostika#tcpdump
  2. http://en.wikipedia.org/wiki/Tcpdump
  3. http://www.tcpdump.org/tcpdump_man.html
  4. http://openmaniak.com/tcpdump.php
  5. http://linux.die.net/man/8/tcpdump
  6. http://danielmiessler.com/study/tcpdump/
  7. http://www.alexonlinux.com/tcpdump-for-dummies
  8. http://akadeemia.alweiler.ee/?q=node/282

Autor

Katrin Kukk A22