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.