10. Aplikacijski sloj
10.1. Zadaci i protokoli aplikacijskog sloja
Aplikacijski sloj u OSI mrežnom modelu podijeljen je u tri podsloja (aplikacijski sloj, prezentacijski sloj i sloj sesije). Pojednostavljeno, sva se tri sloja mogu promatrati kao jedan (aplikacijski sloj TCP/IP modela).
Mrežne aplikacije sastoje se od programskih komponenti distribuiranih između krajnjih uređaja u mreži. Npr., web-aplikacije sastoje se od klijentske programske podrške na strani klijenta i poslužiteljske programske podrške na web-poslužitelju.
Programske komponente na krajnjim uređajima u mreži moraju moći međusobno komunicirati, a komuniciraju razmjenjujući poruke. Krajnji uređaj pri tom kreira poruku i šalje ju jednom ili više uređaja u mreži. Uređaji koji su primili poruku odgovaraju na poruku.
Komunikacija, odnosno razmjena poruka u mreži mora biti definirana. Pravila razmjene poruka između krajnjih uređaja u mreži definirana je aplikacijskim protokolima. Aplikacijski protokoli određuju oblik i redoslijed razmjene poruka između krajnjih uređaja u mreži.
Aplikacijski protokoli definiraju:
- tipove poruka koje razmjenjuju (npr. poruke zahtjeva i odgovora)
- sadržaj svakog tipa poruke (npr. polja koja se nalaze u poruci)
- informaciju koja se prenosi u svakom polju
- kada će poruka biti poslana i kada će se na poruku odgovoriti
Pri tome vrijedi slijedeće:
- aplikacijski protokoli imaju klijentsku i poslužiteljsku stranu
- krajnji uređaj može istodobno biti i klijent i poslužitelj, odnosno imati pokrenute klijentske i poslužiteljske programe
- mrežne aplikacije mogu upotrebljavati više aplikacijskih protokola (npr. jedan se protokol koristi za uspostavu komunikacije, a drugi za prijenos podataka ili se jedan protokol upotrebljava za slanje podataka, a drugi za primanje podataka).
Neki od poznatijih aplikacijskih protokola su:
- HTTP (Hyper Text Transfer Protocol) – protokol za razmjenu sadržaja web stranica
- FTP (File Transfer Protocol) – protokol za preuzimanje i postavljanje datoteka na poslužitelj
- SMTP (Simple Mail Transfer Protocol) – protokol za slanje elektroničke pošte
- POP (Post Office Protocol) – protokol za primanje elektroničke pošte
- IMAP (Internet Message Access Protocol) – napredniji protokol za primanje elektroničke pošte
- DNS (Domain Name System) – protokol namijenjen za doznavanje IP adrese iz imena računala i obrnuto
- DHCP (Dynamic Host Configuration Protocol) – protokol za dinamičku konfiguraciju klijenata na mrežama zasnovanim na protokolu IP
- SSH (Secure Shell) – protokol namijenjen za sigurno povezivanje na udaljeni uređaj/računalo te izvršavanje naredbi i funkcija preko mreže
- Telnet – mrežni protokol koji se koristi za virtualni pristup računalu te za osiguravanje dvosmjernog, suradničkog tekstualnog komunikacijskog kanala između dva uređaja
- BitTorrent i Gnutella – protokoli za razmjenu datoteka u P2P mrežama.
10.2. Protokol DNS
U skupu protokola TCP/IP adresu koja jednoznačno određuje računalu mreži nazivamo IP adresa. Da bismo mogli pristupiti računalu, moramo poznavati njegovu IP adresu. Velik broj IP adresa teško je pamtiti.
Za lakši rad u mreži, računalima su pridružena imena i osmišljena je tehnika koja povezuje imena računala sa IP adresama. DNS (Domain Name System) je mrežna usluga koja nam omogućuje rad sa imenima računala umjesto sa IP adresama.
DNS je organiziran kao distribuirana i hijerarhijska baza podataka i omogućuje brzo ažuriranje i pretraživanje imena na Internetu. Distribuirana znači da se podaci nalaze na više računala podijeljeni u logičke cjeline. Hijearhijski ustroj znači da postoji hijerarhija po kojoj su ti podaci strukturirani i distribuirani što olakšava i ubrzava pronalaženje IP adrese za zadano ime. Podaci (imena) u takvoj bazi podataka hijerarhijski su strukturirani u tvz. prostor naziva domena (DNS namespace).
DNS namespace
Sustav imenovanja na kojem se temelji DNS je hijerarhijski, sastoji se od logičke stablaste strukture koja se naziva prostor naziva domena.
Dakle, cijeli je prostor podijeljen u domene.
Slika prikazuje strukturu DNS prostora naziva domena. Hijerarhija DNS-a počinje korijenskom domenom (root domain). Korijenska domena označava se točkom “.”.
Ispod korijenske domene nalaze se vršne domene (top-level domains). Ispod vršnih domena nalaze se drugostupanjske domene (second level domains) koje se dodjeljuju tvrtkama ili pojedincima (npr. Cisco, Microsoft, Yahoo…). Na kraju, ispod svake drugostupanjske domene može biti neograničen broj poddomena (subdomains).
Upravo je ovaj hijerarhijski ustroj domenskog sustava imenovanja računala zaslužan za brzinu i kvalitetu DNS-a. Puni naziv nekog računala na Internetu, odnosno u DNS sustavu naziva se FQDN (Fully Qualified Domain Name).
FQDN jednoznačno definira računalo unutar DNS prostora naziva domena. Ne mogu postojati dva jednaka FQDN-a. FQDN se dobija tako da se ispisuju sve domene i poddomene do kraja stablaste strukture zdesna nalijevo (npr. node1.cluster.example.com).
Dvije su osnovne vrste vršnih domena: generičke i geografske domene.
Generičke domene označavaju osnovnu namjenu domene. Najpoznatije su:
- com – komercijalne (commerical)
- edu – za obrazovne institucije (educational)
- gov – za vladine institucije (government)
- net – za davaoce mrežnih usluga (network providers)
- org – za nekomercijalne organizacije (nonprofit)
Geografske domene označavaju zemlju i uključuju po jednu oznaku za svaku zemlju. Primjeri su:
- hr – Hrvatska
- de – Njemačka
- us – Sjedinjene Američke Države
U praksi su gotovo sve organizacije u SAD-u pod nekom generičkom domenom, a u ostalim zemljama pod domenom te zemlje.
Upravljanje globalnim prostorom imenovanja na Internetu, kao i sustavom korijenskih poslužitelja koji osiguravaju rad DNS sustava, ostvaruje se putem nezavisne organizacije Internet Corporation for Assigned Names and Numbers (ICANN) koja je poslove upravljanja preuzela od tijela Internet Assigned Number Authority (IANA).
DNS poslužitelji
DNS poslužitelji su računala na kojima se nalazi DNS baza podataka sa zapisima koji sadrže informacije o određenom dijelu ukupnog DNS prostora naziva domena. Svaki je DNS poslužitelj zadužen za rješavanje upita koji su unutar njegovog prostora ili domene (name resolution queries).
Kada dobije upit, DNS poslužitelj može na njega odgovoriti (ako je unutar njegove domene) ili proslijediti upit drugom poslužitelju (ako upit nije unutar njegove doemene). Poslužitelj je mjerodavan (authority) za određenu domenu ako se zapisi ažuriraju na tom poslužitelju. Poslužitelj može biti mjerodavan i za više od jedne domene unutar ukupnog domenskog prostora.
DNS klijenti
DNS klijenti su uređaji na kojima je pokrenut DNS klijentski program. Zaduženi su za upite prema DNS poslužiteljima. Uz rješavanje upita, DNS klijent usluga omogućuje i privremeno pohranjivanje dobivenih informacija od DNS poslužitelja (caching).
DNS upiti
Proces kojim DNS klijent traži IP adresu za zadano ime od DNS poslužitelja naziva se DNS upit (DNS Query).
Svaki upit koji klijent šalje prema poslužitelju sadržava FQDN i tip upita. DNS poslužitelj koji dobije upit može biti mjerodavan ili nemjerodavan za traženu domenu.
Ako je DNS poslužitelj mjerodavan za domenu u kojoj se nalazi računalo čija IP adresa zanima klijenta, poslužitelj će vratiti ili odgovor sa IP adresom ili odgovor da IP adresa za to ime ne postoji ako računalo ne postoji u traženoj domeni.
Ako DNS poslužitelj nije mjerodavan za traženu domenu, proslijedit će klijentov upit na DNS poslužitelj koji mu je definiran za prosljeđivanje upita. Ako ne dobije traženi odgovor, poslužitelj kreće u potragu od vršnih domena i kontaktira poznate IP adrese korijenskih poslužitelja.
Postoje dva tipa standardnih DNS upita:
- rekurzivni upit – upit u kojem klijent traži od DNS poslužitelja da mu da IP adresu. Na DNS poslužitelju je da odradi sav posao koji je potreban da bi saznao IP adresu. Rekurzivne upite obično upotrebljavaju klijenti ili DNS poslužitelji koji su konfigurirani da upit prosljeđuju drugom poslužitelju. Odgovor na rekurzivni upit može biti traženi odgovor ili poruka pogreške koja kaže da traženi podatak ne postoji.
- iterativni upit – upit u kojem se traži najbolji odgovor koji se može dobiti. Rezultat iterativnog upita je preporuka koja sadržava popis DNS poslužitelja koji mogu dalje pomoći u traženju konačnog odgovora. Iterativni upit obično primjenjuju DNS poslužitelji koji odgovaraju na klijentov rekurzivni upit. Rezultat iterativnog upita je traženi odgovor, odgovor da tražena adresa ne postoji ili preporuka s popisom DNS poslužitelja koji bi mogli pomoći u traženju odgovora.
10.3. Protokol DHCP
Svaki uređaj koji se spaja na mrežu zasnovanu na skupu TCP/IP protokola mora dobiti TCP/IP konfiguraciju. Konfiguracija može imati više parametara od kojih su neki obavezni, a neki izborni.
IP adresa i mrežna maska obavezni su parametri i moraju biti pridruženi svakom računalu u mreži. IP adresa jednoznačno definira računalo, a mrežna maska definira logičku mrežu kojoj ta IP adresa odnosno računalo pripada. Ostali parametri konfiguracije su izborni (npr. IP adresa standardnog izlaza i IP adresa DNS poslužitelja).
Svako računalo ima mogucnost upisivanja TCP/IP parametara ručno. Kada se u mrežu ne bi dodavala nova računala ili ako već postojeća računala u mreži ne bi često mijenjala lokacije, ručno bi ažuriranje TCP/IP konfiguracije bilo relativno zadovoljavajuće rješenje. Trebalo bi učiniti samo početni napor da se pridruže potrebni parametri TCP/IP konfiguracije svakom uređaju u mreži.
Životno iskustvo nam govori da su promjene u organizaciji bilo koje vrste stalne i nepredvidive. Tako i računalna mreža živi i podređena je čestim promjenama. One mogu biti česte zbog raznih razloga (npr. promjena mjesta rada – zaposlenik može biti premješten iz jednog odjela u drugi, zatim može doći do promjene TCP/IP parametara, primjerice adrese standardnog izlaza ili DNS poslužitelja, također sve je više računala koja se samo privremeno spajaju na mrežu (bežične mreže)).
Činjenica je da u mrežama s mnogo uređaja statičko pridruživanje adresa postaje ozbiljan problem jer je sve više uređaja koji se dodaju ili mijenjaju mjesto u mreži. Što su promjene češće, to se više administratorskog rada troši na podešavanje parametara. U malim je mrežama to podnošljivo, ali pri većem broju računala to postaje ne samo trošenje vremena nego i problem pouzdanosti rada mreže jer se zbog povećanja broja računala u mreži povećava i vjerojatnost greške zbog neusklađenosti u konfiguracijama.
Rješenje je u mrežnoj usluzi koja bi umjesto administratora brinula o ažuriranju TCP/IP konfiguracije i koja bi dinamički dodjeljivala konfiguracijske parametre. Mrežna usluga koja je zadužena za taj posao zove se DHCP i temelji se na protokolu DHCP (Dynamic Host Configuration Protocol).
DHCP (kao mrežna usluga) se kao i većina aplikacijskih protokola temelji na modelu klijent-poslužitelj. Na klijentskoj se strani definira hoće li TCP/IP konfiguracija biti dodijeljena ručno odnosno statički ili automatski putem DHCP poslužitelja.
Kada je na krajnjem uređaju, odnosno klijentu, podešeno da će konfiguraciju dobiti od DHCP poslužitelja, klijent šalje zahtjev za konfiguracijom prema DHCP poslužitelju. DHCP poslužitelj odgovara na zahtjev i šalje konfiguraciju klijentu. Ta konfiguracija može biti stalna ili iznajmljena na određeno vrijeme. Ako je iznajmljena na određeno vrijeme, klijent mora u predefiniranim vremenskim intervalima prije isteka najma
(vrijeme najma je jedan od konfiguracijskih parametara) tražiti produljenje najma. Ako to ne učini, DHCP poslužitelj smatra da krajnjem uredaju dodijeljena konfiguracija više nije potrebna i smatra je slobodnom te ju može dodijeliti nekom drugom uredaju.
DHCP klijent-poslužitelj model
U mreži postoje i uređaji koji obavljaju specifične zadatke. Takvi uređaji moraju imati poznatu i uvijek istu IP adresu. Primjer takvih uređaja su poslužitelji raznih namjena.
Klijenti u mreži iniciraju razgovor s poslužiteljima. Da bi započeli razgovor moraju znati njegovu IP adresu. Zato, uz mogućnost najma bilo koje slobodne adrese iz određenog skupa adresa, DHCP poslužitelj ima mogućnost najma uvijek iste IP adrese određenom krajnjem uređaju.
Postavlja se pitanje kako će znati kojem uređaju treba dodijeliti uvijek istu adresu i koja će to adresa biti. Tu pomaže fizička adresa (MAC adresa) mrežne kartice koja je jednoznačna i definirana kod proizvođača.
Kada klijent zahtijeva od DHCP poslužitelja TCP/IP konfiguraciju, u okviru (Frame) u kojemu šalje zahtjev upisana je ishodišna MAC adresa. DHCP poslužitelj može se podesiti da određenoj fizičkoj odnosno MAC adresi uređaja daje uvijek istu IP adresu.
Postoji još jedno bitno pitanje koje traži odgovor. Kako klijent zna na kojoj se adresi nalazi DHCP poslužitelj ako još ne zna ni svoju vlastitu adresu? Klijent zapravo i ne zna na kojoj je adresi DHCP poslužitelj. On u mrežu šalje zahtjev za konfiguracijom sa odredišnom broadcast adresom. To je adresa kojom se poruka šalje svim uređajima na istom mrežnom segmentu. Svi uređaji na tom istom mrežnom segmentu prime okvir sa zahtjevom za DHCP konfiguracijom, ali samo DHCP poslužitelj zna da je to zahtjev za njega (po broju koji označava tip poruke). Svi osim DHCP poslužitelja ignoriraju taj zahtjev jer to nije poruka za njih. DHCP poslužitelj primi zahtjev i proslijedi konfiguraciju uređaju koji ju je tražio. Prosljeđivanje konfiguracije kontrolira protokol DHCP, a sastoji se od nekoliko koraka prikazanih na slici.
Slika: razmjena poruka protokolom DHCP
Relay agent tehnika
U dosadašnjim je razmatranjima DHCP poslužitelj u istom mrežnom segmentu kao i krajnji uređaji ili klijenti. To često ne mora biti tako. U složenim, hijerarhijski organiziranim mrežama, poslužitelji koji pružaju različite usluge obično su odvojeni od klijentskih uređaja i nalaze se na odvojenim mrežnim segmentima.
Što ako DHCP poslužitelj i klijenti nisu na istom mrežnom segmentu? U tom ih slučaju razdvaja usmjernik. Posao usmjernika jest usmjeravati pakete između različitih mrežnih segmenata. Usmjernik po definiciji ne propušta pakete s odredišnom broadcast adresom. Posljedica toga je ograničeni domet broadcast adrese samo unutar istog mrežnog segmenta.
Kako onda doći do DHCP poslužitelja na drugom mrežnom segmentu (ako ne broadcast
adresom)? Problem se rješava tako da se na graničnom usmjerniku instalira programska podrška koja broadcast poruke prevodi u unicast poruke prema DHCP poslužitelju izvan mrežnog segmenta i obrnuto. Ta se tehnika naziva Relay agent.
Poruke klijenta prema DHCP poslužitelju i DHCP poslužitelja prema klijentu ne mijenjaju se. Razlika je jedino u tome što usmjernik, koji je Relay agent, DHCP broadcast poruku od klijenta koju dobije na svom sučelju koje se nalazi na istom segmentu kao i klijent translatira u unicast adresu DHCP poslužitelja negdje u mreži
i obrnuto kada se poruka vraća u ishodišni mrežni segment. Naravno, Relay agent uređaj mora znati IP adresu DHCP poslužitelja.
Svaki DHCP poslužitelj ima predefinirani skup adresa koje može dodjeljivati klijentima. IP adrese iznajmljuje na određeno vrijeme. Za svaku dodijeljenu adresu vodi evidenciju o vremenu najma. Jednako tako vodi brigu o tome da ista adresa ne bude pridružena različitim klijentima. Kada istekne vrijeme najma adrese ili klijent pošalje poruku za prestanak najma, DHCP poslužitelj IP adresu smatra slobodnom i može ju pridružiti nekom drugom klijentu.
Klijent zna na koliko je vremena iznajmio adresu i, ako je potrebno, mora tražiti od DHCP poslužitelja produljenje najma. Ako se DHCP klijent iznenada odspojio s mreže i nije poslao zahtjev za prekidom najma, DHCP poslužitelj će smatrati adresu rezerviranom sve do isteka predefiniranog vremena i neće ju dodjeljivati drugim klijentima. Upravo je zbog toga u mrežama u kojima se klijenti često spajaju i odspajaju s mreže (npr. bežične mreže) preporučljivo definirati kraća vremena najma konfiguracije.
DHCP zbog svoje jednostavnosti može predstavljati sigurnosni rizik. Svaki uređaj priključen na mrežu može dobiti IP adrese. DHCP poslužitelj ne može znati je klijent koji traži konfiguraciju legitiman. Klijent također ne može znati je li DHCP poslužitelj koji mu je ponudio konfiguraciju jednako tako legitiman. Mogućnost ubacivanja klijenta ili poslužitelja u mrežu kao uljeza može stvoriti različite vrste problema.
Neki od njih su DOS (Denial Of Service) napadi, odnosno onemogućivanje ispravnog rada mreže. DHCP poslužitelj koji se ubacio nepozvan u mrežu može pridruživati pogrešne konfiguracije i tako onemogućiti ispravan rad klijenata. Klijenti koji su uljezi u mreži mogu pomoću posebne programske podrške slati veliki broj zahtjeva za konfiguracijom prema DHCP poslužitelju s fizičkom adresom koja ne postoji sve dok poslužitelj ne iznajmi sve IP adrese iz skupa iz kojeg ih dodjeljuje. Za nove legitimne klijente koji se žele priključiti u mrežu više neće biti slobodnih adresa.
Problem može nastati i ako netko neovlašteno promjeni parametre TCP/IP konfiguracije koju DHCP poslužitelj dodjeljuje klijentima. Promjenom adrese DNS poslužitelja mogu se svi paketi preusmjeriti prema drugom DNS poslužitelju koji preusmjerava promet na neke druge IP adrese. Promjenom IP adrese standardnog izlaza koju DHCP poslužitelj dodjeljuje klijentima na IP adresu računala napadača može se cijeli promet adresiran izvan mreže preusmjeravati ka računalu napadača koji
ga opet preusmjerava na ispravan standardni izlaz. Na taj način napadač može pročitati sve podatke koji izlaze iz mreže, a da toga korisnici mreže nisu svjesni.
Navedene činjenice mogu biti vrlo bitne pri odluci kada se koristiti statičkim, a kada dinamičkim adresiranjem. Oba načina adresiranja imaju svoje prednosti, mane i svoje mjesto u dizajnu mreže. Mnoge mreže rabe oba načina adresiranja. Dinamičko adresiranje se može upotrebljavati kod računala opće namjene, a statičko za adresiranje poslužitelja i pisača. Mnogi pružatelji internetskih usluga korisnicima koji ne zahtijevaju statičke adrese dodjeljuju adrese pomoću DHCP servisa.
Protokol DHCP na transportnom sloju kao svoj transportni protokol upotrebljava protokol UDP. Klijent šalje poruke poslužitelju na UDP priključak 67, a poslužitelj šalje poruke klijentu na UDP priključak 68.
Još malo o sigurnosti 10 prijetnji.