DNSSEC Adam Tk´aˇc, Red Hat, Inc.
23. dubna 2009
Copyright Copyright
© ©
2009 Adam Tk´aˇc, Red Hat, Inc. 2009 Tom´aˇs Janouˇsek (beamer template)
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
Obsah ´ 1 Uvod DNS Zranitelnost DNS 2 DNSSEC
´ Uvod Nov´e typy z´aznam˚ u Jak DNSSEC pracuje 3 Praktick´ e nasazen´ı, server BIND
Podepisov´an´ı z´ony Souˇcasn´y stav Testov´an´ı a hled´an´ı chyb 4 Zdroje
Section 1 ´ Uvod
´ Uvod
DNS
Co je to DNS? hierarchick´e pojmenov´an´ı poˇc´ıtaˇc˚ u a sluˇzeb na Internetu distribuovan´a datab´aze sdruˇzuje poˇc´ıtaˇce do logick´ych celk˚ u, tzv. dom´en
´ Uvod
DNS
Historie distribuce jmen v souboru ”hosts” z´akladn´ı kameny DNS v roce 1987 TSIG, autentizace pomoc´ı sd´ılen´eho tajemstv´ı souˇcasn´e DNSSEC v bˇreznu 2005 dalˇs´ı vylepˇsen´ı (NSEC3) v bˇreznu 2008
´ Uvod
DNS
Jak DNS pracuje pouˇz´ıv´a bezstavov´y UDP protokol resolver (= uˇzivatel) se pt´a serveru, kter´y obvykle provozuje jeho internetov´y provider (ISP) ISP server rekurzivnˇe vyˇreˇs´ı dotaz a vr´at´ı odpovˇed’ uˇzivateli
´ Uvod
Pˇr´ıklad
DNS
´ Uvod
Zranitelnost DNS
Zranitelnost z´akladn´ı probl´em - jak ovˇeˇrit autenticitu a integritu pˇr´ıchoz´ıch dat p˚ uvodn´ı n´avrh omezen´e moˇznosti zabezpeˇcen´ı (zdrojov´y port + transakˇcn´ı ID) mnoho implementac´ı nepouˇz´ıv´a n´ahodn´e ˇc´ısla pˇri znalosti ID a portu lze podvrhnout odpovˇed’ hrubou silou lze n´ahodn´a ˇc´ısla prolomit
´ Uvod
Zranitelnost DNS
Cache poisonning vloˇzen´ı podvrˇzen´ych dat do keˇse rekurzivn´ıho serveru
Section 2 DNSSEC
DNSSEC
´ Uvod zajiˇst’uje autenticitu a integritu dat definice v RFC 4033 - RFC 4035 vyuˇz´ıv´a asymetrickou kryptografii pracuje na principu ˇretˇezu d˚ uvˇery zav´ad´ı nov´e typy z´aznam˚ u odkr´yv´a z´aznamy v z´ onˇe
´ Uvod
DNSSEC
Nov´ e typy z´ aznam˚ u
Nov´ e typy z´ aznam˚ u DNSKEY veˇrejn´y kl´ıˇc, z´aznamy jsou podepisov´any koresponduj´ıc´ım priv´atn´ım kl´ıˇcem specifikuje kryptografick´y algoritmus, kter´y je pouˇz´ıv´an
RRSIG (Resource Record SIGnature) digit´aln´ı podpis, obsahuje pouˇz´ıvan´y kryptografick´y algoritmus, jm´eno kl´ıˇce, kter´ym byl podeps´an a ˇcas uveden´ı a expirace podpisu
DS (Delegation Signer) vytv´aˇr´ı ˇretˇez d˚ uvˇery mezi z´ onou a nadˇrazenou z´onou obsahuje otisk podpisov´eho kl´ıˇce kl´ıˇc˚ u (KSK) uloˇzen v nadˇrazen´e z´ onˇe
NSEC (Next SECure) autentizovan´e popˇren´ı existence obsahuje odkaz na dalˇs´ı autoritativn´ı z´aznam v z´onˇe odkr´yv´a vˇsechny z´aznamy v z´ onˇe (zone enumeration, NSEC3)
DNSSEC
Jak DNSSEC pracuje
AD, CD a DO bity DO bit (DNSSEC OK) nastavuje rekurzivn´ı server v dotazu. Znaˇc´ı, ˇze autoritativn´ı server m´a vracet DNSSEC data (DNSKEY, RRSIG ...) AD bit (Authentic Data) nastavuje rekurzivn´ı server v odpovˇedi u z´aznam˚ u, u kter´ych ovˇeˇril podpis CD bit (Checking Disabled) nastavuje klient. Rekurzivn´ı server pot´e neovˇeˇruje podpis z´aznam˚ u
DNSSEC
Pˇr´ıklad ”bezpeˇ cn´ eho” DNS
Jak DNSSEC pracuje
Section 3 Praktick´ e nasazen´ı, server BIND
Praktick´ e nasazen´ı, server BIND
Podepisov´ an´ı z´ ony
Kl´ıˇ ce - KSK a ZSK ZSK (Zone Signing Key) podeps´an´ı samotn´e z´ ony kryptograficky slabˇs´ı (3 mˇes´ıce, RSA/SHA1, 1024 bit˚ u)
KSK (Key Signing Key) podepisov´an´ı ZSK pˇr´ısluˇsn´y DS z´aznam uloˇzen v nadˇrazen´e z´ onˇe kryptograficky silnˇejˇs´ı (platnost 1 rok, RSA/SHA1, 4096 bit˚ u)
Praktick´ e nasazen´ı, server BIND
Podepisov´ an´ı z´ ony
Generov´ an´ı kl´ıˇ c˚ u - dnssec-keygen souˇc´ast popul´arn´ıho serveru BIND Generov´ an´ı ZSK $ dnssec-keygen -a RSASHA1 -b 1024 -n ZONE example.com Kexample.com.+005+23070 vygenerov´any jsou dva soubory - priv´atn´ı a veˇrejn´a ˇc´ast ZSK Generov´ an´ı KSK $ dnssec-keygen -a RSASHA1 -b 4096 -f KSK \ -n ZONE example.com Kexample.com.+005+40132 parametr ”-f KSK” znaˇc´ı, ˇze jde o KSK vygenerov´any jsou dva soubory - priv´atn´ı a veˇrejn´a ˇc´ast KSK
Praktick´ e nasazen´ı, server BIND
Podepisov´ an´ı z´ ony
Podepisov´ an´ı z´ ony - dnssec-signzone pˇridat veˇrejnou ˇc´ast ZSK a KSK do z´ onov´eho souboru podepsat pomoc´ı dnssec-signzone (souˇc´ast serveru BIND) Podeps´ an´ı z´ ony $ dnssec-signzone -o example.com -N increment example.com example.com.signed
Praktick´ e nasazen´ı, server BIND
Podepisov´ an´ı z´ ony
Podepisov´ an´ı z´ ony - pokraˇ cov´ an´ı podepsan´a z´ona je v souboru example.com.signed example.com.signed je abecednˇe seˇrazen, obsahuje DNSKEY, RRSIG a NSEC z´aznamy podepsan´a z´ona mnohem vˇetˇs´ı v named.conf nastavit jm´eno souboru z´ ony, nastavit parametr ”dnssec-enable” na rekurzivn´ım serveru nastavit parametr ”dnssec-validation” poslat pˇr´ısluˇsn´y DS z´aznam do nadˇrazen´e dom´eny (nach´az´ı se v souboru dsset-example.com.)
Praktick´ e nasazen´ı, server BIND
Podepisov´ an´ı z´ ony
Spr´ ava podepsan´ e z´ ony platnost podpis˚ u zaˇc´ın´a hodinu pˇred spuˇstˇen´ım dnssec-signzone platnost konˇc´ı 30 dn˚ u po podeps´an´ı (pozor na TTL!), pot´e znovu spustit dnssec-signzone KSK a ZSK mus´ı b´yt periodicky mˇenˇeny utility zjednoduˇsuj´ıc´ı proces podepisov´an´ı a spr´avy na http://www.dnssec-tools.org/
Praktick´ e nasazen´ı, server BIND
Podepisov´ an´ı z´ ony
Doporuˇ cen´ı je vhodn´e pouˇz´ıvat ”standardn´ı” adres´aˇrovou strukturu z´ony ukl´adat ve stejnˇe pojmenovan´ych souborech podepsan´e z´ony ukl´adat v .signed souborech ukl´adat vˇsechny z´ onov´e soubory ve stejn´em adres´aˇri
Praktick´ e nasazen´ı, server BIND
Souˇ casn´ y stav
Trusted keys - ”D˚ uvˇ eryhodn´ e kl´ıˇ ce” aby bylo moˇzn´e ovˇeˇrit podpisy je potˇreba zn´at a m´ıt ovˇeˇren´y jejich DNSKEY (KSK) pokud nen´ı DS z´aznam v nadˇrazen´e z´ onˇe mus´ı se DNSKEY ovˇeˇrit ”ruˇcnˇe” a pot´e mus´ı b´yt vloˇzen do souboru named.conf (trusted-keys) v ide´aln´ım pˇr´ıpadˇe bude pouze jeden - kl´ıˇc ”.” z´ony
Praktick´ e nasazen´ı, server BIND
Souˇ casn´ y stav
”Lookaside validation” v souˇcasn´e dobˇe nen´ı podeps´ana koˇrenov´a dom´ena spr´ava kl´ıˇc˚ u pro vˇsechny podepsan´e dom´eny je velmi n´aroˇcn´a pokud neexistuje DS z´aznam v nadˇrazen´e z´ onˇe, hled´a se v DLV registru, pokud je nalezen, pouˇzije se nejzn´amˇejˇs´ı DLV registr spravuje ISC (https://www.isc.org/solutions/dlv)
Praktick´ e nasazen´ı, server BIND
DNSSEC v dom´ enˇ e cz. zaveden 30.09.2008 jej´ı kl´ıˇc lze autentizovat pˇres ISC DLV registr
Souˇ casn´ y stav
Praktick´ e nasazen´ı, server BIND
Testov´ an´ı a hled´ an´ı chyb
Hled´ an´ı chyb velmi uˇziteˇcn´y n´astroj je ”dig” obvykl´e chyby c´ılov´y server neodpov´ıd´a na EDNS0 dotazy RRSIG z´aznam je ”proˇsl´y” k z´aznamu chyb´ı pˇr´ısluˇsn´y DNSKEY kl´ıˇc KSK nejde ovˇeˇrit z nadˇrazen´e z´ ony (nebo DLV registru)
c´ılov´y server neodpov´ıd´a server nepodporuje EDNS0 chybnˇe nastaven´y firewall nebo router
dig @<server> +edns=0
Praktick´ e nasazen´ı, server BIND
Testov´ an´ı a hled´ an´ı chyb
Hled´ an´ı chyb - pokraˇ cov´ an´ı proˇsl´y (expirovan´y) RRSIG z´aznam dig +dnssec +cd chyb´ı pˇr´ısluˇsn´y DNSKEY kl´ıˇc dig <jm´ eno_kl´ ıˇ ce> dnskey +multi chybn´y DS/DLV z´aznam dig @<ns_nadˇ razen´ e_dom´ eny> <jm´ eno_kl´ ıˇ ce> DS
Section 4 Zdroje
Zdroje
Zdroje RFC 4033 - DNS Security Introduction and Requirements RFC 4034 - Resource Records for the DNS Security Extensions RFC 4045 - Protocol Modifications for the DNS Security Extensions RFC 4641 - DNSSEC Operational Practices RFC 5155 - DNS Security (DNSSEC) Hashed Authenticated Denial of Existence http://en.wikipedia.org/wiki/DNSSEC http://www.isc.org/sw/bind/docs/DNSSEC in 6 minutes.pdf