1.25k likes | 1.57k Views
DNSSEC 實做班. TWNIC 技術組 2010 11 月份. DNS 簡介. Domain Name System: 一個分散、可靠、快速、 Client/Server 架構、可大量佈建、分層負責的資料庫查詢系統 全球上億部的 DNS 運作中,成為 Internet 最重要的基礎 新的社交網站導致大量的 DNS 查詢 一個單一的 MySpace 頁面就可能產生 200 到 300 次 DNS 查詢 一個帶有廣告的新聞網站可能產生 10 到 15 次 DNS 查詢. 正常的 DNS 查詢. www.twnic.tw IP?. Root DNS Server.
E N D
DNSSEC 實做班 TWNIC 技術組 2010 11 月份
DNS簡介 • Domain Name System:一個分散、可靠、快速、Client/Server架構、可大量佈建、分層負責的資料庫查詢系統 • 全球上億部的DNS運作中,成為Internet最重要的基礎 • 新的社交網站導致大量的DNS查詢 • 一個單一的MySpace頁面就可能產生200到300次DNS查詢 • 一個帶有廣告的新聞網站可能產生10到15次DNS查詢
正常的DNS查詢 www.twnic.tw IP? Root DNS Server www.twnic.tw IP: 210.17.9.228 End-user Cache DNS Server .TW DNS Server TWNIC.TW DNS Server
DNS弱點 • 僅用ID作為交易認證 (0-65535) • DNS cache poisoning • 新版的 DNS 只是將 ID 亂數化 • 假的DNS server • Men in the middle attack • Domain hijacking • DNS指向被竄改
DNS cache poisoning www.twnic.tw IP? www.twnic.tw IP: 1.1.1.1 www.twnic.tw IP? www.twnic.tw IP: 1.1.1.1 End-user Cache DNS Server www.twnic.tw IP? www.twnic.tw IP: 210.17.9.228 TWNIC.TW DNS Server
駭客入侵修改DNS紀錄 www.twnic.tw IP? www.twnic.tw IP: 1.1.1.1 End-user Authority Server 系統入侵、竄改DNS資料
DNS 運作 .(root) NS/A NS/A ????? ????? tw. tw. NS/A ????? NS/A NS/A ????? ????? edu.tw. edu.tw. A/MX/CNAME.... ??????????????? NS/A DNS Server (recursive yes) (Cache Server) ????? A/MX/CNAME.... ??????????????? Client
為何要DNSSEC • 原本DNS的協定就沒有注重在安全上的問題,僅有簡單的安全機制,例如DNS spoofing是很容易的事 • DNS協定因先天存在缺失,導致DNS資料正確性受到嚴重威脅 • 2001年起IETF開始制定DNSSEC標準來解決這個問題
DNS 與 DNSSEC • DNSSEC( DNS Security Extensions ) • DNS 的資料安全認證機制。 • 並非不同的軟體,更應該說是一起運作的。 • DNSSEC 是透過一種延伸的方法來達成目的,並非修改現有 DNS 的運作模式。 • 任何DNS的 查詢/回覆/錯誤/流程 沒有任何改變,只是在每一種模式下額外提供資料驗證機制。
非對稱金鑰 • 透過數學產生兩把有相關的密鑰,稱為公開/私有密鑰 • 用私有密鑰加密,只有公有密鑰可以打開,亦反之 • 用電腦A的公開密鑰解密文件,若順利解密,表示資料來源是正確的由電腦A(的私有密鑰)發出
非對稱金鑰 主機A Public key client xjciaRce27a (加密訊息) Msg Private key Msg
Hash 雜湊 • 雜湊具有獨一無二的特性,適合用在資料編碼,編碼後的資料具有獨一無二的特信 • 即使變動一個位元,也會有完全不同的雜湊值產生 • 若有兩筆資料經過雜湊後有相同的雜湊值,稱為碰撞,雜湊演算法應盡量避免碰撞的情況發生
DNSSEC 簡介 • DNS+ 數位簽章 • 數位簽章簡介 key1 (Private key) Digital signature key2 (Public key)
DNSSEC .(root) NS/A NS/A 數位簽章 數位簽章 tw. tw. NS/A 數位簽章 NS/A NS/A 數位簽章 數位簽章 edu.tw. edu.tw. A/MX/CNAME.... 數位簽章 NS/A DNS Server (recursive yes) (Cache Server) 數位簽章 A/MX/CNAME.... 數位簽章 Client
Root Name Registrars Servers DNSSEC Key material via EPP Registry Cache DNSSEC .TW Database Name servers Name Servers DNSSEC DNSSEC User's computer Registrant Name Servers Stub Browser or Resolver other (Part of application O/S) DNSSEC 運作方式
DNSSEC Chain .(root) DNSSEC DNS(不安全) 未知(不安全) tw. tw. tw. com.tw edu.tw net.tw net.tw edu.tw ………………………………….......................
DNSSEC 新增RRs • Public Key • DNSKEY Public key,用來驗證RRSIG • Private Key • 非公開鑰匙,用來簽署網域資料 • Digital signature • RRSIG 使用Private key對現有RRs所作的簽章 • DS Delegation Signer; 上層與下層的簽章 • 負面回應 • NSEC/NSEC3 在zone中的下一個域名
回應範例 原始資料 twnic3.net.tw. 10 IN NS ns1.twnic3.net.tw. twnic3.net.tw. 10 IN RRSIG NS 7 3 10 20101024073555 20100924073555 12077 twnic3.net.tw. Bm+kWjrsjQSqXo01vujd/cqJzulAesLAzaI1i9ddDRVqZEwfZoo62Rd5 mb3RwggsWwAeAEtctfS0jGb38NKbr0e3V3P3t0ExKyyeXZ7Ukj+fxJ5q zmmoQ48bS9O+rHCHtmNhqJ3a/9Rj36if+ilbuph/egYFzVuZtG7PGNU3 eRE= twnic3.net.tw. 10 IN DNSKEY 257 3 7 AwEAAcc/WzchRUkO4u0Vg1skHsRem4wm3wAlDmD4YCjbtRT4c5Ateiuh bzwigMsH4gBG/FjocS+x4L3/0CkK/jwpPZ4mD6ZIc4cttza6seMK0+fO XBJNWNlxXKeMxFxLPtXQocGQD0JVaQR1KtgnNQTV3FjsVUhwjIjymQvb yLiAYpvArl17J1PjoQliAiH2fL1XtXfx2ooSGc0xGEcDSjJVt7rP50rr Od71ahZYd0Tph8BV8grQwVlk/xIOh/3GtU2b8HLTsG4VFOecX/6UKh17 n9FwAhAMclKp7I7GWZ6CNFEi0lLOkw7iALyR93u86kyF6DP0UfJ4q2Mp SMFEllS8C4U= 數位簽章 公開鎖匙
RFC 4033 defined • DNSSEC requires support EDNS0 • EDNS0 allow UDP message as long as 4,096 bytes • EDNS0 由 client 決定大小 • NewEDNS0 flag(DO) for DNSSEC OK • New header bit • Authenticated Data(AD) bit • Checking Disable(CD) bit
EDNS0 • DNSSEC 封包大於原 UDP 512 bytes 的限制,故採用 EDNS0 的方法擴展封包到 4096 bytes • EDNS0 的支援由 Client 發起,在發送查詢時於Additional區段放入”OPT資訊” • Server收到”OPT資訊”,便知道Client支援EDNS0,於回覆封包也放入相同OPT資訊 • DNSSEC 查詢 Additional 區段總數+ 1
AD&CD bit AD = 1 CacheServer 驗證資料 Client Resolver CD = 0 AD = 0 CacheServer 不驗證資料 Client Resolver CD = 1
AD & CD bit AD = 0 Data Response CacheServer 驗證資料錯誤 Client Resolver CD = 1 No Response RCODE 2 CacheServer 驗證資料錯誤 Client Resolver CD = 0
English Domain Name Registration Number By: 2007.12.31
Chinese Domain Name Registration Number By: 2007.12.31
DNSSEC Resource Record 介紹 • RRSIG • DS • DNSKEY • NSEC • NSEC3 • NSEC3PARAM
RRSIG • 同樣的FQDN/TYPE只要簽署一個RRSIG • twnic.net.tw. 10 IN NS ns2.twnic.net.tw. • twnic.net.tw. 10 IN NS ns1.twnic.net.tw. • twnic.net.tw. 10 IN RRSIG NS 7 3 10 20101028013419 20100928013419 46895 twnic.net.tw. W9gP/qjP2WpbLIc2ToMZZalWTdV0Q3VStuPZ9p2aTpRZnkEdRrTF23ky qUcqWg5lV4FOdle9MxucfJpugym58TUFwKFhckzq72mFObtodWHtx1sD VvDbgXwz6dWwTA0qUsJ9NQc2Gx70ee3LN9r69psVOltt5OxHILKYfgYV 2as= • RRSIG 本身不需簽章,避免無限迴圈 • Resolver/Cache取得RRSIG後,會再取得DNSKEY來對RRSIG解密取得hash,再將RR做hash,兩者hash相同表示資料正確。 • Subdomain之 NS (Name Server) 不需進行簽章 • External Host 不需進行簽章
RRSIG 同 FQDN/Type 只需一筆? • www.twnic.net.tw IN A 2.2.2.2 • www.twnic.net.tw IN A 3.3.3.3 • www.twnic.net.tw IN A 7.7.7.7 • www.twnic.net.tw IN RRSIG A ………. • 同樣的 FQDN/Type 在每次回應的時候可視為一筆資料,並不會因為不同的 Client 只回應兩筆或一筆,所以不需要簽署三筆 RRSIG
DS • Resolver取得DNSKEY時會向上曾取得DS,來驗證DNSKEY是否正確。 • 如果重新產生DNSKEY,則必須再次向上層更新DS。 • DS 如同第二把放在其他(.tw) 地方的 Key 。 tw. (Name server) DS DNSKEY更新 net.tw. (Name server) Resolver DNSKEY RRSIG
DS更新問題 • DNSKEY需遞交給上層產生DS資料 • DS更新採用人工或其他方式認證,因避免系統的自動化更新 • 若DNSKEY更換時間為一個月一次,則更新次數會過於頻繁;若更換時間太長,容易被計算出KEY值 • 需透過兩把 KEY來解決此問題
DNSKEY • 單一 KEY 簽署網域資料 • 用 KSK 簽署網域資料 • 用 KSK 向上更新DS • 兩把 KEY 簽署網域資料 • ZSK: Zone sign key • 下層zone使用ZSK對RRs簽章 • KSK: Key sign key • 上一層zone使用DS指向下層zone的KSK • 下層zone使用KSK對ZSK簽章
單一 KEY簽署 • 當只有一把鑰匙簽署zone時,若更換鑰匙,則需立即向上更新DS資料 DNSKEY tw. DS net.tw. KSK DNS Server DNSKEY Public key Private key RRSIG zone
兩把KEY簽署 • 兩把以上的KEY,則可用ZSK與KSK。 DNSKEY tw. DS net.tw. KSK DNSKEY KSK Public key ZSK DNS Server Private key Public key ZSK DNSKEY Private key zone RRSIG
Key rollover • 所有的Key都必需定期更換,如果被破解時需立即更換 • 但如果Client端cache的DNSKEY是舊版,zone file中的RRSIG是新的KEY簽章驗證失效 • 在無法得知Client端cache的資料是新or舊版時,不可冒然移除任何Key或是修改RRSIG ,因遵照 rollover 階段更換新/舊 Key
Key rollover Name Server Cache Server Client Resolver Name Server Cache Server Client Resolver Key1 Key1 Key1+ Key2 Key2 Key1 Key1 Key2 Key2
NSEC • DNSSEC中處理負面快取的方式 • 傳統DNS中負面回應使用NXDOMAIN錯誤訊息表示網域名稱不存在,但這樣無法簽署RRSIG簽章來驗證資料 • NSEC回應不存在網域的上一個與下一個來表示該網域不存在 • DNSSEC在簽署網域的同時會將所有網域排序的動作
NSEC 排序準則 • 從右到左排序 • 不存在的優先 • net.tw • 0.net.tw • twnic.net.tw • w3.twnic.net.tw
NSEC回應 • 查詢www.twnic.net.tw(以上述列表假設不存在) • w3.twnic.net.tw NSEC net.tw ARRSIG • w3.twnic.net.tw 表示上一筆 • net.tw 表示下一筆, 最後一筆則回頭第一筆 • ARRSIG 表示 w3.twnic.net.tw 有 A RRSIG 可查詢
NSEC 缺點 • 因NSEC會將網域中所有資料排序,在負面快取時送出存在的網域資料(前/後各一筆),透過不斷查訊不存在網域,則可將整個 Zone file dump 出來。 • Zone enumeration • 透過NSEC3來解決此問題
NSEC3 • NSEC 3 將原本 NSEC 的排序方式改用 hash 的方式加密後再排序 • Hash(a.tw)= S4FIQ35I96BC3JM6EDLGIJANQI4UJT1K.tw • Hash(b.tw)= GILI5SMBMU2IH4L4150SAUTCPLG3SIVF.tw • Hash(c.tw)= HT811HULUBD01F1F1T5DAVM91IS7SJI9.tw • NSEC • A.tw. NSEC b.tw. • B.tw. NSEC c.tw • NSEC3 • GILI5SMBMU2IH4L4150SAUTCPLG3SIVF.tw. NSEC3 HT811HULUBD01F1F1T5DAVM91IS7SJI9.tw. • HT811HULUBD01F1F1T5DAVM91IS7SJI9.tw. NSEC3 S4FIQ35I96BC3JM6EDLGIJANQI4UJT1K.tw.
NSEC3 名詞解釋 • Empty non-terminal • 一個 domain 本身沒有RR但有其他 sub-domain • Secure delegation • 有DS的delegation • Insecure delegation • 無DS的delegation • Original owner name • 原網域名稱
NSEC3 名詞解釋(Cont.) • Hashed owner name • 做過 hash 後的名稱 • Hash order • hashed owner name 排序後的結果
NSEC3 Opt-Out • Opt-Out = 0 • 所有authoritative RR 皆會列入 NSEC3 chain • Opt-Out = 1 • 不會把 Insecure delegation 列入NSEC3 chain • 減少 sort 增加簽署效率
NSEC3 • Match • twnic3.net.tw = twnic3.net.tw • g.twnic3.net.tw “match” twnic3.net.tw • Cover • H(A) = RRMHB956GDFPJQ46FCHA1OVNCSIQBTPE • H(C) = T1DHLMPAFQ7TIF1DV1IO21UADPC9KE8G • H(g.twnic3.net.tw) = T0E3G1MOR9P2LGBLV253DHN4HD1KEK23 • H(A) < H(g.twnic3.net.tw) < H(C)
NSEC3 回應方式 • 假設查詢 twnic3.net.tw 中不存在網域 g.twnic3.net.tw • 第一筆表示該網域存在 twnic3.net.tw (match) • 5ULNROCAATPPCK4OUMVPQ6NOJDP9PP13.twnic3.net.tw. 300 IN NSEC3 1 0 10 17597502 6RK5TEL9AP1AFQ4UUBTAVR7GSQRFQ4UD NS SOA RRSIG DNSKEY NSEC3PARAM • 第二筆表示查詢的網域g.twnic3.net.tw不存在 (cover) • RRMHB956GDFPJQ46FCHA1OVNCSIQBTPE.twnic3.net.tw. 300 IN NSEC3 1 0 10 17597502 T1DHLMPAFQ7TIF1DV1IO21UADPC9KE8G A RRSIG • 第三筆表示 *.twnic3.net.tw 不存在 (cover) • 0O225CEN5G82HKH6K7ETIF1C6TMA9QDG.twnic3.net.tw. 300 IN NSEC3 1 0 10 17597502 36032I7MDDBH3A3KK0T2JI7RVQQJ9CKD NS
Cache/Resolver 怎麼區分 NSEC/NSEC3 • NSEC 回應資料上下筆網域是存在的 • NSEC3 回應的網域資料上下筆是不存在的 aaa.twnic.net.tw NSEC bbb.twnic.net.tw DNSKEY alg: 5 (RSASHA1) Client 權威主機 aaa.twnic.net.tw 1.1.1.1 bbb.twnic.net.tw 7.7.7.7 Cache Server BIND 9.4.x abc.twnic.net.tw 不存在 Query:bbb.twnic.net.tw Answer:7.7.7.7
NSEC3 負面回應 jcsiAurcExc.twnic.net.tw NSEC3 s7HCuwDJCI.twnic.net.tw Client 權威主機 aaa.twnic.net.tw 1.1.1.1 bbb.twnic.net.tw 7.7.7.7 Cache Server BIND 9.4.x abc.twnic.net.tw Query:s7HCuwDJCI.twnic.net.tw Answer: NSEC3
jcsiAurcExc.twnic.net.tw NSEC3 s7HCuwDJCI.twnic.net.tw DNSKEY alg : 7 (NSEC3RSASHA1) Client 權威主機 aaa.twnic.net.tw 1.1.1.1 bbb.twnic.net.tw 7.7.7.7 Cache Server BIND 9.4.x abc.twnic.net.tw 不存在 不會進行資料驗證