OSI in TCPIP

Na podlagi znanih in tipičnih simptomov pogosto ugotovimo razlog za težave. Tisti, ki imajo več znanja in izkušenj, imajo daljši seznam možnih rešitev, vseeno pa se lahko tudi pri njih izčrpa, ne da bi prišli do rešitve. Kaj naredi pri bolezni zdravnik? Pomaga si z boljšo metodo – meritvijo pritiska, analizo krvi, rentgensko sliko … Ko je treba, naredi korak bližje reševanju težav, saj se z resnejšim pristopom od simptomov približamo dejanskemu stanju – pridobili smo več informacij.

Za vsak prehlad seveda ne delamo nepotrebnih preiskav in izgubljamo časa. Podobno velja v svetu informatike in telekomunikacij. Nekaj znanih pravil, ki jih hitro sprejmejo tudi začetniki: preveri priključne kable, poskusi s ponovnim zagonom računalnika (oziroma praktično uporabo izreka »Reboot is always good«), preveri aktivnost tipke Caps Lock, odstrani program, ki si ga namestil pred začetkom težav, odstrani novo strojno opremo... Primeri klicnih centrov za pomoč uporabnikov kažejo, da je mogoče s seznamom »top 10« pravil (ali še kakšnim dodatnim) brez težav odpraviti težave večjega dela uporabnikov. To seveda ne pomeni, da lahko na tem delovnem mestu uporabimo tudi papigo, saj je poleg širokega poznavanja tematike treba imeti tudi dober občutek za poslušanje in še boljše živce. Žal tudi tu pogosto velja pravilo 20 : 80, ki pomeni, da v 20 odstotkih časa dosežemo 80 odstotkov rezultata. To pomeni, da za preostanek uporabimo skoraj štirikrat toliko časa, vseeno pa končni rezultat ni vedno idealen.

Svetova informatike in telekomunikacij se zelo hitro razvijata. Danes je skoraj nemogoče obvladati do podrobnosti vsa področja strokovnjakom, kaj šele laikom. Ob količini informacij, ki smo jim izpostavljeni vsi, ki vsakodnevno ne delamo na določenem področju, zato počasi pozabljamo vse (ne)pomembne »malenkosti«, ki so lahko odločilnega pomena pri odpravljanju morebitnih težav. Zato so kot nalašč različni pripomočki, ki omogočajo diagnostiko, ne da bi bilo uporabniku treba podrobno poznati mehanizme, ki jih ti uporabljajo. Na spletnih straneh najdemo tudi precej brezplačnih orodij. Določeni namenski izdelki pa imajo običajno precej zasoljeno ceno, ki jo je v manjših okoljih ali pri občasni rabi le težko zagovarjati.

Kopijo prometa dobi tudi vohljač.

KAMOR KOLI SE OBRNEŠ, TCP/IP

Večina sodobnih komunikacij temelji danes na uporabi protokola TCP/IP (Transmission Control Protocol/Internet Protocol). O tej tematiki smo večkrat že podrobneje govorili, zato ponovimo le najpomembnejša dejstva, ki jih bomo potrebovali v nadaljevanju. Ta vseobsegajoči protokol je dejansko skupina več protokolov, ki jih lahko razdelimo v štirih nivoje (Link, Network, Transport, Application Layer). Vsak od nivojsko višjih protokolov dodaja funkcionalnosti glede na nižje nivoje.

