• 20. března 2023

DNS - optimalizace výkonu a bezpečnost

Hlavním úkolem DNS (Domain Name System) je překládat doménová jména na IP adresy (např. www.endevel.cz na 161.35.202.7). Bez adresování by komunikace mezi uživateli nebyla možná. Místo toho, aby si uživatelé museli pamatovat IP adresy, dnes používáme čitelné názvy domén. Úkolem DNS je převést doménová jména čitelná pro člověka do strojově čitelné podoby. V tomto článku popíšeme nezbytné funkce DNS a vysvětlíme základy optimalizace výkonu a zabezpečení DNS.

Jak DNS funguje?

DNS servery

Vzhledem k množství dat, která musí být uložena pro překlad doménových jmen, je databáze DNS distribuována na velkém počtu serverů. Hlavním účelem serverů je vést záznamy o doménách (DNS records) a odpovídat na dotazy klientů. Podle jejich úlohy v systému DNS je můžeme rozdělit následovně:

  • Rekurzivni DNS server (taky resolver): Tento typ serveru je zodpovědný za řešení klientskych dotazů rekurzivním dotazováním na jiné servery DNS.
  • Autoritativní server: Poskytuje autoritativní informace pro doménová jména, která obsluhuje, např. IP adresu pro konkrétní doménové jméno. Má na starosti jednu nebo více částí jmenného prostoru (zóny DNS).
  • Cache server: Po vyřešení DNS dotazu dočasně uloží DNS záznamy do cache. Používá se k optimalizaci procesu překladu doménových jmen.
  • TLD server: Je zodpovědný za domény nejvyšší úrovně (Top Level Domains), např. .com, .org, .cz.
  • Kořenový server: Zodpovídá za poskytování informací o kořenové zóně prostoru doménových jmen. Každý proces rekurzivního vyhledávání začíná zde.

DNS rezoluce

Proces rezoluce

  1. Klient požaduje IP adresu www.endevel.cz od lokálního rekurzivního DNS resolveru.
  2. Resolver nejprve zkontroluje, zda už má odpověď ve své lokální cache.
  3. Pokud v cache nenašel odpověď, vyžádá si IP adresu od kořenového serveru.
  4. Kořenový server jako odpověď odešle zpět IP adresu TLD serveru (.cz).
  5. Pomocí této IP adresy si resolver vyžádá IP adresu od jmenného serveru .cz.
  6. TLD server (.cz) odešle zpět IP adresu jmenného serveru domény .endevel.cz.
  7. Pomocí této IP adresy si resolver vyžádá IP adresu domény www.endevel.cz od jmenného serveru .endevel.cz.
  8. Jmenný server .endevel.cz odešle zpět IP adresu pro www.endevel.cz do DNS resolveru.
  9. Resolver odešle požadovanou IP adresu www.endevel.cz zpět klientovi - 161.35.202.7.

Optimalizace výkonu

Proces rezoluce může mít významný dopad na výkon webových aplikací. Pro zvýšení celkového výkonu se používají různé metody a techniky k optimalizaci služeb DNS. Zlepšení výkonu webových aplikací může zahrnovat zkrácení času potřebného k překladu doménových jmen nebo snížení latence požadavků klienta.

DNS Caching

DNS Caching je proces, který slouží k urychlení procesu rezoluce. Ukládáním výsledků vyhledávání DNS do cache může dojít ke snížení zatížení serverů DNS. Když DNS resolver obdrží požadavek na překlad doménového jména na IP adresu, nejprve zkontroluje, zda má ve své cache uloženou kopii záznamu o doméně. Pokud ji najde, okamžitě vrátí výsledek (IP adresu), aniž by rekurzivně hledal odpověď a dotazoval se na autoritativní DNS server.

DNS TTL (Time To Live) je nastavení, které určuje, jak dlouho bude záznam ukládán do cache. Po vypršení časového limitu musí resolver znovu odeslat požadavek na záznam o doméně. Kratší TTL znamená větší počet požadavků a přesnější výsledky, zatímco delší TTL znamená menší počet požadavků, ale také často neúplné a méně přesné výsledky. TTL lze nastavit podle potřeb aplikace a hodnota tohoto nastavení může mít také významný vliv na zpoždění šíření (DNS propagation delay). Je důležité správně nakonfigurovat cache, abyste se vyhnuli nadměrnému ukládání zastaralých informací a byli zabezpečeni proti útokům (viz níže).

DNS prefetching

DNS Prefetching je technika používaná webovými prohlížeči k aktivnímu překladu doménových jmen, které uživatel pravděpodobně navštíví při používání aplikace. Předběžním načtením DNS záznamu může prohlížeč urychlit celkovou dobu načítání stránky.

