Ovo je stara izmjena dokumenta!
DNS ( eng. Domain Name System) je distribuirani hijerarhijski sustav Internet poslužitelja u kojem se nalaze informacije povezane s nazivima domena, odnosno informacije o povezanosti IP adresa i njihovih simboličkih imena. Često se kaže da DNS služi kao telefonski imenik za Internet upravo tako što prevodi imena računala prilagođena ljudima u IP adrese. Iako je ključna komponenta globalnog Interneta, ranjiva je na razne napadne, iskorištavanja i kvarove sustava.
1970-ih godina, sva imena domena i njihove pripadajuće numeričke adrese bile su sadržane u jednoj datoteci pod nazivom „hosts.txt“ na Sveučilištu Stanford. S obzirom da su se numeričke adrese ručno dodjeljivale nazivima domena, vrlo brzo je ovakav način postao nepraktičan za održavanje. 1983. godine stvoren je sustav naziva domena (DNS) za distribuciju jedne centralizirane datoteke na više poslužitelja i lokacija. 1986. IETF je naveo DNS kao jedan od izvornih internetskih standarda te su objavili dva dokumenta, RFC 1034 i RFC 1035, koji su pobliže opisali DNS protokol. Od tada, DNS se redovito ažurira i širi kako bi se prilagodio sve složenijem Internetu.
Slika 3.1 Prikaz načina rada DNS protokola
Ako želimo otići na neku određenu web stranicu, otvaramo naš web preglednik i upisujemo ime domene te stranice s obzirom da je puno lakše pamtiti imena nego brojeve. Zatim će DNS poslužitelj prevesti to ime domene u odgovarajuću IP adresu. Kada je to obavljeno, naš kompjuter je spreman komunicirati sa web poslužiteljem i dohvatiti odgovarajuću web stranicu. Kada naš web preglednik ili operacijski sustav ne može pronaći IP adresu u svojoj cache memoriji, proslijedit će upit višem nivou - poslužitelju za razrješavanje (eng. resolver server). On je zapravo naš davatelj internetskih usluga koji provjerava vlastitu cache memoriju. Ako ne može pronaći odgovarajuću IP adresu, šalje upit na sljedeću razinu – korijenski poslužitelj (eng. root server). To su najviši poslužitelji u DNS hijerarhiji te postoji 13 skupova root servera koji su strateški raspoređeni po svijetu. Preslikavanje naziva domene u IP adresu poznato je kao rezolucija imena i adrese. Ona može biti rekurzivna i iterativna.
Slika 3.2. Rekurzivna i iterativna rezolucija
Kod rekurzivnog mapiranja, klijent zahtijeva od lokalnog poslužitelja da vrati traženu adresu ili poruku o grešci. Ako lokalni server ne zna adresu, šalje upit korijenskom poslužitelju koji sadrži informaciju o barem jednom poslužitelju vršne domene (Top Level Domain Server). Ako ne sadrži adresu, trebao bi sadržavati IP adresu destinacijskog lokalnog DNS poslužitelja koji zna destinacijsku IP adresu. Ona se vraća istim putem nazad do onoga tko ju je zatražio. Glavna razlika kod rekurzivne i iterativne rezolucije je u tome što svaki poslužitelj koji ne zna adresu šalje IP adresu sljedećeg poslužitelja onom koji je to zatražio. Kod iterativne rezolucije, klijent dopušta poslužitelju da vrati najbolji mogući odgovor koji može dati.
DNS cache je privremena memorija na uređaju koja sadrži sve DNS zapise imena posjećivanih domena. Pomoću ove privremene memorije pokušava se uštediti na vremenu i izbjeći dugi DNS lookup. DNS protokol implementira time-to-live (TTL) na svaki DNS zapis. On definira broj sekundi trajanja tog zapisa te kada istekne to vrijeme, zapis se briše. Kada je napravljen zahtjev za DNS zapisima, memorija preglednika je prva stanica koja se pregledava. Druga i posljednja lokalna stanica je DNS razrješitelj na razini operacijskog sustava. Na Windowsu, primjerice, u naredbenom retku pomoću naredbe ipconfig /displaydns možemo vidjeti DNS zapise stranica koje smo posjetili.
DNS logging je proces sakupljanja detaljnih podataka o DNS prometu, najčešće kako bi se pomoglo riješiti greške u DNS protokolu ili u svrhu sigurnosti, za brzo identificiranje prijetnji. DNS log je datoteka, najčešće u .txt formatu koja sadrži detaljne podatke o svim DNS informacijama poslanim ili primljenim od DNS poslužitelja. Logging pomaže otkriti DNS napade u stvarnom vremenu te ih tako i blokirati prije nego se dogodi veća šteta. Sadrže podatke o nazivu domene, oznaku zahtjeva ili odgovora, kakav je zapis zatražen, IP adresu itd. Primjerice, napad se može otkriti ako naziv domene odgovara nekoj poznatoj zlonamjernoj domeni. Nadalje, ako je zatražen zapis u .txt formatu može biti znak maliciozne aktivnosti zato što se oni često koriste za DNS tunneling.
Postoje više mogućih napada na DNS protokol, a u nastavku će biti navedeni najpoznatiji.
DNS Tunneling je metoda napada koja kodira podatke drugih programa ili protokola u DNS upitima i odgovorima. Ova metoda koristi DNS protokol za tuneliranje informacija i zlonamjernog koda preko klijent-poslužitelj modela. DNS tuneliranje često uključuje podatke koji se mogu dodati napadnutom DNS poslužitelju i koristiti za kontrolu udaljenog poslužitelja i aplikacija. Napadači tuneliraju različite vrste protokola što im omogućuje prosljeđivanje ukradenih podataka ili IP prometa.