Najnižji nivo povezave (link), zagotavlja fizično izvedbo povezave (omrežna kartica, gonilniki). Ethernet kot prevladujoč tip omrežij definira skupina IEEE 802.3 (http://grouper.ieee.org/groups/802/3/). Ethernetni protokol na nivoju povezave obdeluje bloke podatkov, ki so združeni v okvirje (frame).Vsak ethernetni okvir vsebuje glavo (izvorni in ponorni naslov, dolžina, kontrolna polja), ki mu sledi informacija (payload). Na koncu sledi še konec (CRC-nadzor, zaključitev okvirja).

Nivoju povezave sledi omrežni nivo (network). Najpomembnejši protokol na tem nivoju je IP (Internet Protocol), ki skrbi za pošiljanje paketov oziroma datagramov iz ene točke na drugo. To doseže prek nižjega nivoja povezave. Na tem nivoju uporabljamo IP-naslove, ki jih ne smemo zamenjati z nižje ležečim in unikatnim MAC (Media Access Control). MAC-naslov je določen že pri proizvodnji (prvi del naslova je vezan na proizvajalca, druga polovica pa se spreminja), medtem ko IP-naslov določamo programsko. Razliko med obema najlažje razumemo s primerjavo: MAC-naslov je naslov uredništva na Dunajski 5 v Ljubljani (ki se načelno ne spreminja), IP-naslov, ki kaže na to uredništvo pa je lahko »redakcija«, »uredništvo« ... Povezavo med fizičnim MAC-naslovom in programskim IP-naslovom, vzdržujemo preko protokola ARP (Address Reslolution Protocol). V ukazni vrstici okenskega okolja lahko za test izpišemo tabelo ARP z ukazom arp –a. Izpis, ki ga dobimo, je podoben temu:

Internet AddressPhysical AddressType
192.168.200.100-50-fc-f8-b9-fc dynamic
192.168.200.200-21-85-9d-9a-9a dynamic
192.168.200.3 00-0d-88-a3-b6-87 dynamic

Če je ta tabela prazna, pošljemo paket na določen IP-naslov in poskusimo znova.

IP-protokol skrbi za prenos paketov znotraj omrežja in med omrežji. IP-paket je sestavljen iz glave in podatkov. Glava vsebuje podatke o uporabljeni različici IP-protokola, dolžini glave, skupni dolžini paketa, kontrolna polja, kontrolnimi biti ter izvornim in ponornim IP naslovom. O naslovih (javnih in privatnih, kateri del označuje omrežje in kaj je naslov uporabnika, kaj je maska) ter uporabi le teh smo v preteklosti že pisali, zato se bomo tej tematiki izognili.

Na transportnem nivoju najdemo protokola TCP (Transmission Control Protocol) in UDP (User Datagram Protocol) oziroma »izpeljanke teh. UDP je preprost in pred prenosom ne potrebuje vzpostavitve povezave. Poleg tega UDP sam nima mehanizma, ki bi preverjal zanesljivost dostave paketov. Vseeno je UDP uporabljen za različne časovno kritične aplikacije, pri katerih mora biti transport izveden pravočasno (ponovno pošiljanje paketov ni smiselno, saj je prepozno). Naprednejši je TCP, ki vsebuje mehanizme za preverjanje prenosa. Pred začetkom izmenjave podatkov med točkama se vzpostavi povezava, prek katere se bo izvajalo tudi potrjevanje sprejetih paketov. TCP vsebuje mehanizme, ki pri neustreznem prispetju paketov (nepravilnem vrstnem redu) omogočajo pravilno zlaganje teh. TCP pošilja podatke v blokih, ki jih imenujemo segmenti. V povezavi s protokoloma TCP in UDP, se srečujemo tudi s pojmom vrat (portov). Oznaka oziroma število določenih vrat nam pove, kateri modul sprejema oziroma pošilja podatke (npr. SSH 22, telnet 23 ...).

Na najvišjem, aplikacijskem nivoju (application layer) najdemo različne storitve (servise), ki jih uporabljamo v določenih aplikacija (HTTP, FTP …).

SniffPass sodi med namenske vohljače.

PO NIVOJIH GOR IN DOL

Vse štiri nivoje smo močno, močno poenostavili. Hitra ponovitev tematike pa nas spomni na nekaj pomembnih dejstev, Če želimo uspešno delovanje določene storitve (npr. delovanje spletnega brskalnika, ki uporablja protokol HTTP) med dvema točkama, moramo zagotoviti nemoteno komunikacijo med vsemi omenjenimi nivoji (navzdol in navzgor) ter vzdolž celotne poti. Če bo kjerkoli nastopila napaka, delovanje posamezne storitve ne bo brezhibno ali bo morda celo onemogočeno. Morda bo to še najlažje razumeti z zgledom običajnega telefonskega pogovora. Uporabnik, ki kliče, mora imeti brezhiben telefonski aparat, povezavo do telefonske centrale, delujoče omrežje, brezhibno povezavo na sogovorčevi strani ... Če se kjerkoli pojavi težava (mikrofon, povezovalna žica, telefonski kabel ...), storitev ne bo mogoča. Podobno velja za storitve prek omrežja TCP/IP, le da je ta problematika za marsikoga manj »otipljiva«.

Verjetno je težava le v napačnem pojmovanju. Poskusimo razumeti celoten promet kot različne vrste poštnega prometa. Določeno informacijo lahko pošljemo prek razglednice, pisma, telegrama, paketa ... Glede na vrsto pošiljke se lahko zgodi, da dobimo o ustreznem prenosu/neuspehu tudi sporočilo. Določene vrste prometa (telegrami) se obravnavajo prednostno (prioritetno). Pisemska pošiljka se lahko do naslovnika poškoduje ali celo izgubi. Naslovnik morda ni znan ali pa je prišlo do »kraje« pošiljke. Takšne in podobne primere srečujemo tudi v omrežjih. Če bi želeli ugotoviti, kaj je bilo z našo pošiljko (IP-paketom) narobe, bi morali slediti poti paketa vzdolž celotne poti in dogodkom, ki so z njim povezani. Enak prijem lahko uporabimo v omrežju TCP/IP, le da nam največkrat ne bo treba slediti paketom vzdolž celotne poti.

Wireshark lahko izmenjuje podatke tudi z drugimi vohljači.

KAJ JE VOHLJAČ

V svetu elektrotehnike je osnovni pripomoček univerzalni merilni inštrument (po domače unimer). Z njim lahko hitro in preprosto izmerimo osnovne veličine, kot so tok, napetost in upornost. S temi podatki lahko včasih že dobimo določene informacije. Podobno velja tudi v omrežjih. Za osnovno diagnostiko zadoščajo osnovni pripomočki (npr. ping), ni pa nujno, da dobimo pravo informacijo. Na primer, onemogočeni promet ICMP onemogoča ping oddaljene delovne postaje ali strežnika, napačen »rezultat« pa je, da oddaljeni IP-naslov ni dostopen prek omrežja oziroma računalnik/strežnik ni priključen v omrežje.

Pravi pristop je poslušanje toka podatkov/paketov in njihova analiza. Seveda potrebujemo za to ustrezen pripomoček. Prva možnost je uporaba namenskih naprav, njihova največja slabost pa je razmeroma visoka cena. Poleg tega je treba zaradi hitrega razvoja in pojava novih protokolov takšno napravo redno posodabljati (nadgrajevati programsko opremo). Vemo pa, da je protokol TCP/IP danes osnova večine računalniških omrežij. Osebni računalniki so torej dobri poznavalci tega okolja, zato jih lahko v ta namen izkoristimo. Vse, kar moramo storiti je nadgradnja osebnega računalnika z ustrezno programsko opremo – vohljačem (sniffer). Zavedati se je treba, da tudi če neposredno ne vidimo prometa, ampak različne grafikone, tabele ali drugače izražene parametre na namenski napravi, so v ozadju namenski računalnik, zajem prometa ter algoritem za analizo oziroma prikaz podatkov.

Vohljač je program ali naprava, ki omogoča opazovanje/zajem prometa prek omrežja. Jasno je, da lahko vohljača uporabimo za legalno zbiranje informacij ali pa kot pripomoček za njihovo krajo (kar je daleč od legalne uporabe). Slednje je problematično tudi zato, ker je krajo podatkov praktično nemogoče zaznati. Prav tako je skoraj nemogoče odkriti mesto priklopa (kjerkoli med končnima točkama). Ime Sniffer izhaja iz izdelka podjetja Netwok General, ki se je pozneje »prijelo« za vse izdelke, ki jih uporabljamo za zajem in analizo prometa v omrežjih. Lahko pa zasledimo vohljače tudi pod imeni, kot so omrežni analizator (network analyzer), protokolni analizator (protocol analyzer), paketni analizator (packet analyzer)...

V grobem lahko delimo vohljače v dve skupini. V prvi skupini so analizatorji, ki so zaokrožena celota, s katerimi lahko izvedemo zajem podatkov v realnem času. Te podatke lahko shranimo in jih pozneje analiziramo. Tovrstne pripomočke največkrat uporabljamo za opazovanje in odkrivanje napak znotraj posameznega segmenta krajevnega omrežja (LAN). V drugi skupini so tako imenovani porazdeljeni vohljači. Že iz imena samega je jasno, da ga sestavlja več delov, imenovanih sond, v različni delih omrežja in programske opreme, ki omogoča dostop do centralno zbranih podatkov. Ker gre za kompleksno rešitev, je cena tovrstnih rešitev ustrezno visoka.

Poizvedba v DNS-u in obisk strani sta vidna tudi v Wiresharku.

KJE IN S ČIM VOHLJATI

Zaradi realnih potreb in omejenosti sredstev, ki jih imamo na voljo doma ali v podjetju, bomo posegli po vohljaču iz prve skupine. Zaradi znižanja stroškov izberimo rešitev, ki predvideva namestitev programske opreme v osebni računalnik. Osebni računalnik bomo priključili v omrežje tako, da lahko prisluhnemo želenemu nizu podatkov. Najlažja možnost je, da promet, ki ga želimo analizirati, vzpostavimo kar v tem računalniku oziroma da z njim vzpostavimo komunikacijo proti končni točki, ki nas zanima. Ker to vedno ni mogoče, lahko uporabimo ethernetno zvezdišče (ethernet hub) v vlogi razdelilnika podatkovne povezave. Značilno za zvezdišča je, da ves dohodni promet posreduje na drugih vmesnikih. Če smo priključeni na omrežno ethernetno stikalo, lahko uporabimo tudi možnost zrcaljenja prometa z določenega vmesnika (port mirroring), ki podvaja ves promet iz določenega vmesnika (npr. proti strežniku) na drug vmesnik (prenosnik z nameščenim vohljačem). Žal stikala nižjega cenovnega razreda te možnosti ne podpirajo, zato si lahko pomagamo z različnimi triki. Eden od njih je, da stikalo z »napadom« (npr. MAC flooding) prisilimo, da začne delovati kot zvezdišče. Nekateri vohljači ta mehanizem uporabljajo kot možnost zajema podatkov v omrežjih s stikali.

Podatke lahko zajemamo tudi v drugih elementih omrežja, prek katerih teče podatkovni niz (npr. usmerjevalnik z Linuxom). V tem primeru z ukazom tcpdump (http://en.wikipedia.org/wiki/Tcpdump), ki je vohljač v okolju ukazne vrstice, izvedemo zajem podatkovnega niza, ki ga ne prekinemo, ampak naredimo le njegovo kopijo.

WIRESHARK: BREZPLAČEN, A ŠE ZDALEČ NE SLAB

Med najbolj priljubljeno programsko opremo na tem področju sodi Ethereal, ki se je leta 2006 zaradi zaščite blagovne znamke preimenoval v Wireshark (www.wireshark.org). Trenutno aktualna je stabilna različica 1.0.6. Kljub brezplačnosti se z delovanjem in možnostmi, ki jih Wireshark ponuja, brez težav kosa z marsikaterim komercialnim konkurentom. To dokazujejo tudi številne nagrade, ki jih je Wireshark prejel. Wireshark je na voljo za vse priljubljene operacijske sisteme, kot so Windows, Linux (že prevedeni paketi za najpogostejše distribucije), FreeBSD in NetBSD, Solaris ... Namestitvene datoteke za okolje Windows so velike okrog 20 MB. Glede na potrebe lahko izberemo klasično namestitev (Installer) ali prenosno (Portable) oziroma U3, namenjeno namestitvi na USB bliskovni pomnilnik. Vsekakor vam zelo priporočam tudi prenos dobre 3 MB velikega uporabniškega priročnika (www.wireshark.org/download/docs/user-guide-a4.pdf), ki vam bo na 286 straneh odgovoril na marsikatero vprašanje in dal napotke za lažje delo.

Program lahko začnemo uporabljati takoj po namestitvi/zagonu in priključitvi računalnika v krajevno omrežje. Zajem podatkov aktiviramo tako, da najprej izberemo omrežni vmesnik, na katerem bomo izvajali zajem. To storimo s klikom menija Capture/ Interfaces, kjer pri želenem vmesniku kliknemo gumb Start. Če imamo vmesnikov več, si lahko pomagamo z informacijo o trenutnem IP-naslovu oziroma številu prenesenih paketov ali hitrosti prenosa teh. Takoj ko pritisnemo tipko Start, je že aktiviran zajem. Če na smo pri izboru vmesnika (npr. brezžični) videli aktivnost, pri zajemu pa ne dobimo informacij, zajem ustavimo. To storimo s klikom možnosti Capture/ Stop ali kombinacijo tipk Ctrl+E. Spet izberemo želen vmesnik (Capture/ Interfaces), le da tokrat izberemo Options in onemogočimo »Capture Packets in promiscuous mode«. Ko pritisnemo gumb Start, dobimo v glavnem oknu viden promet, ki ga izbrani vmesnik zajema. Počakajmo nekaj trenutkov, medtem pa odprimo spletni brskalnik na poljubni strani (npr. www.mojmikro.si). Ko je stran naložena, se vrnemo v Wireshark, ki ima še vedno aktiviran zajem podatkov. Zajem bomo ustavili s klikom možnosti Capture/ Stop.

Za lažji pregled razširimo Wireshark čez celoten zaslon. Vidimo lahko, da ima Wireshark tri glavne dele. V zgornjem delu zaslona imamo zajet promet. Vidimo lahko vrstni red posameznega zajetega okvirja, čas glede na začetek zajema, izvorni IP-naslov in ponorni IP-naslov, uporabljen protokol in informacijsko polje z dodatnimi informacijami. Pomik po tem oknu odpira več informacij v spodnjih dveh oknih, kjer je več informacij. Promet v tabeli lahko združujemo v skupine po protokolih (klik stolpca Protocol). Če želimo lahko namesto IP-naslovov dobimo izpisana (DNS) imena. V tem primeru bi morali pod možnostmi imeti aktiviran prikaz imen (Capture/ Options/ Name Resolution).

Prikaz spletne strani www.mojmikro.si v okolju spletnega brskalnika zahteva, da mora biti s spletnim strežnikom odprta komunikacija prek vrat 80 (http), pred tem pa mora biti izvedena poizvedba prek vrat 53 (DNS-strežniku), na katerega IP-naslovu je dostopna ta spletna stran. Šele ko je vzpostavljena povezava s strežnikom, lahko brskalnik prikaže stran.

FINA OBRT

Iz navedenega zelo preprostega primera lahko vidimo, da lahko analiza zajetih podatkov postane »fino obrtniško« opravilo, ki zahteva precej znanja in poznavanje mehanizmov delovanja protokolov, ki jih analiziramo. Za odkrivanje napak moramo poznati več kot le konfiguriranje parametrov (IP-naslov, maska, privzeti prehod, DNS), saj se moramo spustiti na nivo, mehanizme delovanje in morebitne posebnosti, ki jih določen protokol ima.

Zajeti promet lahko shranimo za poznejšo analizo. V določenih primerih se izkaže za lažje, če promet na določeni točki omrežja izvede manj izkušena oseba in nam vzorec prometa posreduje. Pomembno je, da promet shranimo v primerni obliki, ki bo primerna za poznejšo analizo (da pri shranjevanju ne bo prišlo do izgube dragocene informacije). Najlažje je izvesti zajem prometa z Wiresharkom, ni pa nujno. Pomembno je, da shranimo ves zajeti promet (File/ Save as – aktivirani morata biti možnosti All Packages in Captured). Podatke analiziramo tako, da datoteko s podatki odpremo v Wiresharku ali drugem vohljaču.

Toliko za enkrat. V naslednji številki bomo spoznali, kako sami ugotovimo, zakaj je lahko določen protokol potencialno nevaren, kako uporabljamo filtre, kako uporabimo Wireshark za pomoč pri konfiguraciji požarnega zidu, uprabili ga bomo pri prenosu govora prek IP-protokola (VoIP) in različne meritve, pridobivanje pomembnih statističnih podatkov in še česa.


Zanimivosti in nasveti
• Wireshark sodi med najbolj priljubljene vohljače. Njegove glavne prednosti so cena (brezplačen), podprtost v razširjenih operacijskih sistemih ter možnosti, ki uporabniku olajšajo delo.
• Wireshark lahko namestimo tudi na USB-ključek. Tako ga imamo lahko vedno pri roki, ko ga potrebujemo. Kljub majhnemu prostoru, ki ga zahteva prenosna različica na ključku (manj kot 50 MB), je dobro, da je praznega prostora na ključku več, saj bomo tako nanj lahko spravili tudi ustrezno količino zajetega prometa.
• Če so nekoč veljali univerzalni inštrument (unimer) in osciloskop ter testna slušalka za osnovna orodja, se jim v današnjih časih na področju komunikacij pridružuje vohljač. Zato je v današnjih časih skoraj nedopustno, da bi diplomanti telekomunikacij ali računalništva zapustili fakulteto brez ustreznega (vsaj osnovnega) poznavanja uporabe vohljačev in znanj, ki omogočajo analizo prometa. To velja tudi za vse, ki so »v poslu« že dlje časa in si želijo služiti vsakodnevni kruh na teh področjih še naprej. Čudili se boste, koliko ljudi se izogiba uporabi vohljača z različnimi razlogi – to, ali sta v ozadju največkrat lenoba ali neznanje, niti ni pomembno.
• Na spletnih straneh najdemo najrazličnejše namenske vohljače (npr. MSN Sniff, SniffPass ...), ki pomagajo pri analizi/zajemu določenih protokolov ali komunikacije. Njihova prednost je, da posredujejo želene podatke uporabniku prijazno in ne zahtevajo dodatnih znanj.
• Vohljača lahko namestimo tudi na USB ključek ali dlančnik z ustrezno omrežno povezavo.

Moj mikro, Maj 2009 | Evan Ambrož