BIZIT 2024

Ispravno konfigurisanje DNS-a eliminiše man in the middle napade

U prethodnim tekstovima opisali smo kako loše konfigurisan DNS može učiniti sistem ranjivim na DDOS i druge napade. Da vidimo kako se DNS ispravno konfiguriše.

PCPress.rs ImageU danima kada je DNS sistem kreiran nije se mnogo razmišljalo o njegovoj bezbednosti. Danas, kada je preusmeravanje korisnika ka neželjenim internet lokacijama i servisima postalo realnost, mora se razmišljati o tome da li je dobijeni odgovor autentičan i da li je dobijen od autoritativnog servera. Iz tog razloga kreirano je bezbednosno proširenje DNS servisa, poznatije kao DNSSEC (DNS Security Extension), koje praktično eliminiše mogućnost man in the middle napada.

Ekstenzija DNS‑a

DNSSEC je standard koji modifikuje DNS zapise i protokole DNS‑a u cilju povećanja bezbednosti transakcija između DNS resolver‑a i autoritativnog DNS servera. On omogućava:

  • Potvrdu izvora: Resolver može da odredi da li odgovor potiče od autoritativnog DNS servera za određenu zonu.
  • Potvrdu integriteta: Resolver može da odredi da li je odgovor menjan u toku prenosa.
  • Autentično poricanje postojanja: Resolver može da potvrdi da je određeni upit nerazrešiv, ako ne postoji DNS zapis resursa na autoritativnom serveru.

DNSSEC u praksi

Da bi zona bila DNSSEC potpisana, kreator zone generiše par ključeva koji predstavlja osnovu za PK šifrovanje (Public Key encryption). Privatni ključ se koristi za šifrovanje sadržaja poruke, a poruku je moguće dešifrovati javnim ključem koji je javno dostupan kroz DNSKEY zapis u zonskom fajlu. Privatni ključ se bezbedno čuva na uređaju koji se koristi za potpisivanje zone i nije ga moguće generisati na osnovu javnog ključa i šifrovanih podataka.

Svaki put kada se kreira zonski fajl za DNSSEC potpisanu zonu, svi DNS zapisi (A, MX, CNAME itd) digitalno se potpisuju novim tipom DNS zapisa, koji je kreiran za DNSSEC i zove se RRSIG (resource record signature). RRSIG predstavlja digitalni potpis koji se formira uzimanjem hash‑a određenog skupa zapisa u zoni i njegovom šifrovanjem uz pomoć privatnog ključa iz kompleta kriptografskih ključeva administratora te zone. Ovako kreiran potpis se šalje DNS resolver‑u prilikom svakog DNS upita. Resolver generiše hash RRset dela odgovora, upoređuje ga sa hash‑om dobijenim iz RRSIG dela odgovora i na taj način potvrđuje ili negira integritet i autentičnost dobijenih DNS informacija.

Da biste bili sigurni da je odgovor stigao od autentičnog izvora, potrebno je uspostaviti lanac poverljivosti. Kada je zona potpisana, ta informacija se objavljuje u obliku DS zapisa u hijerarhijski višem nivou DNS strukture i predstavlja tačku delegiranja između zona višeg nivoa i zona nižeg nivoa koja se može potvrditi. Da bi potvrdio DNSKEY zone nižeg nivoa, resolver preuzima odgovarajući DS, RRSIG(DS) i DNSKEY zone višeg nivoa.

Hijerarhija poverenja

DS zapis se nalazi na hijerarhijski višem nivou u DNS strukturi i prestavlja odgovarajući deo ključa za potpisivanje zone (ZSK). On potvrđuje da je zona na nižem hijerarhijskom nivou potpisana, a podaci iz DS zapisa se koriste za potvrdu DNSKEY podatka zone nižeg nivoa. Na ovaj način, potpisani DS funkcioniše kao „sertifikat“ koji se autoritativno isporučuje iz zone višeg nivoa i vezuje zonu nižeg nivoa za svoj DNSKEY. DNS server iz zone višeg nivoa postaje „pouzdano treće lice“, koje omogućava razmenu DNS informacija između resolver‑a i zone nižeg nivoa.

Niz ovakvih delegiranih odnosa formira lanac poverljivosti, koji predstavlja putanju koju resolver može da prati od javnog ključa (tj. pouzdanog polazišta – trust anchor), a to su DNS root serveri. Na kraju, sledeći bezbedan (NSEC) zapis, povezuje potpisane resurse, omogućavajući resolver‑u da pretražuje zonski fajl i da odredi da li zapis za određeni domen postoji u zonskom fajlu.

DNSSEC koristi dva tipa ključeva: ključevi za potpisivanje zone (Zone Signing Keys – ZSK) i ključevi za potpisivanje ključeva (Key Signing Keys – KSK). Tajni ZSK ključ se koristi za potpisivanje i potvrdu individualnih zapisa u zoni i njegov odgovarajući javni ključ se objavljuje u vidu DNSKEY zapisa. Javni KSK ključ se takođe pojavljuje kao DNSKEY zapis, ali se njegov tajni ključ koristi samo za potpisivanje DNSKEY zapisa zone.

Dva različita ključa se koriste iz bezbednosnih razloga. Opšte pravilo u kriptografiji je da što se više podataka šifruje određenim ključem, opasnost da se ključ sazna postaje sve veća. U ovom slučaju u pitanju je tajni ključ. U DNS‑u se taj ključ koristi za potpisivanje velike količine podataka jer svaka promena u zoni zahteva ponovno potpisivanje. Što je zona veća, to ima više podataka koji su dostupni za kriptoanalizu. Iz tog razloga, praksa je da se ZSK ključevi menjaju relativno često. Kada bi se koristio samo jedan ključ, svaki put kada bi se on menjao, bilo bi neophodno slati DNSKEY hijerarhijski višoj zoni kako bi se u njoj zamenio i ponovo potpisao DS zapis za tu zonu. Da bi se ovo izbeglo, koriste se dva odvojena tipa ključeva, i hijerarhijski višu DNS zonu je potrebno kontaktirati samo pri promeni KSK ključeva, što se čini relativno retko (njime se potpisuje vrlo malo podataka). Održavanje jake bezbednosti sistema ovim postaje lakše i brže.