Když uživatel navštíví webovou stránku, webový prohlížeč prohledá obsah HTML pro všechny názvy domén, odešle požadavky na extrahované domény a uloží výsledky do cache. Když uživatel klikne na některý odkaz, IP adresa se přečte z cache, aniž by musel znovu odesílat požadavek na překlad.

Round-robin DNS

Round-robin DNS je technika vyvažování zátěže (load balancing), jejímž cílem je distribuovat provoz na více serverů. V reakci na požadavek na překlad doménového jména autoritativní server DNS odešle seznam více IP adres (v náhodném pořadí) spojených s daným doménovým jménem. DNS resolver poté vrátí seznam IP adres klientovi, který použije první IP adresu ze seznamu pro připojení k webovému serveru. Další IP adresa ze seznamu se použije pro další požadavek klienta. Po dosažení konce seznamu se znovu použije první IP adresa. Hlavní nevýhodou této metody je nedostatek úplného vyvážení zátěže, což je způsobeno především DNS cachováním a cachováním na straně klienta.

Bezpečnost DNS

Původní implementace služby DNS neobsahovala žádné zabezpečení. Jelikož DNS je veřejná služba a je dostupná každému uživateli internetu, je vystavena mnoha útokům. Útoky mohou ohrozit webové servery a systémy, což znemožňuje rychlou a bezpečnou komunikaci v DNS.

Některé z nejběžnějších typů útoků, které mohou nastat v systému DNS, jsou:

  • DNS spoofing/cache poisoning je útok, kdy jsou do cache DNS resolveru vložena falešná data, která způsobí, že resolver vrátí například špatnou IP adresu pro hledanou doménu. Útočník tak může uživatele přesměrovat na jinou webovou stránku, kde uživatel například zadá přihlašovací údaje nebo stáhne škodlivý obsah (počítačový červ, virus apod.)
  • DNS hijacking je útok podobný DNS spoofingu, ale v tomto případě nejde o falšování cache resolveru, ale o zacílení DNS záznamů webové aplikace na DNS serveru. Pokud se útočníkovi podaří hacknout DNS server, zachytit komunikaci mezi uživatelem a DNS serverem nebo jiným způsobem změnit nastavení DNS, je schopen přesměrovat DNS dotaz na jiný DNS server, čímž uživatel dostane IP adresu falešného webu jako odpověď na dotaz.
  • Tunelování DNS (DNS tunneling) využívá implementaci protokolu DNS k tunelování malwaru. Prostřednictvím DNS dotazů umožňuje navázání spojení mezi klientem a útočníkovým serverem a následně infiltraci/exfiltraci dat nebo vzdálenou kontrolu. Vzhledem k tomu, že většina provozu DNS může procházet firewallem, je útočník schopen vytvořit komunikační kanál, který obchází většinu firewallů, což ztěžuje detekci tohoto typu útoku.

DNS cache poisoning - přiklad útoku

  1. Útočník otráví cache DNS (nejčastěji tím, že se bude vydávat za validní DNS server, pošle požadavek do DNS resolveru a poté zfalšují odpověď na dotaz DNS resolveru). Pro doménové jméno www.example.com vrátí IP adresu falešného webu (6.6.6.6).
  2. Uživatel odešle požadavek na překlad doménového jména (www.example.com) požadovaného webu do DNS resolveru.
  3. Uživatel obdrží falešnou adresu webu od DNS resolveru, což má za následek připojení k webu útočníka.

DNSSEC

Jedním z hlavních způsobů zabezpečení systému DNS je implementace rozšíření DNSSEC (Domain Name System Security Extensions). DNSSEC je bezpečnostní protokol, který byl vytvořen k ochraně infrastruktury DNS. Toto rozšíření systému DNS je založeno na principu podepisování DNS zpráv.

Pomocí veřejných a soukromých klíčů (asymetrická kryptografie) je DNSSEC schopen zajistit autentizaci a integritu dat. Slouží také k ověření, že serveru DNS důvěřuje vyšší doména v hierarchii DNS (tzv. chain of trust).

Při použití rozšíření DNSSEC obsahuje každá odpověď na DNS dotaz v procesu rezoluce podpis (RRSIG - resource record signature), který je DNS resolver schopen ověřit pomocí veřejného klíče (záznam DNSKEY). DNSSEC zabezpečuje provoz a útočníkům značně ztěžuje falšování nebo manipulaci s odpověďmi DNS.

DNSSEC se obvykle používá v kombinaci s dalšími metodami a technikami pro plné zabezpečení DNS, jako je implementace DNS filtrů, DNS firewallů a aktivní monitorování DNS provozu.

data-analysis (1)

Zajímají vás technologie?

V tech stacku endevelu najdete ty nejlepší!