Tcpdump
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
- http://kuutorvaja.eenet.ee/wiki/V%C3%B5rgudiagnostika#tcpdump
- http://en.wikipedia.org/wiki/Tcpdump
- http://www.tcpdump.org/tcpdump_man.html
- http://openmaniak.com/tcpdump.php
- http://linux.die.net/man/8/tcpdump
- http://danielmiessler.com/study/tcpdump/
- http://www.alexonlinux.com/tcpdump-for-dummies
- http://akadeemia.alweiler.ee/?q=node/282
Autor
Katrin Kukk A22