Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

PowerDNS: server odolný proti spoofingu

O DNS spoofingu se na Lupě již psalo, ovšem z pohledu švindlování DNS pro koncové stanice. Svými dopady je závažnější spoofing zaměřený na místní DNS servery, jehož cílem je podstrčit jim do vyrovnávací paměti nesprávné odpovědi, které pak budou poskytovány místním klientům. PowerDNS těmto snahám velmi dobře odolává, ale chránit se dají i jiné servery.

Základní myšlenkou DNS spoofingu je vystihnout okamžik, kdy se server ptá na určitou informaci a místo správné odpovědi mu pak podstrčit falešnou. Útok se samozřejmě týká pouze rekurzivních serverů, které přijímají dotazy od klientů, vyřeší je, pošlou tazateli odpověď a uloží ji do vyrovnávací paměti. Z ní ji pak poskytují při opakujících se dotazech na totéž. V koncové síti typicky bývá takový server, jenž díky vyrovnávací paměti zrychluje odezvy DNS pro místní klienty.

Pokud se podaří podstrčit mu padělanou odpověď, budou místní klienti po dobu životnosti falešného záznamu ve vyrovnávací paměti přesměrováni na jinou adresu. Předstíráním přihlašovací stránky pravého cílového stroje lze pak například sbírat uživatelská jména a hesla či jiné důvěrné informace.

Nejnebezpečnější je situace, kdy útočník ovládne některý ze strojů, jímž procházejí DNS dotazy daného serveru a odpovědi na ně. Pak může procházející pakety zachytávat, vysílat a měnit podle libosti a pomůže proti němu pouze podepisování záznamů (DNSSEC). K tomu však dochází velmi vzácně. Daleko častěji sídlí útočník mimo přenosovou trasu, dotazy přímo nevidí a do odpovědí se musí strefovat poslepu.

RFC 1034 doporučuje, aby byl tazatel vůči odpovědím maximálně ostražitý. Doporučuje se, aby akceptoval jen odpověď splňující následujících pět podmínek:

  1. Dotaz citovaný v odpovědi je totožný s původním. To se dá zařídit například tak, že se útočník sám zeptá (a dotaz tedy zná). Případně jej u vybrané adresy dokáže předvídat.
  2. Identifikátor odpovědi je totožný s identifikátorem dotazu. Při náhodné volbě identifikátorů nezbývá než zkoušet hrubou silou všechny možné alternativy a chrlit na server hromady falešných odpovědí s tím, že se snad některá z nich ujme. Bohužel z článku, analyzujícího bezpečnost vyrovnávací paměti DNS serverů vyplývá, že náhodnost identifikátorů není nijak oslňující (viz pravidelné vzory na obrázcích rozložení „náhodných“ hodnot). Navíc lze pravděpodobnost úspěchu výrazně zvýšit, pokud se podaří přimět server k odeslání několika dotazů se stejným obsahem, avšak odlišnými identifikátory (tzv. narozeninový útok).
  3. Odpověď přichází z IP adresy, na niž server poslal dotaz. Domény typicky mívají dva až tři autoritativní servery. Vložit jejich adresy do odpovědi nepředstavuje pro útočníka problém.
  4. Cílová IP adresa a port v odpovědi se shodují s údaji o odesilateli z dotazu. IP adresa serveru je známá. Mnoho serverů (nejrozšířenější BIND nevyjímaje) dostane při spuštění určitý port, který pak používá po celou dobu svého běhu. V těchto případech je splnění podmínky triviální.
  5. Odpověď dorazila jako první. To je dobrá i špatná zpráva. Útok je časově omezen do doby příchodu korektní odpovědi. Pokud se nestihne prolomit do vyrovnávací paměti v této době, dostane další šanci až po vypršení platnosti správné odpovědi. Ovšem pokud se mu podaří být první, později dorazivší správná odpověď již nemá šanci. Útočníci si často pomáhají tím, že autoritativní server zavalí dotazy (DOS útok) a zpomalí tak jeho odezvy.

Problematiku hádání identifikátorů rozebírá dokument Measures to prevent DNS spoofing. Najdete v něm vzorečky pro výpočet pravděpodobnosti úspěchu i určité konkrétní hodnoty.

Jak se bránit

Především je potřeba zdůraznit, že stoprocentní ochranu před DNS spoofingem poskytuje pouze DNSSEC. Dá se však velmi radikálně snížit pravděpodobnost úspěchu. Tato obrana má dvě fronty: ochranu domény (aby cizí uživatelé směřující na naše servery nebyli odkláněni jinam) a ochranu místního serveru (aby naši uživatelé nebyli klamáni).