Verifikacija zahteva

DNSSEC zaštita ne zavisi samo od toga da li je neka DNS zona potpisana. Jednako je važno da lokalni DNS resolver‑i (najčešće DNS serveri internet provajdera) budu konfigurisani tako da verifikuju DNSSEC zapise.

Kada DNS resolver kod koga je omogućena DNSSEC verifikacija pošalje upit hijerarhijski višem DNS serveru za određeni domen, u odgovoru će dobiti informaciju da li je taj domen digitalno potpisan. Ukoliko jeste, resolver će od autoritativnog servera prihvatati samo digitalno potpisane odgovore, a svaki drugi će biti odbačen.

Ovakvo povećanje bezbednosti DNS sistema važno je ne samo krajnjim korisnicima već i pružaocima usluga, naročito onim koji se bave finansijskim transakcijama na Internetu, kao što su banke, osiguravajuća društva, internet prodavnice… Digitalno potpisivanje domena znatno smanjuje mogućnost da korisnici budu preusmereni ka lažnim internet sadržajima i samim tim povećava njihovo poverenje i omogućava rast i razvoj internet poslovanja.

Zaštiti sebe i druge

Većina korisnika ne razume DNS, pre svega, jer im nije ni potrebno da razumeju kako taj servis radi da bi koristili Internet. DNS jednostavno funkcioniše! I baš zato što DNS „jednostavno funkcioniše“, niko mu ne posvećuje pažnju koju on, kao jedan od osnovnih servisa na Internetu, zaslužuje. Ako na primer neki od internet servisa (veb, mejl, FTP…) ne radi, ima za posledicu potpunu nedostupnost tog servisa. Sa druge strane, ako DNS servis stane, sve ostalo će stati. Osim toga, neadekvatna konfiguracija DNS servisa može da ugrozi druge korisnike Interneta.

Zbog svega toga treba:

  • Redovno proveravati DNS rekorde u roditeljskoj zoni
  • Niko nije imun na greške ili napade zlonamernih korisnika, pa ni operateri root zone, TLD operateri ili internet provajderi. Zbog toga je neophodno redovno proveravati ispravnost DNS zapisa u roditeljskoj zoni (hijerarhijski viša DNS zona koja sadrži podatke o vašim DNS serverima).
  • Voditi računa o isteku validnosti domena. Podaci za domen koji je istekao se ne nalaze u zoni DNS operatera kod koga je domen registrovan, i samim tim upiti za takav domen neće biti razrešavani. To za posledicu ima nedostupnost servisa, ali može biti iskorišćeno i za zlonamerne aktivnosti.
  • Redovno ažurirati softver (instalacija novih verzija DNS servera i nadgradnji). Zlonamerni korisnici pronalaze nove načine za zloupotrebu. Zbog toga je važno stalno pratiti i implementirati sve dopune (pečeve) i nove verzije softvera koje u sebi sadrže rešenja za bezbednosne propuste koji su u međuvremenu otkriveni.
  • Omogućiti razrešavanje DNS upita samo za korisnike vašeg sistema. DNS open resolver je DNS server koji dozvoljava svim klijentima, pa i onima koji nisu deo njegovog administrativnog domena, da koriste taj server za slanje DNS upita i dobijanje odgovora od njega i za zone za koje taj server nije autoritativan. Obezbedite svoj server i omogućite razrešavanje neautoritativnih odgovora samo grupi korisnika kojoj je taj server namenjen.
  • Aktivirati Response Rate Limiting (RRL) na autoritativnim serverima. Zadatak DNS servera je da odgovore za zone za koje su autoritativni pružaju svima. Zbog toga i oni mogu biti iskorišćeni za DDoS i DRDoS napade na računare i sisteme drugih korisnika. Response Rate Limiting (RRL) omogućava ograničenje broja odgovora koje DNS server šalje. Kriterijumi za ograničenje mogu biti različiti (po IP adresi, tipu upita, broju istih odgovora…). Aktiviranjem RRL‑a vaš server postaje manje atraktivan za napade na druge sisteme.
  • Zabraniti saobraćaj adresama koje nisu deo vašeg sistema (SAV – Source Address Validation). Slanje DNS upita sa lažnom IP adresom ne ugrožava samo vaš DNS servis, već može naneti ogromnu štetu korisnicima ka kojima je odgovor vašeg DNS servera preusmeren. Kontrolom saobraćaja, tj. filtriranjem IP adresa koje nisu deo vašeg sistema povećavate opštu bezbednost na Internetu.
  • Validirati DNSSEC. Kriptovanje podataka je veoma bitno za povećanje bezbednosti i pouzdanosti DNS‑a. Potpisivanje zone je samo jedan od koraka za postizanje željenog nivoa pouzdanosti DNS sistema. Da bi sigurnost DNS servisa bila potpuna, neophodno je da i svi resolver‑i imaju aktiviranu proveru digitalnog potpisa za podatke koje dobijaju od DNS servera koji su autoritativni za digitalno potpisane zone.

Tekst je realizovan u saradnji s Registrom nacionalnog internet domena Srbije – RNIDS

Žarko Kecić

(Objavljeno u PC#246)

Facebook komentari:
Računari i Galaksija
Tagovi: ,