小村軟體有限公司
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. 先確定「是哪一層的 cache」再讀題目。
  2. 數值題不要在心裡跳過,把 TTL 與經過時間以秒為單位寫下來。
  3. 務必實際操作第 2 章的 bailiwick 模型、第 3 章的 entropy 模型、第 5 章的 DNSSEC 模型。
  4. 總復習結束後,只把尚未答對的題目再做一輪會更容易記住。

開始前的前提

  • 具備 DNS101 等級的基礎知識(遞迴查詢、權威伺服器、TTL)會比較容易入門。
  • 不需要艱深的密碼學理論。只在必要範圍內介紹 DNSSEC。

參考資料