Základní formule pro obranu domény je velmi prostá: nastavit dostatečnou životnost (TTL) záznamů. TTL určuje, s jakou frekvencí může útočník opakovat své pokusy. Výpočty ve výše citované zprávě uvádějí, že při životnosti 60 sekund se pravděpodobnost úspěchu spoofingu po nějakých devíti hodinách útočení přehoupne přes 90 %. Ovšem na druhé straně si řekněme, že správce, který nastavil minutovou životnost, si nic lepšího nezaslouží.

Doporučenou hodnotou TTL je jeden den (86 400 s) a záznamy pro významná jména, které bývají velmi konzervativní, klidně mohou mít týden. Zkrácení má smysl pouze v odůvodněných případech (např. před chystaným přeadresováním).

Obrana serveru by měla především omezit komunikační možnosti útočníka. Řada serverů je zcela otevřených a ochotně řeší rekurzivní dotazy položené kýmkoli. To znamená, že server skáče, jak útočník píská (a otevírá prostor i pro další typy útoků). Používáte-li BIND server verze 8 a vyšší (všeobecně se vřele doporučuje verze 9), můžete omezit příjem rekurzivních dotazů na místní počítače. Jestliže místní síť má adresu řekněme 10.1.0.0/16, můžete si pro ni definovat přístupový seznam a jím omezit rekurzivní dotazy:

        acl nasi { 10.1.0.0/16; };
        options { ...
            allow-recursion { nasi; };
        }; 

V tomto případě server nebude ochoten přijímat rekurzivní dotazy zvenčí, ovšem pokud bude dotázán na data z vyrovnávací paměti, ochotně je poskytne, a to včetně údaje o životnosti. Útočník se tedy dozví, kdy jim vyprší platnost a kdy lze očekávat dotaz do Internetu. Díky tomu dokáže útok časovat.

Vyplatí se proto uvažovat o ještě přísnějším nastavení, kdy se server s externisty je ochoten bavit pouze o doménách, pro něž je autoritativní. V globálních volbách se nastaví, že dotazy se mají přijímat jen od místních:

options { ...
           allow-query { nasi; };
       }; 

a pro každou vlastní zónu se pak explicitně povolí dotazování komukoli:

zone "nasedomena.cz" {
           type master;
           file "nasedomena.cz";
           allow-query { any; };
       }; 

V případě BINDu verze 9 si alternativně můžete pohrát s pohledy (view), které umožňují, aby se server choval vůči různým klientům diametrálně odlišně.

Pokud snad používáte BIND verze 8, měli byste se:

  1. vážně zamyslet nad důvody, které vás k tomu vedou,
  2. urychleně zkontrolovat, zda jeho konfigurace obsahuje volbu use-id-pool yes; bez ní identifikátory dotazů nejsou náhodné, což pravděpodobnost úspěchu spoofingu posouvá do kategorie „tutovka“.

Velmi drasticky se sníží pravděpodobnost spoofingu, pokud server používá i náhodné UDP porty. A tím se dostáváme k PowerDNS.

PowerDNS server

Tento server představuje jednu z možných alternativ BINDu. Pravda, je ve výrazné menšině, ale není úplným exotem. Podle průzkumů z roku 2004 jej používala necelá tři procenta německých domén (zhruba stejně jako MS DNS) a necelá dvě procenta vybraných globálních domén. Vznikl původně jako pokus o komerční DNS server. Ekonomicky ovšem ztroskotal a v roce 2002 změnil licenci a otevřel svůj kód.

Základní server má sloužit výlučně jako autoritativní a vůbec nepodporuje rekurzivní dotazy (ne, nejsem úplně mimo, o rekurzi ještě bude řeč). Nepochybně nejzajímavější na jeho koncepci je, že striktně odděluje kód serveru od dat. Server řeší výlučně síťovou komunikaci spojenou s příjmem a obsluhou dotazů.

Data poskytují tak zvané backendy. Autoři PowerDNS si v roli backendů oblibují zejména různé databáze – od MySQL až po DB2. Data však může poskytovat i LDAP a díky obecnému aplikačnímu rozhraní si můžete vytvořit backend sami. Zejména pro počáteční zkoušení bude asi zajímavým backendem bind, který dokáže analyzovat konfigurační soubor BINDu a podle něj si vyzvednout data ze zónových souborů. Vlastnosti a volby se nepřebírají, jen zóny. V takovém případě je třeba PowerDNS sdělit, kde najde konfigurační soubor BINDu. pdns.conf by měl obsahovat něco jako:

Kontakty? Setkání? Předplaťte si celoroční členství v NetClubu

Chcete být v centru dění, v internetové komunitě? Setkávat se s těmi, jejichž názory hýbou českým internetem? Předplaťte si členství na každoměsíčním setkání NetClubu a potkávejte se s zajímavými lidmi. Bližší informace zde

Letošní druhý NetClub proběhne v únoru s Erikem Taberym, šéfredaktorem časopisu Respekt, který lidé buďto milují, nebo nenávidí. 

       
      launch=bind
      bind-config=/etc/named.conf

