Jak odhalit otevřený rekurzivní name server

Open Recursive Name Server je server, který poskytuje své služby nejen uživatelům vlasntní místní sítě (tak, jak by měl), ale i komukoliv jinému. Takto uspořádaný name server bývá často obětí útoků denial-of-service. Je proto důrazně doporučováno nepoužívat name servery s otevřenými rekurzemi!

Více v tiskové zprávě sdružení CZ.NIC, z.s.p.o.: Varování před otevřenými rekurzivními nameservery.

Pro zjištění, zda-li je Váš name server open recursive, postupujte dle následujícího scénáře:

  • proveďte automatický test

Na této adrese naleznete v češtině formulář pro provedení DNS testů Vašeho serveru, mezi kterými je i test na ověření, zda-li je testovaný server open recursive. Další z automatických testů naleznete na této adrese (v angličtině). Rovněž zde naleznete formulář pro provedení DNS testů Vašeho serveru, mezi kterými je i test na ověření, zda-li je testovaný server open recursive.

  • V případě, že je Váš name server open recursive, zjistěte, jaký software Váš name server využívá.

Pokud využíváte níže uvedený software, postupujte dle níže uvedených návodů:

Zjistěte, jaký software běží na Vašem name serveru

V systému UNIX zadejte do příkazové řádky příkaz dig CH TXT version.bind. @nameserver, kde výraz nameserver nahraďte požadovaným nameserverem.

Níže můžete nalézt ukázku výstupu, kdy byl zadán příkaz dig CH TXT version.bind. @a.ns.nic.cz. Číslo 9.3.2 je verze softwaru name serveru – jedná se pravděpodobně o software BIND.

dig CH TXT version.bind. @a.ns.nic.cz

; <<>> DiG 9.3.2 <<>> CH TXT version.bind. @a.ns.nic.cz
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60368
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;version.bind.                  CH      TXT

;; ANSWER SECTION:
version.bind.           0       CH      TXT     "9.3.2"

;; AUTHORITY SECTION:
version.bind.           0       CH      NS      version.bind.

;; Query time: 31 msec
;; SERVER: 217.31.204.2#53(217.31.204.2)
;; WHEN: Fri May 11 15:31:56 2007
;; MSG SIZE  rcvd: 62

Kromě příkazu dig lze také použít nástroj fpdns, který si můžete stáhnout zde. Po instalaci nástroje zadejte do příkazové řádky příkaz fpdns -c nameserver (za nameserver zadejte jméno požadovaného nameserveru) a zobrazí se Vám verze DNS softwaru.

Stejně jako v předchozí ukázce jsme otestovali name server a.ns.nic.cz. Po zadání příkazu fpdns a.ns.nic.cz se zobrazil následující výstup, kde můžeme nalézt, že software name serveru a.ns.nic.cz je BIND verze 9.2.3rc1-9.4.0. Určení verze tedy není v tomto případě jednoznačné.

fpdns a.ns.nic.cz
fingerprint (a.ns.nic.cz, 217.31.204.2): ISC BIND 9.2.3rc1 -- 9.4.0a0

Zamezení Open Recursive v BIND

Nejpoužívanějším softwarem je BIND. V případě, že používáte BIND, zjistěte si jeho verzi (číslo verze zjistíte např. pomocí příkazu dig nebo pomocí příkazu fpdns – viz popis výše). Níže uvedené volby naleznete v souboru /etc/bind/named.conf.

Pokud používáte BIND verze 8 a 9, ujistěte se, že ve volbě options máte následující záznam:

  options {
      o recursion no; 
  };

Pokud vlastníte nižší verzi BIND (4.9), zkontrolujte, zda máte uvedenou následující volbu:

  options no-recursion.

Nižší verze než 8 nejsou z bezpečnostních důvodů doporučovány.

Allow-query

Verze BIND 8 a vyšší umožňují omezit dotazy pomocí volby allow-query:

allow-query { address_match_list };

Allow-query definuje seznam např. IP adres, kterým je dovoleno pokládat dotazy serveru.

Jestliže tento seznam neni specifikován, je dovoleno pokládat dotazy všem. Tento příkaz může být použit v zóně, View nebo v globálním nastavení.

Allow-recursion

Verze BIND 8.2.1 a vyšší umožňují omezit rekurzi pomocí volby allow-recursion:

allow-recursion { address_match_list };

Allow-recursion definuje seznam např. IP adres, kterým je dovoleno pokládat rekurzivní dotazy serveru. Jestliže odpověď na dotaz existuje v cache paměti, bude poskytnuta bez ohledu na toto nastavení. Jestliže tento seznam není definován, kdokoliv může pokládat rekurzivní dotazy. Tato volba může být použita ve View nebo v globálním nastavení.

Views

Omezení rekurze pomocí views (BIND 9 a pozdější):

BIND 9 implementuje novou funkci, pomocí které může administrátor definovat různé náhledy (views) na data poskytována name serverem. Použitím views ostatní name servery a resolvery mohou obdržet různé odpovědi na základě jejich IP adres.

V následujícím příkladu interní view umožňuje rekurzi IP adresám definovaném v interním přístupovém listu. Naopak externí view nepovoluje rekurzi:

  view "internalview" {
      o match-clients { internal; }; recursion yes; 
  }; view "externalview" {
      o match-clients { any; }; recursion no; 
  };

Zamezení Open Recursive v PowerDNS

Pro zamezení rekurzivních dotazů zkontrolujte nastavení v souboru recursor.conf. Uvedený soubor se většinou nalézá v /etc/powerdns nebo /usr/local/etc.

allow-from

Pomocí seznamu uvedeného za tímto příkazem lze definovat, na které dotazy bude server odpovídat. Dotazy z IP adres, které nebudou uvedeny v seznamu, budou ignorovány a neobdrží odpověď. V seznamu je možno uvádět IP adresy jak verze 4, tak verze 6. Defaultní nastavení umožňuje přístup pouze z privátních IP adres (např. jako 10.0.0.0/8. - RFC 1918). Doporučuje se neotevírat recursor pro celý internet. Dotazy z IP adres, které nejsou uvedeny v seznamu, jsou ignorovány a neobdrží odpovědi.