Princip DNS Amplification útoku

10. dubna 2015

V průběhu DNS Amplification útoku jsou zasílány DNS dotazy z podvržené IP adresy, která je stejně jako u ostatních amplification útoků zároveň IP adresou oběti. Díky značnému množství DNS odpovědí, které si ve skutečnosti oběť nevyžádala, může být její zařízení vyřazeno z provozu. K tomuto útoku se často používají otevřené rekurzívní name servery. Při zpracování DNS dotazů dochází v podstatě k pákovému efektu, při němž útočník posílá na DNS servery malé DNS dotazy a na IP adresu oběti jsou pak zasílány několikanásobně větší odpovědi. Proto může útočník s pomalejší linkou zahltit i rychlejší linku oběti. Když otevřený resolver obdrží DNS dotaz s podvrženou IP adresou, odpověď z DNS zašle na podvrženou IP adresu, která je zároveň cílem útoku. Čím více dotazů se zašle na otevřené resolvery, tím silnější negativní efekt to na oběť útoku bude mít.

.png

.png

Porovnání zachyceného DNS dotazu typu ANY a odpovědi na daný dotaz. Všimněte si, že dotaz má velikost 68 bytů, zatímco odpověď 419 bytů.

Otevřené resolvery jsou DNS servery, které poskytují své služby nejen členům své sítě, ale také všem ostatním. Autoritativní name servery, které jsou otevřené, by neměly zároveň sloužit jako rekurzivní DNS pro klienty ve vaší síti. Pokud rekurzívní DNS resolvery ve svých sítích využíváte, je nejlepší, když omezíte odpovědi na dotazy jen pro autorizované uživatele. Pokud máte ve společnosti přidělený IP rozsah například 2.2.2.0/24 (t.j., 2.2.2.0-2.2.2.255), pak by měl váš rekurzívní DNS server odpovídat pouze na dotazy, které přicházejí z tohoto rozsahu. Dotazy můžete filtrovat přes ACL (Access Control List) který bude obsahovat jen rozsahy vašich klientů. Jakmile by dotaz přišel na server z jiné adresy než je uvedená v ACL, například z 3.3.3.3., neměl by odpověď získat. Provozování otevřeného resolveru má také řadu nevýhod:

  1. Vnější dotazy využívají zdroje, které jim nepatří
  2. Útočník může otrávit cache na resolveru, což představuje pro organizaci bezpečnostní riziko
  3. Vaše resolvery se mohou podílet na DNS amplification útocích.

Pokud máte důvody k tomu, aby váš rekurzívní DNS server odpovídal také na vnější dotazy, či pokud provozujete autoritativní name servery, je nezbytné vytvořit dobrou politiku limitování dotazů. Technika (RRL) Response Rate Limiting umožní legitimním uživatelům dotazovat se na server, ale zároveň omezí účinek DNS amplification útoku. V současnosti je implementovaná podpora pro RRL u řady autoritativních serverů:

BIND
V případě BINDu je RRL podporován od verze 9.9.4. Pokud si BIND konfigurujete sami, je třeba použít konfigurační switch. RRL je potřeba nakonfigurovat v konfiguračním souboru přes --enable-rrl.
$ ./configure –enable-rrl.

Pokud máte BIND z distribučních balíčků, ověřte si v balíčku changelogu, zda podporuje RRL.
Dále je nutné RRL nastavit v konfiguraci daemona BIND.
Například:

options { directory "/var/named"; rate-limit { responses-per-second 5; log-only yes; }; };

KNOT DNS
V případě KNOT DNS je RRL dostupný jako standard od verze 1.2.0-RC3. I v tomto případě není RRL nastavený defaultně, ale v systémové sekci je nutné ho nastavit na hodnotu enabled. Každá hodnota větší než 0 znamená počet odpovědí za sekundu. (např. rate-limit 50; znamená 50 odpovědí za sekundu). Od verze 1.2.0 je možné také nastavit tzv. SLIP interval. Hodnota, kterou u rate-limit-slip nastavíme bude znamenat počet dotazů, na které odpoví truncated (zmenší je). Pokud nastavíme hodnotu rate-limit-slip například na 2, na každý druhý dotaz odpoví server truncated. Doporučená hodnota 1 má tu výhodu, že amplifikaci omezí a zároveň žádný dotaz neignoruje.

Konfigurace by pak například mohla vypadat takto:

system {
rate-limit 200; # Each flow is allowed to 200 resp. per second
rate-limit-slip 1; # Every response is slipped (default)
}

NSD
NSD má od verze 3.2.15 podobně jako ostatní autoritativní servery implementován Response Rate Limiting. V NSD3 a NSD4 je nutné RRL povolit přes -enable-ratelimit. Podobně jako v případě KNOT DNS je možné nastavit také hodnotu RRL SLIP. Defaultně je tato hodnota nastavená na 2. V případě, že zóna je pod NSD podepsaná DNSSECem, je možné tuto hodnotu ponechat. Reflektivní DoS by tak odpověděl s RRL SLIP hodnotou 2. DoS útok by tak ztratil polovinu své síly a zároveň by oběť ochránil.

V souboru nsd.conf je možné podle potřeby nastavit hodnoty rrl-size, rrl-ratelimit, rrl-whitelist-ratelimit či rrl-whitelist.