DNS201
用圖解與練習理解 DNS 快取毒化
在 DNS101 掌握了名稱解析的基礎之後,很適合接著閱讀的 DNS 安全 follow-up 課程。本課程以「共用解析伺服器的 cache 殘留偽造回應時會發生什麼事」為主軸,依序整理 transaction ID、source port、bailiwick、TTL、DNSSEC。
防禦與觀測視角
共 42 題
瀏覽器內評分
localStorage 儲存
所需時間
3〜4 小時
題目數
共 42 題
形式
7 章 + 練習題 + 案例題
費用
免費
注意:本課程是以防禦與診斷為目的的知識課程。不會涉及對實際環境的攻擊手順或工具製作。
首先要記住的示意圖
| 登場角色 | 職責 |
|---|---|
| 使用者 / browser | 查詢名稱的一方。相信 resolver 回傳的答案。 |
| shared recursive resolver | 此處存放 cache。由多位使用者共用。 |
| authoritative servers | 保有各 zone 的正規資料。 |
若錯誤的 RRset 殘留在 shared recursive resolver 的 cache,使用該 resolver 的所有使用者都會收到相同的錯誤答案。
本課程的特色
1. 高層次的機制理解
不討論對實際環境的攻擊手順,而是聚焦在為什麼 shared cache 很危險、防禦方應該關注什麼。
2. 用模型感受 bailiwick / race
透過小型模型實際操作 in-bailiwick glue、out-of-bailiwick additional,以及 entropy 與嘗試次數的關係。
3. 不誤解 DNSSEC 的守備範圍
掌握在取得 origin authentication 與 integrity 的同時,confidentiality 是另一回事,而且 last hop 的 trust 問題仍然存在。
4. 最後以案例題收尾
以 8 題案例題整理 split-horizon、negative caching、NAT、AD bit 等在現場容易混淆的論點。
本課程反覆使用的 5 種觀點
1. 是哪一層的 cache
不要混淆 browser / OS / recursive resolver / authoritative。
2. 在什麼條件下會接受回應
question、ID、address、port 全都一致時,才會視為同一個 transaction。
3. 那份附加資訊能相信到哪裡
區分 glue、referral、final answer,並意識到 bailiwick。
4. 對成功機率有影響的是什麼
將 entropy 的寬度與 attempts 的次數分開思考。
5. DNSSEC 與維運的界線
把簽章能保護的部分,與 stub / recursive / channel 的 trust 問題分開思考。
章節構成
1 導入 — 什麼是 DNS 快取毒化
5 題。掌握共用解析伺服器記下偽造的 RRset 後,所有使用者都會看到相同錯誤答案的整體圖像。
2 快取與 bailiwick — 能相信到哪裡
5 題。區分 referral、glue、bailiwick,整理出哪些資訊可以放進 cache。
3 接受條件與競爭 — ID / port / TTL / time window
6 題。用 ID / source port / TTL 的數字掌握回應接受條件與 race window。
4 2008 年的教訓 — 並行查詢與短期對策
5 題。將 2008 年廣為人知的問題理解為高層次的攻擊構想與短期對策。
5 DNSSEC 與多層防禦 — 保護什麼、剩下什麼
6 題。掌握 DNSSEC 的守備範圍與 last-hop 的限制,組出多層防禦。
6 觀測與維運 — dig / 記錄檔 / 常見誤判
7 題。透過 dig、記錄檔、negative caching 分辨可疑行為與常見誤判。也涵蓋從記錄檔捕捉 poisoning 徵兆的模式。
7 總復習與案例研究
8 題。以案例題串起整體脈絡,整理 split-horizon / NAT / AD bit 等容易混淆的論點。
學習訣竅
- 先確定「是哪一層的 cache」再讀題目。
- 數值題不要在心裡跳過,把 TTL 與經過時間以秒為單位寫下來。
- 務必實際操作第 2 章的 bailiwick 模型、第 3 章的 entropy 模型、第 5 章的 DNSSEC 模型。
- 總復習結束後,只把尚未答對的題目再做一輪會更容易記住。
開始前的前提
- 具備 DNS101 等級的基礎知識(遞迴查詢、權威伺服器、TTL)會比較容易入門。
- 不需要艱深的密碼學理論。只在必要範圍內介紹 DNSSEC。
參考資料
- RFC 5452: Measures for Making DNS More Resilient against Forged Answers
- RFC 4033: DNS Security Introduction and Requirements
- RFC 2308: Negative Caching of DNS Queries
- RFC 4035: Protocol Modifications for the DNS Security Extensions
- Unbound documentation(glue / DNSSEC hardening 的實作範例)
- JVNVU#800113:多個 DNS 實作存在快取毒化漏洞