dnsse cv9

123
DNSSEC 實實實 TWNIC 實實實 2011 03 實實

Upload: itsuki810

Post on 15-May-2015

594 views

Category:

Education


5 download

DESCRIPTION

DNSSECv9

TRANSCRIPT

Page 1: Dnsse cv9

DNSSEC 實做班

TWNIC 技術組2011 03 月份

Page 2: Dnsse cv9

DNS 簡介 Domain Name System: 一個分散、可靠、快速、

Client/Server 架構、可大量佈建、分層負責的資料庫查詢系統

全球上億部的 DNS 運作中,成為 Internet 最重要的基礎

新的社交網站導致大量的 DNS 查詢 一個單一的 MySpace 頁面就可能產生 200 到 300 次

DNS 查詢 一個帶有廣告的新聞網站可能產生 10 到 15 次 DNS

查詢

Page 3: Dnsse cv9

正常的 DNS 查詢

Cache DNS Server

End-user

www.twnic.tw IP?

www.twnic.tw IP: 210.17.9.228

Root DNS Server

.TW DNS Server

TWNIC.TW DNS Server

Page 4: Dnsse cv9

DNS 弱點 僅用 ID 作為交易認證 (0-65535)

DNS cache poisoning 新版的 DNS 只是將 ID 亂數化

假的 DNS server Men in the middle attack

Domain hijacking DNS 指向被竄改

Page 5: Dnsse cv9

DNS cache poisoning

Cache DNS Server

End-user

www.twnic.tw IP?

www.twnic.tw IP: 1.1.1.1

TWNIC.TW DNS Server

www.twnic.tw IP?

www.twnic.tw

IP:

1.1.1.1

www.twnic.tw IP?www.twnic.tw IP:

210.17.9.228

Page 6: Dnsse cv9

駭客入侵修改 DNS 紀錄

AuthorityServer

End-user

www.twnic.tw IP?

www.twnic.tw IP: 1.1.1.1

系統入侵、竄改 DNS資料

Page 7: Dnsse cv9

DNS 運作.(root)

tw. tw.

edu.tw.edu.tw.DNS

Server(recursive yes)(Cache Server)

Client

NS/A NS/A

NS/A

NS/A

NS/A

NS/A

A/MX/CNAME....

A/MX/CNAME....

?????

????? ?????

?????

?????

?????

???????????????

???????????????

Page 8: Dnsse cv9

入侵事件時間 主要受害單位 可能原因 攻擊方式 影響

2010/01/12

1. 百度2.Register.com

DNS Server 遭受入侵後,非法竄改 DNS Record

社交工程取得帳號密碼進行非法修改

1. 連線至百度時,會被轉向到一個位於荷蘭的IP地址,百度旗下所有子域名均無法正常連線2. 百度網站被嫁接至雅虎網站

2009/12/18

Twitter Twitter 員工的電腦被駭客入侵,進而非法竄改 DNS Record

盜用帳戶進行非法修改

Twitter 網站被嫁接至惡意網站

Page 9: Dnsse cv9

為何要 DNSSEC 原本 DNS 的協定就沒有注重在安全上的問題,

僅有簡單的安全機制,例如 DNS spoofing 是很容易的事

DNS 協定因先天存在缺失,導致 DNS 資料正確性受到嚴重威脅

2001 年起 IETF 開始制定 DNSSEC 標準來解決這個問題

Page 10: Dnsse cv9

DNS 與 DNSSEC DNSSEC( DNS Security Extensions )

DNS 的資料安全認證機制。 並非不同的軟體,更應該說是一起運作的。

DNSSEC 是透過一種延伸的方法來達成目的,並非修改現有 DNS 的運作模式。

任何 DNS 的 查詢 / 回覆 / 錯誤 / 流程 沒有任何改變,只是在每一種模式下額外提供資料驗證機制。

Page 11: Dnsse cv9

非對稱金鑰 透過數學產生兩把有相關的密鑰,稱為公

開 / 私有密鑰 用私有密鑰加密,只有公有密鑰可以打開,亦

反之 用電腦 A 的公開密鑰解密文件,若順利解密,

表示資料來源是正確的由電腦 A( 的私有密鑰 )發出

Page 12: Dnsse cv9

非對稱金鑰

主機 A

client

Private key

Public key

Msg

xjciaRce27a( 加密訊息 )

Msg

Page 13: Dnsse cv9

Hash 雜湊雜湊具有獨一無二的特性,適合用在資料編碼,編碼後的資料具有獨一無二的特信

即使變動一個位元,也會有完全不同的雜湊值產生

若有兩筆資料經過雜湊後有相同的雜湊值,稱為碰撞,雜湊演算法應盡量避免碰撞的情況發生

雜湊可將多筆資料整合為一筆 (多對一 ) 的特性

Page 14: Dnsse cv9

DNSSEC 簡介 DNS + 數位簽章 數位簽章簡介

key1(Private

key)

key2(Public key)

Digital signature

Page 15: Dnsse cv9

DNSSEC.(root)

tw. tw.

edu.tw.edu.tw.DNS

Server(recursive yes)(Cache Server)

Client

NS/A NS/A

NS/A

NS/A

NS/A

NS/A

A/MX/CNAME....

A/MX/CNAME....

數位簽章

數位簽章 數位簽章

數位簽章

數位簽章

數位簽章

數位簽章

數位簽章

Page 16: Dnsse cv9

DNSSEC 運作方式

Cache

Name servers

RootName

Servers

.TWName

Servers

RegistrantName ServersStub

Resolver(Part of

O/S)

User's computer

RegistryDatabase

Key

mat

eria

l

via

EPPD

NSSEC

DNSSEC

DNSSEC

Registrars

DN

SS

EC

Browser orother

application

Page 17: Dnsse cv9

DNSSEC Chain.

(root)

tw.

com.tw

tw.tw.

edu.twnet.twnet.tw edu.tw

………………………………….......................

DNSSEC

DNS( 不安全 )未知 ( 不安全 )

Page 18: Dnsse cv9

DNSSEC 新增 RRs Public Key

DNSKEY Public key ,用來驗證 RRSIG

Private Key 非公開鑰匙,用來簽署網域資料

Digital signature RRSIG 使用 Private key 對現有 RRs 所作

的簽章 DS Delegation Signer; 上層與下層的簽章

負面回應 NSEC/NSEC3 在 zone 中的下一個域名

Page 19: Dnsse cv9

DNSSEC 運作原理

Page 20: Dnsse cv9

回應範例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=

原始資料

數位簽章

公開鎖匙

Page 21: Dnsse cv9

RFC 4033 defined DNSSEC requires support EDNS0

EDNS0 allow UDP message as long as 4,096 bytes EDNS0 由 client 決定大小 New EDNS0 flag(DO) for DNSSEC OK

New header bit Authenticated Data(AD) bit Checking Disable(CD) bit

Page 22: Dnsse cv9

EDNS0 DNSSEC 封包大於原 UDP 512 bytes 的限制,故採用 EDNS0 的方法擴展封包到 4096 bytes

EDNS0 的支援由 Client 發起,在發送查詢時於 Additional區段放入” OPT 資訊”

Server收到” OPT 資訊”,便知道 Client支援EDNS0 ,於回覆封包也放入相同 OPT 資訊

DNSSEC 查詢 Additional 區段總數 + 1

Page 23: Dnsse cv9

AD & CD bit

Cache Server驗證資料

Cache Server不驗證資料

ClientResolver

ClientResolver

CD = 0

AD = 1

CD = 1

AD = 0

Page 24: Dnsse cv9

AD & CD bit

Cache Server驗證資料錯誤

ClientResolver

CD = 1

AD = 0Data Response

Cache Server驗證資料錯誤

ClientResolver

CD = 0

No ResponseRCODE 2

Page 25: Dnsse cv9

English Domain Name Registration Number

By: 2007.12.31

211,567

209,465 214,113

192,888197,195

194,716 199,348

200,858

202,538

203,687

205,217

206,275

206,823

207,571

207,137

208,124

207,931

210,307

211,498

212,379 215,193

218,716

0

50,000

100,000

150,000

200,000

250,000

2006.012006.02

2006.032006.04

2006.052006.06

2006.072006.08

2006.092006.10

2006.112006.12

2007.012007.02

2007.032007.04

2007.052007.06

2007.072007.08

2007.092007.10

2007.112007.12

.com.tw .org.tw .net.tw .idv.tw .game.tw .club.tw .ebiz.tw .gov.tw .edu.tw ASCII.tw

221,333

225,533

Page 26: Dnsse cv9

Chinese Domain Name Registration Number

By: 2007.12.31

123,845125,319

125,967125,895

120,125

120,304

120,846

121,298

121,876

123,994

123,774

123,999123,222

123,115123,659

124,885125,421

124,920125,523

124,728126,747

127,875

129,530

130,651

0

20,000

40,000

60,000

80,000

100,000

120,000

140,000

.商業 .tw .組織 .tw .網路 .tw IDN.tw

Page 27: Dnsse cv9
Page 28: Dnsse cv9

DNSSEC Resource Record 介紹 RRSIG DS DNSKEY NSEC NSEC3 NSEC3PARAM

Page 29: Dnsse cv9

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 不需進行簽章

Page 30: Dnsse cv9

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

Page 31: Dnsse cv9

DS Resolver 取得 DNSKEY 時會向上曾取得 DS ,來

驗證 DNSKEY 是否正確。 如果重新產生 DNSKEY ,則必須再次向上層更新

DS 。 DS 如同第二把放在其他 (.tw) 地方的 Key 。

Resolvernet.tw.

(Name server)

tw.(Name server)

DNSKEYRRSIG

DS

DNSKEY 更新

Page 32: Dnsse cv9

DS 更新問題 DNSKEY需遞交給上層產生 DS 資料

DS 更新採用人工或其他方式認證,因避免系統的自動化更新

若 DNSKEY 更換時間為一個月一次,則更新次數會過於頻繁 ; 若更換時間太長,容易被計算出 KEY值

需透過 兩把 KEY 來解決此問題

Page 33: Dnsse cv9

DNSKEY 單一 KEY 簽署網域資料

用 KSK 簽署網域資料 用 KSK 向上更新 DS

兩把 KEY 簽署網域資料 ZSK: Zone sign key

下層 zone使用 ZSK 對 RRs簽章 KSK: Key sign key

上一層 zone使用 DS 指向下層 zone 的 KSK 下層 zone使用 KSK 對 ZSK簽章

Page 34: Dnsse cv9

net.tw.

單一 KEY簽署當只有一把鑰匙簽署 zone 時,若更換鑰匙,則需立即向上更新 DS 資料

KSK

Public key

Private key

DNSKEY

zoneRRSIG

DNSServer

tw.

DS

DNSKEY

Page 35: Dnsse cv9

兩把 KEY簽署 兩把以上的 KEY ,則可用 ZSK 與 KSK 。

net.tw.

ZSK

Public key

Private key

KSKDNSKEY

zone RRSIG

DNSServer

tw.

DS

DNSKEY

KSK

Public key

Private key

ZSKDNSKEY

Page 36: Dnsse cv9

Key rollover 所有的 Key都必需定期更換,如果被破解時需立即更換

但如果 Client端 cache 的 DNSKEY 是舊版, zone file 中的 RRSIG 是新的 KEY簽章驗證失效

在無法得知 Client端 cache 的資料是新 or舊版時,不可冒然移除任何 Key或是修改RRSIG ,因遵照 rollover 階段更換 新 /舊 Key

Page 37: Dnsse cv9

Key rolloverNameServer

CacheServer

Key1

Key2

Key2

ClientResolver

NameServer

CacheServer

Key1

Key1+Key2

Key2

ClientResolver

Key1 Key1

Page 38: Dnsse cv9

NSEC DNSSEC 中處理負面快取的方式傳統 DNS 中負面回應使用 NXDOMAIN 錯誤訊息表示網域名稱不存在,但這樣無法簽署RRSIG簽章來驗證資料

NSEC 回應不存在網域的上一個與下一個來表示該網域不存在

DNSSEC 在簽署網域的同時會將所有網域排序的動作

Page 39: Dnsse cv9

NSEC 排序準則從右到左排序 不存在的優先

net.tw 0.net.tw twnic.net.tw w3.twnic.net.tw

Page 40: Dnsse cv9

NSEC 回應 查詢 www.twnic.net.tw( 以上述列表假設不存

在 ) w3.twnic.net.tw NSEC net.tw A RRSIG

w3.twnic.net.tw 表示上一筆 net.tw 表示下一筆 , 最後一筆則回頭第一筆 A RRSIG 表示 w3.twnic.net.tw 有 A RRSIG 可查詢

Page 41: Dnsse cv9

NSEC 缺點 因 NSEC 會將網域中所有資料排序,在負面快

取時送出存在的網域資料 (前 / 後各一筆 ) ,透過不斷查訊不存在網域,則可將整個 Zone file dump 出來。 Zone enumeration

透過 NSEC3 來解決此問題

Page 42: Dnsse cv9

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.

Page 43: Dnsse cv9

NSEC3 名詞解釋 Empty non-terminal

一個 domain 本身沒有 RR但有其他 sub-domain Secure delegation

有 DS 的 delegation Insecure delegation

無 DS 的 delegation Original owner name

原網域名稱

Page 44: Dnsse cv9

NSEC3 名詞解釋 (Cont.) Hashed owner name

做過 hash 後的名稱 Hash order

hashed owner name 排序後的結果

Page 45: Dnsse cv9

NSEC3 Opt-Out Opt-Out = 0

所有 authoritative RR 皆會列入 NSEC3 chain Opt-Out = 1

不會把 Insecure delegation 列入 NSEC3 chain 減少 sort 增加簽署效率

Page 46: Dnsse cv9

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)

Page 47: Dnsse cv9

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

Page 48: Dnsse cv9

Cache/Resolver 怎麼區分 NSEC/NSEC3 NSEC 回應資料上下筆網域是存在的 NSEC3 回應的網域資料上下筆是不存在的

Cache ServerBIND9.4.x

Client權威主機

aaa.twnic.net.tw1.1.1.1

bbb.twnic.net.tw 7.7.7.7

aaa.twnic.net.tw NSEC bbb.twnic.net.twDNSKEY alg: 5 (RSASHA1)

Query:bbb.twnic.net.twAnswer : 7.7.7.7

abc.twnic.net.tw 不存在

Page 49: Dnsse cv9

NSEC3 負面回應

Cache ServerBIND9.4.x

Client權威主機

aaa.twnic.net.tw1.1.1.1

bbb.twnic.net.tw 7.7.7.7

jcsiAurcExc.twnic.net.tw NSEC3 s7HCuwDJCI.twnic.net.tw

Query:s7HCuwDJCI.twnic.net.twAnswer : NSEC3

abc.twnic.net.tw

Page 50: Dnsse cv9

Cache ServerBIND9.4.x

Client權威主機

aaa.twnic.net.tw1.1.1.1

bbb.twnic.net.tw 7.7.7.7

jcsiAurcExc.twnic.net.tw NSEC3 s7HCuwDJCI.twnic.net.twDNSKEY alg : 7 (NSEC3RSASHA1)

不會進行資料驗證

abc.twnic.net.tw不存在

Page 51: Dnsse cv9

NSEC 與 NSEC3 相容性 指對 NSEC 之相容性,而非對 non DNSSEC

aware 之相容性避免 NSEC aware但 NSEC3 unaware 的

resolver去驗證 NSEC3 zone ,故新增兩個algorithm Algorithm 6= 原本的 Algorithm 3 (DSA/SHA1) Algorithm 7= 原本的 Algorithm 5 (RSA/SHA1)

NSEC/NSEC3 無法混合,只能擇一實做

Page 52: Dnsse cv9

NSEC3PARAM 與 NSEC3 RR前半段欄位一樣 (但 Flags=0) 同一個 zone 中的 NSEC3PARAM及 NSEC3

RR 之參數值需一致 (除了 Flags)權威伺服器用來計算 NSEC3 回應內容用,並

非驗證用

Page 53: Dnsse cv9

DNSSEC Resource Record 封包格式

Page 54: Dnsse cv9

DNSKEY封包格式 DNSKEY

flags Bits 說明 參考資料0-6 Unassigned RFC 3755 RFC 4034

7 ZONE KEY (ZSK) RFC 3755 RFC 4034

8 REVOKE,Trust Anchors Revoke,值為 385 RFC 5011

9-14 Unassigned RFC 3755 RFC 4034

15 Secure Entry Point (SEP), 即 KSK RFC 3757 RFC 4034

Page 55: Dnsse cv9

DNSKEY封包格式 DNSKEY

protocol 值 說明0 NONE

1 TLS

2 EMAIL

3 DNSSEC

4 IPSEC

255 ALL

Page 56: Dnsse cv9

DNSKEY封包格式 DNSKEY

Algorithm 列舉常用

值 說明3 DSA/SHA1

5 RSA/SHA-1

6 DSA-NSEC3-SHA1

7 RSASHA1-NSEC3-SHA1

8 RSA/SHA-256

10 RSA/SHA-512

Page 57: Dnsse cv9

DNSKEY 格式 KSKtwnic.net.tw. 86400 DNSKEY 257 3 5

( AwEAAa/KVVdwmvrpdIP650gGoFqbx/W76h+APAJyxfpx YIuT3AJqXy+6reUNzaTC89O6UBmFMPKFoLP9iavAcfgc QnmI50XoCWRCnCF30CIIaIOMJ5ze4s8QIT0MPHDHM5l5 vBo87Bu6CUNn3FrmiC0LJd9fqvwvI3P4Z4GQ+xb06w3a h3NOxUaqhizoDcqsFERY8QGYmiFb33cOIseYJNkufomf

PLkVeTC2R6CU6zNdFXbeNOqv7pTW1/jftlsH5L6mJEdk 71VHg4+Y2q/VuR7+s/Ju/VpVELS5ggcyjK2O0Ei5kPKg m9zpOjSw4wJWhbp7PVTxX3PnvyxuRlOJs2ksdcE= ) ; key id = 12319

ZSK twnic.net.tw. 86400 DNSKEY 256 3 5

(AwEAAb3XBYRGuJJIWSoMsCvT2dkbuHbW6Bzd

7q1/DWPtkw6bcPXciM5weRq8mVnEaqJ5ob4J FuWe7r8HM7XFpNgVHLTu5e5HQwY2MafskMNf

xc3jPhc1KbBTZE1y8r+j+8BQoke+yu0fXAb9 mUpEygkEqnFaT8WiAX95+KsFo0iLp0mkFmG7

l+lvXmxns5sn0CApE474u2q0Y0DUxzzX5ntF

8fmKkxBfEPUi4GZX1ncFZfW+twsSTNv3qaYj

u7g76KV67FnGSOe/bQ0bJ0tyRvzkdQ46Eds/

s9Fb7aR3/Ra2ZFD4R4favnQDXUB3w/QJ2rJR

uGOEDsI/pyloqy9LQyD/+28= ) ; key id = 54855

Page 58: Dnsse cv9

RRSIG封包格式 RRSIG

Page 59: Dnsse cv9

RRSIG封包格式 Type Covered

原本的型態:MX, A, NS, TXT等 Algorithm 加密演算法 Labels

twnic.net.tw = 3 mail.twnic.net.tw = 4 *.twnic.net.tw = 3

Page 60: Dnsse cv9

RRSIG封包格式 Original TTL

原本的 TTL 值 Signature Expiration

Expiration RRSIG 有效時間 Inception RRSIG簽署時間

Key Tag 標示加密的 DNSKEY

Page 61: Dnsse cv9

RRSIG 封包格式 Signer’s Name

網域名稱 ex: www.twnic.net.tw signer’s name: twnic.net.tw

Signature 簽章資料

Page 62: Dnsse cv9

RRSIG 格式 mail.twnic.net.tw. 0 IN RRSIG A 5 4 0 20100806080433 20100707080433 40446

twnic.net.tw. pMz+H02NtEL2QILFE14++xgZyabtqvhqNmJwAHuSrZbaIzZyXYEI1bks xtfTiVrs9iVH3jeOiBnr+VTwoEBT7vf8Cj5DWFCnHlOzWBFha22cMxCP AbS5JW9gMsIt7BBpsuJuC4VrwVwCSDiMkWn3MRaU2gOZ7B2sIkJ08ZID BteGZGCqc1wFyPcazSr8cPIia0TkmRUVQYqK5Y0Wdd0TtOOkpf+8d/xO I6/TLCz9j8AMfJD0IrF5rVE4JBUmVeI7WAYD6pa3lGAS+2pU0l/NHYXT o8U73wVDZqDG0E5wrXAnfq9WbhN30Jj2tLNjDFyJU15/Y7R4+KdM//29 eANbIQ==

Page 63: Dnsse cv9

DS 封包格式 Key Tag

標示與 DNSKEY 同樣的 Key Tag Algorithm

DNSKEY 使用的演算法 Digest Type

Digest 的加密演算法 : SHA-1(1) , SHA-256(2)

Page 64: Dnsse cv9

DS格式

Page 65: Dnsse cv9

NSEC 封包格式 Next Domain Name

下一筆網域名稱 Type Bit Maps

可查詢的種類 (A MX RRSIG DNSKEY…等 )

Page 66: Dnsse cv9

NSEC 格式 w3.twnic.net.tw NSEC net.tw A RRSIG

Page 67: Dnsse cv9

NSEC3 封包格式 Hash Algorithm

0 reserved 1 SHA-1

Page 68: Dnsse cv9

NSEC3 封包格式 Flags

可支援 8 種 Flags, 目前僅支援 Opt-Out Flag

Page 69: Dnsse cv9

NSEC3 封包格式 Iterations

Hash function執行的次數

Page 70: Dnsse cv9

NSEC3 封包格式 Salt Length: 種子長度 (0-255) Salt: 種子,當長度為 0 時填入” -”

Page 71: Dnsse cv9

NSEC3 封包格式 Hash Length: 1-255 Next Hashed Owner Name: Hash Order 下一個 Type Bit Maps: 與 NSEC 相同

Page 72: Dnsse cv9

NSEC3 格式 h9p7u7tr2u91d0v0ljs9l1gidnp90u3h.org. 900 IN

NSEC3 1 1 1 D399EAAB H9RSFB7FPF2L8HG35CMPC765TDK23RP6 NS SOA RRSIG DNSKEY NSEC3PARAM

Page 73: Dnsse cv9

NSEC3PARAM 格式 與 NSEC3 RR前半段欄位一樣 (但 Flags=0)

org. 900 IN NSEC3PARAM 1 0 1 D399EAAB

Page 74: Dnsse cv9

DNSSEC 實做

Page 75: Dnsse cv9

dig 指令介紹 dig [option] domain [type]

option @IP - 指定 DNS伺服器

dig @168.95.1.1 www.twnic.net.tw +dnssec - 使用 DNSSEC 模式

dig +dnssec se. ns +tcp - 使用 tcp 模式查詢

dig +tcp www.twnic.net.tw +trace - 追蹤模式

dig +trace www.twnic.net.tw

Page 76: Dnsse cv9

DNSSEC 指令 dnssec-keygen

產生 DNSKEY 與 Private key dnssec-signzone

簽署網域 dnssec-dsfromkey

由 DNSKEY 產生 DS dnssec-keyfromlabel

由其他加密設備產生 DNSKEY dnssec-revoke

註銷 DNSKEY dnssec-settime

調整 KEY 的有效使間

Page 77: Dnsse cv9

安裝 BIND yum install named yum install caching-nameserver BIND 9.7.2-P2 ( 2010-12-1 最新版 )

http://ftp.isc.org/isc/bind9/9.7.2-P2/bind-9.7.2-P2.tar.gz

tar –zxf bind-9.7.2-P2.tar.gz cd bind-9.7.2-P2 ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var

--enable-threads --enable-ipv6 make make install

Page 78: Dnsse cv9

基礎環境建置 取得 root.cache

dig @a.root-servers.net . ns > /var/named/named.cache

Page 79: Dnsse cv9

修改 /etc/named.caching-nameserver.confoptions {

listen-on port 53 { any; };

directory "/var/named";

…….

……

recursion yes;

dnssec-enable yes;

};

include "/etc/named.rfc1912.zones";

;路徑部份請依實際路徑調整

Page 80: Dnsse cv9

修改 /etc/named.rfc1912.confzone “example.tw” {

type master;

file “example.tw.db”;

};

Page 81: Dnsse cv9

建立 /var/named/example.tw.db$TTL 0

$ORIGIN example.tw.

@ IN SOA ns1 root (

1 ; serial (d. adams)

1H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

example.tw. IN NS ns1.example.tw.

ns1 IN A 1.1.1.1

www IN A 2.2.2.2

mail IN A 3.3.3.3

@ IN MX 10 mail

Page 82: Dnsse cv9

DNSSEC 簽署 (sign zone)步驟 產生 DNSKEY

ZSK KSK

將 DNSKEY 加入 Zone file簽署網域 修改 /etc/named.rfc1912.zones啟動 named檢查 log

Page 83: Dnsse cv9

Key status in zone file Publish : 公開 Activate : 啟用 Revoke : 廢止 Inactivate : 不啟用 Delete : 終止

Page 84: Dnsse cv9

Key rollover 時間表KSK1 ActivateZSK1 Activate

ZSK2 Publish

ZSK2 ActivateZSK1 Inactivate

ZSK1 Delete

KSK1ZSK2

KSK1ZSK1

ZKS3 Publish

ZSK3 ActivateZSK2 Inactivate

ZSK2 Delete

KSK2ZSK3

KSK1ZSK3

KSK1ZSK3

KSK2 Publish

KSK2 ActivateKSK1 Inactivate

KSK1 Delete

KSK3 PublishZKS4 Publish

KSK3 ActivateZSK4 ActivateKSK2 InactivateZSK3 Inactivate

KSK2 DeleteZSK3 Delete

KSK3ZSK4

Page 85: Dnsse cv9

產生 DNSKEY 建立放置目錄

mkdir /root/dnskey; cd /root/dnskey 產生 ZSK

dnssec-keygen -r /dev/urandom -a RSASHA1 -b 1024 -n ZONE example.tw

產生 KSK dnssec-keygen -r /dev/urandom -f KSK -a RSASHA1 -

b 2048 -n ZONE example.tw檔案名稱格式

K(domain)+(演算法 )+(Key id).[private, key]

Page 86: Dnsse cv9

將 DNSKEY 加入 Zone file Publish Key 加入 DNSKEY 之前可先用 cp 保留檔案 加入 DNSKEY

cat K*.key >> /var/named/example.tw.db 請注意使用附加 ( >> )

使用 cat 表示把 key 放入 zone 內,表示要 Publish Key

Page 87: Dnsse cv9

簽署網域 dnssec-signzone 指令格式

dnssec-signzone -o ( 網域名稱 ) -k (KSK) (Zone file 位置 ) (ZSK) dnssec-signzone -o example.tw –k Kexample.tw.+005+53428.key example.tw.db

Kexample.tw.+003+48252.key 被指定的 Key 表示要 Activate 若 Key 已經被放入 (cat) Zone 內,卻沒被 dnssec-signzone 指定,表示為 Publish 或是 Inactivate Key

簽署後會產生新檔案 example.tw.db.signed 指定 RRSIG 有效時間

dnssec-signzone -s (RRSIG 起始時間 ) -e (RRSIG 有效時間 ) YYYYMMDDHHMMSS +offset ( from 起始時間 ) “now”+offset ( from now )

預設時間為 now + 30 天

Page 88: Dnsse cv9

後續動作 修改 /etc/named.rfc1912.zoneszone “example.tw” {

type master;

file “example.tw.db.signed”;

};

重新啟動 named 查看 /var/log/message 會有以下紀錄

Jul 19 15:31:37 asus-srv4 named[15575]: zone example.tw./IN: loaded serial 1 (DNSSEC signed)

Page 89: Dnsse cv9

驗證 alias dig=‘dig +dnssec @localhost’ dig example.tw ns dig mail.example.tw mx dig www.example.tw a NSEC

dig 不存在網域 dig 存在的網域 不存在的 type

Page 90: Dnsse cv9

DNSKEY 向上更新 DS 透過註冊商傳遞 DNSKEY 或 DS(dsset-*) 給

上層簽署 DS 資料。

Page 91: Dnsse cv9

key rollover ZSK 實做 假設 ZSK 已快過期 產生第二把 ZSK

加入新 ZSK 簽署網域 cat K*.key >> zonefile dnssec-signzone -o ( 網域名稱 ) -k (KSK) (Zone file 位置 ) (舊 ZSK) ( 新 ZSK)

舊 ZSK 不可移除,需等 RRSIG 有效時間過後再移除 移除時直接修改 example.tw移除舊的 DNSKEY 可在此時加入下次要更換的新 ZSK

再次簽署網域 此時舊的 DNSKEY 被移除 DNSKEY已被更換 新的 DNSKEY已加入完成

Page 92: Dnsse cv9

key rollover KSK 實做步驟與 ZSK 方式相同,指令替換如下

dnssec-signzone -o ( 網域名稱 ) -k (KSK) -k ( 新 KSK) (Zone file 位置 ) (ZSK)

KSK 更新後需對上層更新 DS 紀錄

Page 93: Dnsse cv9

利用設定時間達成 Key Rollover 在建立 Key 的時候便設定五個參數

-P date/+offset 此時間後 , 加入 Zone 內 , 但不簽署

-A date/+offset 此時間後 , 加入 Zone 內 , 並且簽署

-R date/+offset ( KSK only ) 此時間後 , Revoke Key, 加入 Zone 內 , 並且簽署

-I date/+offset 此時間後 , 加入 Zone 內 , 但不簽署

-D date/+offset 此時間後 , 不加入 Zone 內

Page 94: Dnsse cv9

依照不同的 Key 時間自動簽署 dnssec-signzone 指令可依照不同的時間設定自動抓取 Key 來簽署網域

dnssec-signzone -S -o (domain) -K (key path) (zone file) dnssec-signzone -S -o example.tw -K /root/dnskey

example.tw.db

Page 95: Dnsse cv9

調整 Key 時間 dnssec-settime 可調整已產生之 Key 個別時間 ,

參數如同 -P/-A/-R/-I/-D

Page 96: Dnsse cv9

Key 時間與 RRSIG 有效時間 Key 本身是沒有時間,在 DNSSEC 使用上才

把時間納入 RRSIG 未指定的情況下有效時間預設為 30

天 Key rollover : +90d RRSIG : +30d

+30d ~ + 90d 驗證無效 RRSIG 的有效時間與 Key 的時間沒有任何關係, dnssec-signzone 也不會幫你調整

Page 97: Dnsse cv9

NSEC3 實做 產生 DNSKEY

dnssec-keygen -r /dev/urandom -a NSEC3RSASHA1 -f KSK -3 -b 1024 -n ZONE example.tw

NSEC3 簽署 dnssec-signzone -3 17597502 -H 10 -A -o example.tw –k Kexample.tw.+005+53428.key

example.tw.db Kexample.tw.+003+48252.key -3 slat -H hash 次數 -A opt-out

Page 98: Dnsse cv9

DNSKEY Revoke 無法經由正常 Key rollover 更換鑰匙

DNSKEY 被破解需要立即更換 測試階段轉移成正式階段

dnssec-revoke 更換 ZSK直接由 KSK簽署即可,故 ZSK 不需

Revoke 會產生新的 key file, DNSKEY flags = 385

cacheauthority

serverclient

key1 a.twnic.net.tw

b.twnic.net.twNew key2key1 revoke

Page 99: Dnsse cv9

子網域簽署 若下層傳遞 DNSKEY則需使用 dnssec-

dsfromkey 產生 dsset-(domain) 資料 若下層傳遞 DS 於上層,可放於目錄內,以

下列指令簽署即可 DS 檔案格式必須為 dsset-(domain)

簽署指令 dnssec-signzone -g -d (dsset-* 存放路徑 ) -o domain

… 簽署時會自動尋找相關 NS/DS 授權

Page 100: Dnsse cv9

Dynamic update 在 nsupdate 更新時,需告訴 named 存放鑰匙

的目錄,目錄需存在 private key Kdomain+alg+keyid.[key,private] 不可被更改為其他格式,會出現無法找到鑰匙的錯誤訊息。

options {

........

key-directory “/keypath”;

};

nsupdate 的用法如同以往

Page 101: Dnsse cv9

Slave Server 在 optione 中開啟 DNSSEC 即可

Option{

……

dnssec-enable yes;

}

Page 102: Dnsse cv9

DNSSEC 過渡期 DNSSEC 的驗證過程是由最 .(root) 開始的 ,

若其中一層未支援 DNSSEC, 則 DNSSEC 的驗證無法保證其正確性

DNSSEC 的驗證主要在 stub resolver(cache server)完成 , 除此之外 AP 本身也應要能支援DNSSEC 的驗證 cache server 需開啟 options 選項

dnssec-enable yes;

Page 103: Dnsse cv9

DNSSEC 驗證 提供 Recursive 的主機應將 .(root) DNSKEY

加入 trust-key 內。 需注意 .(root) DNSKEY 的更換

若上層尚未支援 DNSSEC, 則須將受信任的權威主機 DNSKEY 加入 trust內

dig +dnssec @149.20.64.20 iis.se ad bit set

https://www.dnssec-tools.org/wiki/index.php/Tutorials

Page 104: Dnsse cv9

Application DNSSEC 驗證 若 AP 可自行支援 DNSSEC 驗證方式 , 則可

將 CD bit 設定為 1 , 讓 Cache Server 不需驗證資料

安裝 firefox DNSSEC 外掛 https://addons.mozilla.org/en-US/firefox/addon/dnssec-validator/

versions/1.1.4

Page 105: Dnsse cv9

DNSSEC 其他 Key 長度

RFC 4641 we come to the following recommendations about KSK sizes:

1024 bits for low-value domains, 1300 bits for medium-value domains, and 2048 bits for high-value domains.

Page 106: Dnsse cv9

DNSSEC key 長度 ICANN

KSK 2048 ZSK 1024

TWNIC KSK: 2048 ZSK: 1024

其他 TLD參考數據 .ORG 2048/1024 .GOV 2048/2048 .SE 2048/1024

Page 107: Dnsse cv9

Key lifecycle

ICANN Zone file size: < 300 Domain names TTL: 2 days ZSK: 90 days KSK: change if necessary

TWNIC Zone file size: > 100K Domain names TTL: 1 day ZSK: 30 days KSK: 1 years There are 8 zones in TWNIC, rollover 1 ZSK every 3 or 4 days

Page 108: Dnsse cv9

DNSSEC 效率DNSSEC with Key rollover

With DNSSEC Without DNSSEC

Create zone files

40min20sec

21min42sec

2min

Zone file size

176M 97M 20M

Query time

- 6.02 ms 3.47 ms

Start named

39.1s 24.6s 6.3s

108

Page 109: Dnsse cv9

DNSKEY 的保存 DNSKEY 為簽署 zonefile 的重要鑰匙 應保存備份並注意權限

drwx------ root root 保存目錄 如有使用動態更新需注意權限調整

若駭客取得 DNSKEY則可竄改資料並重新發佈,妥善保存則可避免此問題。

Page 110: Dnsse cv9

更換 DNSSEC SOP 在 master 停止 DNS 服務 , 讓流量導向 slave

即使轉換錯誤也不會導致查詢錯誤保存 zone file 簽署 DNSSEC 與測試 重新啟動 master DNS 服務

Page 111: Dnsse cv9

基礎 KEY 管理 產生 Key

透過 dnssec-keygen 的五個時間參數產生鑰匙簽署網域

dnssec-signzone -S smart 模式簽署自動判別 key 的使用

移除舊 key 使用 find -ctime 來清除產生很久的 key

Page 112: Dnsse cv9

DNSSEC-Tools

Key 管理工具介紹

Page 113: Dnsse cv9

DNSSEC-Tools http://www.dnssec-tools.org

zonesinger - 網域簽署工具 rollerd - 自動 Key rollover 更換工具 rollctl - 控制 rollerd 前端工具 donuts - zone file check mapper - 網域繪圖工具 trustman - trust key 管理工具

113

Page 114: Dnsse cv9

PowerDNS DNSSEC http://wiki.powerdns.com/trac/wiki/PDNSSEC

Page 115: Dnsse cv9

Windows DNSSECWindows 2008 R2

Page 116: Dnsse cv9

DNSKEY 開啟命令提示字元 產生 DNSKEY

KSK DnsCmd /OfflineSign /GenKey /Alg rsasha1 /Flags KSK

/Length 2048 /Zone example.tw /SSCert /FriendlyName KSK-example.tw

ZSK DnsCmd /OfflineSign /GenKey /Alg rsasha1 /Length 1024

/Zone example.tw /SSCert /FriendlyName KSK-example.tw

Page 117: Dnsse cv9

Backup your DNSKEY 開啟命令提示字元,鍵入: mmc檔案 -> 新增或移除嵌入式管理單元

憑證 -> 新增 電腦帳戶 -> 本機電腦 -> 確定

左側 Tree MS-DNSSEC -> 憑證 點選憑證 -> 右鍵 -> 所有工作 -> 匯出

Page 118: Dnsse cv9

簽署網域 網域存放路徑

cd %windir%\System32\DNS匯出網域

dnscmd /zoneexport example.tw example.tw.org簽署網域

dnscmd /offlinesign /signzone /input example.tw.org /output example.tw.signed /zone example.tw /signkey /cert /friendlyname ksk-rsync.tw /signkey /cert /friendlyname zsk-rsync.tw

Page 119: Dnsse cv9

重新載入 Zone dnscmd /zonedelete example.tw /f dnscmd /zoneadd example.tw /primary /file

example.tw.signed /load

Page 120: Dnsse cv9

同時簽署多把 KEY 增加 Key但不簽署

dnscmd /offlinesign /signzone /input example.tw.org /output example.tw.signed /zone example.tw /signkey /cert /friendlyname ksk-rsync.tw /signkey /cert /friendlyname zsk-rsync.tw /addkey /cert /friendlyname key1 /addkey /cert /friendlyname key2

增加 key 並且簽署 dnscmd /offlinesign /signzone /input example.tw.org /output

example.tw.signed /zone example.tw /signkey /cert /friendlyname ksk-rsync.tw /signkey /cert /friendlyname zsk-rsync.tw /signkey /cert /friendlyname key1 /signkey /cert /friendlyname key2

Page 121: Dnsse cv9

Windows DNSSEC NSEC3 版本

Windows 2008 R2 不支援 NSEC3

因為其 DNSKEY 無法產生 NSEC3 的 DNSKEY 。

Page 122: Dnsse cv9

參考資料 RFC 1034, 1035

DNS RFC 4033, 4034, 4035

DNSSEC RFC 5155

NSEC3

Page 123: Dnsse cv9

Q & A