Lid si ovšem žádá rekurzi, proto vznikl PowerDNS recursor jako doplněk základního serveru. Kromě něj můžete server naučit spolupracovat i s libovolným jiným rekurzivním serverem, a to i když běží na jiném stroji. PowerDNS recursor se ovšem pyšní mimořádnou odolností proti spoofingu. Především používá náhodná čísla UDP portů, a radikálně tak snižuje pravděpodobnost uhodnutí všech potřebných údajů v odpovědi. Kromě toho je odolný vůči narozeninovému útoku – pokud již řeší určitý dotaz, nebude jej opakovat (a zvyšovat počet identifikátorů, do nichž se útočník strefuje).

Pokud si jej chcete vyzkoušet, s vysokou pravděpodobností najdete binární verzi pro svou oblíbenou platformu. Doporučuji vaší pozornosti též návod ke konfiguraci na Linuchu.

Anketa

Setkali jste se s dns spoofingem?

       

Pavel Satrapa

Autor dělá nepořádek v příslovích, protože sítě nejen dělá, ale i učí a dokonce také řídí. Vede katedru informačních technologií na Technické univerzitě v Liberci. Píše knihy.

Školení Google+ pro firmy

DW - Školení PPC
  • Jak využít Google+ pro firemní komunikaci a marketing.
  • Čím se liší Google+ od Twitteru a Facebooku z pohledu firemního využití.
  • Jak využít Google+ v souladu s pravidly užívání.
  • Založení Google+ Page (Stránky) krok po kroku, včetně praktických tipů.

Detailní informace o školení Google+ »

Přehled názorů

DJB
Ja. 26. 10. 2006 06:55
Nový
├ 
Re: DJB
Michal Krsek 26. 10. 2006 08:27
Nový
│
└ 
Re: DJB
Ja. 27. 10. 2006 06:39
Nový
│
 
└ 
Re: DJB
Michal Krsek 27. 10. 2006 19:02
Nový
└ 
djb licence
Tyfus 26. 10. 2006 09:02
Nový
 
├ 
Re: djb licence
stoural 26. 10. 2006 11:27
Nový
 
│
└ 
Re: djb licence
Láďa 26. 10. 2006 11:48
Nový
 
├ 
Re: djb licence
R/W 26. 10. 2006 12:22
Nový
 
│
└ 
Re: djb licence
Pavel Janoušek 26. 10. 2006 12:45
Nový
 
│
 
└ 
Re: djb licence
R/W 26. 10. 2006 13:31
Nový
 
│
 
 
└ 
Re: djb licence
anonymní uživatel 26. 10. 2006 18:04
Nový
 
│
 
 
 
├ 
Re: djb licence
anonymní uživatel 26. 10. 2006 18:42
Nový
 
│
 
 
 
└ 
Re: djb licence
prc 26. 10. 2006 20:30
Nový
 
└ 
Re: djb licence
Ja. 27. 10. 2006 06:43
Nový
 
 
├ 
Re: djb licence
Tyfus 27. 10. 2006 11:31
Nový
 
 
│
└ 
Re: djb licence
Pavel Janoušek 27. 10. 2006 15:54
Nový
 
 
└ 
Re: djb licence
astrablaster 30. 10. 2006 14:31
Nový
Powerdns doporučuji minimálně vyzkoušet
Jarda Kuba 28. 10. 2006 11:18
Nový
└ 
Re: Powerdns doporučuji minimálně vyzkoušet
Michal Krsek 28. 10. 2006 19:20
Nový
 
├ 
Re: Powerdns doporučuji minimálně vyzkoušet
Láďa 29. 10. 2006 14:16
Nový
 
│
└ 
Re: Powerdns doporučuji minimálně vyzkoušet
Michal Krsek 30. 10. 2006 09:18
Nový
 
│
 
└ 
Re: Powerdns doporučuji minimálně vyzkoušet
volvox 30. 10. 2006 23:42
Nový
 
│
 
 
└ 
Re: Powerdns doporučuji minimálně vyzkoušet
Michal Krsek 31. 10. 2006 08:59
Nový
 
└ 
Re: Powerdns doporučuji minimálně vyzkoušet
anonymní uživatel 30. 10. 2006 10:17
Nový
 
 
└ 
Re: Powerdns doporučuji minimálně vyzkoušet
Michal Krsek 30. 10. 2006 13:53
Nový
 
 
 
└ 
Re: Powerdns doporučuji minimálně vyzkoušet
volvox 31. 10. 2006 00:00
Nový
 
 
 
 
├ 
Re: Powerdns doporučuji minimálně vyzkoušet
Trautmberk 31. 10. 2006 09:04
Nový
 
 
 
 
└ 
Re: Powerdns doporučuji minimálně vyzkoušet
Michal Krsek 31. 10. 2006 09:19
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem