83c16511ede755fdd301415862f1ffd3.ppt
- Количество слайдов: 151
TWNIC 98年度 DNS 安全教育訓 練 TWNIC 技術組編撰 2008. 03. 23 1
TWNIC DNS 安全教育訓練 1. 2. 3. DNS基礎概念 DNS安全相關設定 DNS 相關應用
DNS基礎概念 3
網域名稱是什麼 ? l 網域名稱是企業或個人在網路上 的身份, l 如同 IP 一樣,都具有唯一的特性 l 網域名稱比 IP 好記 l 好記的網域名稱成為大家申請的對 象 l 字數少 /特殊意義單字 /諧音字 4
域名之分類 l 分類 : 在區分不同的屬性 l Top Level Domain (TLD) 頂級域名 l g. TLDs: l l l com/net/org/gov/edu/… 共 18類 http: //www. iana. org/gtld. htm cc. TLDs: l l l com. tw/org. tw/ 等 目前 tw 之第二層域名 l l l http: //www. iana. org/cctld-whois. htm Second Level Domain (第二層域名 ) l l tw/cn/jp/us 共 248 個 com. tw/net. tw/org. tw/edu. tw/gov. tw/mil. tw idv. tw/game. tw/club. tw/ebiz. tw TWNIC 於 2005/11/1 開放泛英 (xxx. tw) 申請 5
Internet 的歷史 (1) l 1960 年代 l 57 61 l 69 l l ARPA 觀念之提出及 IP 觀念之產生 分封交換關念之提出 Time Sharing 多 觀念之提出 ARPANet誕生 , 連接數個研究單位 1970 年代 l 70 71 -72 73 l 74 l 76 78 79 l l hosts 之使用 , 電子郵件出現 , 並使用 @ 代表 FTP 出現 /互連網觀念被提出 研究出乙太網路 (Ethernet) TCP 通訊協定出現 Telnet 出現 第一封經由網路傳送的 Email 出現 發明數據機 (modem) MUD 出現 Newsgroup 出現 (usenet) 6
Internet 的歷史 (2) l 1980 年代 l 80 l 81 l 82 l 83 l 84 l l 85 86 l 88 400台主機連接超過 10000 名使用者 DOS 出現並與 IBM 結合 Gateway(EGP) 觀念出現 IBM PC 問世 TCP/IP 標準確認 Internet 名詞出現 名稱伺服器出現 網域名稱制度提出 DNS 標準確立 Cisco/AOL 成立 Symbolics. com 為第一個網域名稱註冊者 NNTP(usenet) 標準確立 SGML 出現 (HTML 前身 ) PC Virus 出現 第一個 Internet Worm 出現 , 感染 5% 主機 CERT 成立 Eudora 出現 , 刺激了 Email 的發展 7
Internet 的歷史 (3) l 1990 l l l 91 92 l 93 l 94 l l 90 95 TANET 成立 撥接服務出現 WWW 觀念提出 Internet 開放商用化 中山大學成立台灣第一個 BBS站 WWW 服務問世 第一個瀏覽器 Mosaic 問世 , WWW 急遽發展 網域名稱伴隨 WWW 需求快速發展 Hinet 商用 Internet服務 網路銀行 /拍賣出現 Netscape 出現 , 結合 Email 功能 , Eudora 漸式微 Window 95 發表 Amazon/Yahoo/Ebay 成立 IP Phone(Vo. IP) 出現 Netscape vs. IE 之爭 Internet 至 1995 大柢上奠基現今發展的基礎 8
DNS 背景介紹 l DNS 的歷史 IP Network 的興起 , 網網互連 l 愈來愈多的主機 , hosts 檔的出現 l 主機名稱的衝突 l 資訊的一致性 l 資料的管理 l l 1984年 Paul Mockapetris 建立了第一個 DNS 的規範 (RFC 1034, RFC 1035) l 85 年隨即出現了第一個網域名稱 9
域名與 Internet相關服務之關係 l 名稱解析服務為 Internet 服務最基礎的一環 l l TWNIC 被列為國內 20最重要的資安單位 名稱解析提供機器名稱與 的機制 l l IP 位址雙向對映 WWW www. hinet. net <-> 168. 95. 1. 82 MAIL msa. hinet. net <-> 168. 95. 4. 211 網域名稱比 IP 容易記, 且具代表意義 l 使用網域名稱讓系統更具移值性,當 IP 變動, 只需更改 DNS 設定即可,程式網頁等不需更 改 l 10
DNS 運作模式 l l 名稱查詢之服務 分散式 l l l 穩定 l l l 負載平衡 : 可由 Master 主機自由的複製到 Slave 主機 備援 : 一個網域名稱可有多台主機共同服務 (輸流查詢 ) 樹狀結構 l l l 自己的資料由自己維護,而其他人的資料則分散在全球 沒有一台電腦會有全部的 DNS資料 全球最大的分散式資料庫系統 以樹狀結構的方式找到目的位址 (每個結點需要授權 ) http: //www. root-servers. org/ 目前 Root Server 分布情形 經由全球唯一的 Root Server 達到正確搜尋的目的 Root Server 共十三部,每一部可能都有許多 Mirror (如 f. rootservers. net 有二三十部 ) 效率 l l l 使用 UDP 封包 查詢速度基本上都在 100 msec 內 經由 Cache 來加快 DNS 的查詢 11
DNS 名稱表示法 Fully Qualified Domain Name (FQDN) WWW. EP. NET. 注意結尾的點 l 每一個名稱間以 . 隔開 l 一個 FQDN 可以對應到不同的位置或服務 l l 一個名稱對應到多個 IP 稱為 Round Robin 一個名稱對應到不同的服務如 MX 每個 FQDN 如同 IP 一般皆具有唯一性 其限制 l l l 最多 127 層 每個分支最長 63 字元 (a-z, 0 -9, -) 總長 255 字元 12
DNS 樹狀結構 Root tw cn com net gov … twnic www whois cdns Zone 1 host 1 biz arpa … in-addr ip 6 e 164 IPv 6 反解 211 IPv 4 反解 72 210 211 為網域名稱或機器名稱 為上一層與下一層的委任關係 註 DNS 的搜尋由上往下 13
運作原理 圖示 是否屬於自己的 DN ? 是則回應結果 是否有 Cache 資料 ? 是則回應結果 皆非則向 root “. ” 詢問---> 得到的 DNS 資料及主機資料都會 Cache 以備下一次資料被查詢時使用 詢問. tw 再哪 ? root 回應. tw 位址s 詢問 net. tw 再哪 ? . tw 回應 net. tw 位址 Recursive Non-Recusive www. twnic. net. tw 回 應 結 果 查 詢 詢問 twnic. net. tw 再哪 ? net. tw 回答 DNS 位置 詢問 www. twnic. net. tw 到底再哪 ? twnic. net. tw 回答 210. 17. 9. 228 14
運作原理 (1) l 當被詢問到有關本域名之內的主機名稱的 時候,DNS伺服器會直接做出回答 (此一答 案稱為權威回答 (Authoritative Answer),此 一主機稱為權威主機 ) l 如果所查詢的主機名稱屬於其它域名的話, 會檢查快取 (Cache),看看有沒有相關資料 l 如果沒有發現,則會轉向 root伺服器查詢, 然後 root伺服器會將該域名之授權 (authoritative)伺服器 (可能會超過一台 )的 地址告知 15
運作原理 (2) l 本地伺服器然後會向其中的一台伺服器查 詢,並將這些伺服器名單存到記憶體中, 以備將來之需 (省卻再向 root查詢的步驟 ) l 遠方伺服器回應查詢 l 將查詢結果回應給客戶,並同時將結果儲 存一個備份在自己的快取記憶裡面 l 如果 Cache資料的時間尚未過期之前再接 到相同的查詢,則以存放於快取記憶裡面 的資料來做回應 16
DNS 的平台 l UNIX l l l 常見為 ISC BIND 共約發行四五十個版本 ( 4. X~9. X) 最新版本 4. 9. 11, 8. 4. 7, 9. 3. 2 (2006/06/27) 建議使用 9. 2. 2 以上版本 穩定,可靠,最多人使用 Windows l l l 可見於 Windows Server 級的版本 簡單設定是其優點 GUI 設定 根據 BIND 4. x 修改而來 , 並持續更新 Bind 可於 Widnows 上運作 17
名稱伺服器類型 l 權威主機 (Authoritative) l l 可管理或回答其網域名稱之答案 Master 主機指 DNS 所管轄的資料是從檔案 ( Zone File) 中而來 (twnic. net. tw) Slave 主機指 DNS 所管轄的資料是以轄區傳送 (Zone Transfer) 從 Master 而來 (ns. twnic. tw) Cache-Only 主機 (168. 95. 1. 1) l 即沒有管理任何的網域名稱,接受查詢與回應 轄區傳送 並將其快取以備使用 slave Internet Zone File master 轄區傳送 slave 18
正解 /反解之意義與原理 l l 正解 (forward domain): 由機器名稱對應至 IP 反解 (reverse domain): 由 IP 對應至網域名稱 l l l 反解的 DNS Query 遠比正解高出許多 向 ISP 提出 IP 建立反解的需求 正反解一致有其必要性 l l l 雖然多數的系統不強求正反解一致性 , 但少數的公司 或學校對此仍有要求 由來源 IP 查反解名稱,依結果再查正解,並檢驗其 結果 有部分的 Mail Server也會使用正反解確認的機制來減 少 SPAM的問題 19
DNS設定介紹 l l l 用 BIND 還是用 Windows DNS ? BIND 版本差異 BIND 具程式 設定檔 named. conf 根伺服器介紹與設定 zone file基本設定 資源紀錄(SOA, , , NS A CNAME, , MX PTR…) 正解 /反解設定 主要( master) 次要( / slave)伺服器的關係容錯及負 載平衡功能 (Round Robin) named之參數說明及啟動與停止 WINDOWS DNS 設定介紹 使用 nslookup/dig 自我檢測 20
用 BIND 還是用 Windows DNS ? Windows BIND l. GUI的設定方式入門容易 l設定以文字編輯進行 Windows 其他服務結合 ( WINS/AD) l入門時, 文字 作較易出錯 效率 l查詢數字無非官方統計資料 l每秒可處理上萬次查詢 穩定性 l視 操作 l可用 安全性 l. Unix 環境為一般人所不熟悉 l. Multi-thread/SSL OS 表現 l基本上可符合一般企業需求 l穩定性佳 l隨系統版本更新而更新版本 l可從設定面加強安全性 l版本更新速度較快 l較能預防DNS 佔有率 其他 l在台灣兩者相當 Spoofing l在全世界佔大宗 l. Root 主 Server 皆以 BIND 為 21
設定檔 : named. conf l 路徑 l /etc/named. conf 或 /usr/local/etc/named. conf l BIND (named) 環境之主要設定檔 l 作用 定義 named 的功能項目 ( options ) l 定義 root server 位置 ( zone ) l 定義所管轄之網域名稱 ( zone ) l 定義反解 ( zone ) l 其他,如系統記錄 /存取控制列表等 … l 22
named. conf: options #/etc/named. conf options { directory "/var/named"; pid-file “/var/named. pid”; allow-transfer { 211. 72. 211. 71/32; 211. 72. 210/24; }; }; Directory zone file 檔案存放位置 (預設為 /etc) pid-file DNS 啟動時記錄行程代號 (PID)之檔案 allow-transfer 轄區傳送之設定,定義那些 IP 可與此部 DNS 做 AXFR (未定 義則全開,形同 DNS 資料外流 ) l 常犯錯誤 l options 忘了加 “s”,前後以 {} 括住 l 有關檔案或路徑名稱皆要加 “” 號 l 每一個描述 (statement) 的結尾需有 “; ” 號 l 有關 IP 等設定項目亦需加 ; 號 l pid-file 所指路徑的權限問題要注意 23
在 named. conf設定根伺服器 zone “. ” { type hint; file “named. cache”; }; l l l 所有的 DNS 伺服器皆需要知道根伺服器位罝 根伺服器為所有 DNS 查詢之起源 根伺服器列表可由 ftp: //ftp. internic. net/domain/named. cache 取得 hint 字面為暗示之意,即向 DNS 表示如果你沒有資 料,可以到根伺服器詢問 一部 DNS 僅能有一 hint type 幾年前的中美海灠斷線造成往 . 的線路不通 24
在 named. conf設定正解網域 zone “xxx. com. tw” { type master; file “xxx. com. tw. hosts”; allow-transfer { 168. 95. 1. 1; 168. 95. 192. 1; }; }; l l l 此一域名需上層授權 (com. tw) 後別人方可查得到 若您有多個網域名稱即添加類似設定即可 此例為 master 主機設定, slave 主機設定於後述 file 未定路徑即表參照 directory 參數 注意 ; 號問題 此處的 allow-transfer 僅對此網域有效,而 options 中的 allow-transfer 則對此部 DNS 有效 25
在 named. conf設定反解網域 zone “ 0. 0. 127. in-addr. apra” { type master; file “named. local”; }; zone “ 210. 72. 211. in-addr. arpa” { type master; file “ 211. 72. 210. rev”; }; l DNS 搜尋由後往前 (後序 ),故原 127. 0. 0. x 及 211. 72. 210. x 之 IP 要反寫 l in-addr 為 Internet Address 之意,用於 IPv 4 之反解, IPv 6 則使用 ip 6 l apra 為反解起源之 TLD, 其他諸如與 ”數字 ”有關之 解析多以 arpa 為 TLD 26
named. conf 完整內容範例 #/etc/named. conf options { directory "/var/named"; pid-file “/var/named. pid”; # only for slave or none, default is any allow-transfer { 211. 72. 211. 71/32; 211. 72. 210/24; }; }; zone “. ” { type hint; file “named. cache”; }; zone “xxx. com. tw” { type master; file “xxx. com. tw. hosts”; allow-transfer { 168. 95. 1. 1; 168. 95. 192. 1; }; }; zone “ 0. 0. 127. in-addr, apra” { type master; file “named. local”; }; zone “ 210. 72. 211. in-addr. arpa” { type master; file “ 211. 72. 210. rev”; }; 27
named. conf 回顧 l l l options/root server /正解 /反解 為基本設定 注意 Zone Transfer 問題 若欲為 Cache-Only 主機則可拿掉 正解 /反解 設定即可 (即保留 options/root/localhost) 語法及 ; {} “” 等問題需注意 (初學常犯 ) 可使用 具程式 named-checkconf, namedcheckzone 幫您做語法檢查 28
正解 : 什麼是資源記錄 l 資源記錄 (RR, Resource Record) l l l 名稱 (FQDN) 快取時間 (TTL, Time to Live) 網路類別 (class), 資料類型 (type) 答案 (rdata) TTL 是此一筆資料被別的 DNS Cache 的時間值 l IN 即是 Internet l 資料類型分許多種 l 下列為一筆資源紀錄的內容 l www. xxx. com. tw. FQDN TTL 3600 IN class A 10. 10. 2 type rdata 29
正解 : 資源記錄範例 xxx. com. tw. 38400 IN SOA ns 1. xxx. com. tw. abelyang. twnic. net. tw. ( 2001061501 ; Serial 43200 ; Refresh 12 hours 14400 ; Retry 4 hours 345600 ; Expire 4 days 7200 ; Negative cache 2 hours ) xxx. com. tw. 86400 IN NS ns 1. xxx. com. tw. 86400 IN NS ns 2. xxx. com. tw. ns 1. xxxcom. tw. 86400 IN A 211. 72. 211. 1 ns 2. xxx. com. tw. 86400 IN A 211. 72. 211. 2 ;以下略 l資源記錄的 TYPE 有許多不同類型 30
SOA RR 網域名稱,可用 @ 代替 SOA 記錄 Master 主機名稱 網域管理 Email,原 @ 用. 代替 xxx. com. tw 1 D IN SOA ns 1. xxx. com. tw. abelyang. twnic. net. tw. ( TTL = 一天 2001061501 ; serial 43200 ; refresh 14400 ; retry 345600 ; expire 172800 ; nagative cache ) SOA (Start Of Authority) 記錄用於 DNS自身 , 代表其為權 威主機 l SOA 提供此一 Zone 之基本資料及更新時間參數供 Slave DNS 更新使用 l 31
NS/A RR xxx. com. tw. ns 1. xxx. com. tw. ns 2. xxx. com. tw. l l l l l IN IN NS ns 1. xxx. com. tw. NS ns 2. xxx. com. tw. A 211. 72. 211. 1 A 211. 72. 211. 2 NS (Name Server) 用於 DNS 的搜尋 每個 Zone File 如 SOA 一般,皆要有 NS RR,且接於 SOA 之後 NS 記錄 之 RDATA ,若屬同一個 zone以內者需接一 A (Address) RR,以標明其 IP Address 您在 TWNIC 的指定內容 (DNS 模式 )需反應在這個 NS 記錄上 , 意即上下 層的 NS 記錄要一致 NS 記錄說明了那些主機管理此一網域名稱 (權威主機 ),需與上層 ( 如 TWNIC) 的指定一致 NS 記錄之 RDATA 需接一 FQDN 記錄,不可用 IP ,也不可接到一 CNAME 記錄 ( RFC 規範 ) NS 記錄的取用順序是隨機決定的,而非取用第一筆 A 記錄為指出某一 FQDN 其 IP 為何 NS 記錄對 DNS 解析影響極大 , 其作用如樹狀結構中之支幹 NS 記錄所指之 IP 不能是 Private/loopbak/multi-cast 等 IP 32
CNAME RR www. xxx. com. tw. 3600 IN A 211. 72. 211. 80 ftp. xxx. com. tw. 3600 IN CNAME www. xxx. com. tw. l CNAME 用於機器別名,如查詢 FTP ,則會查到 WWW 位址 l 建議使用 A 記錄來替 CNAME,以避免 NS/MX 等出現問題 l CNAME Chain 問題,雖沒有禁止使用,但會導致效率變差甚至 錯誤 l Yahoo/奇摩 /Google/Sina … 為什麼網站都用 CNAME ? 33
MX RR @ IN MX 10 mail @ IN MX 20 imap mail IN A 211. 72. 211. 25 imap IN A 211. 72. 211. 143 ; 此時不可用如 mail IN CNAME www 語法 l l MX (Mail e. Xchange) 記錄為 SMTP 服務所使用,其中 的 10, 20 表示郵件交換時的優先順序 (數字小者優 先) 亦可使用 A 記錄來代 MX使用 (即 DN=FQDN),但如 此僅能使用一部機器當 Mail Server @ IN A 211. 72. 211. 25 Hotmail/Yahoo 的 MX 有什麼玄機 ? 34
正解檔完整內容範例 xxx. com. tw. 86400 IN SOA ns 1. xxx. com. tw. root. xxx. com. tw. ( 2002021301 ; serial 1 D ; refresh 1 H ; retry 1 W ; expiry 2 D ; negative cache ) xxx. com. tw. 86400 IN NS ns 1. xxx. com. tw. 86400 IN NS ns 2. xxx. com. tw. Ns 1. xxx. com. tw. 86400 IN A 211. 72. 211. 1 Ns 2. xxx. com. tw. 86400 IN A 211. 72. 211. 2 www. xxx. com. tw. 86400 IN A 211. 72. 211. 80 ftp. xxx. com. tw. 86400 IN CNAME www. xxx. com. tw. 86400 IN MX 10 mail. xxx. com. tw. 86400 IN MX 20 imap. xxx. com. tw. mail. xxx. com. tw. 86400 IN A 211. 72. 211. 25 imap. xxx. com. tw. 86400 IN A 211. 72. 211. 143 wk 1. dept 1. xxx. com. tw. 86400 IN A 211. 72. 211. 101 wk 2. dept 1. xxx. com. tw. 86400 IN A 211. 72. 211. 102 l 從上述來看是不是又臭又長呢 ? 35
以 $TTL/$ORIGIN 來簡化設定 $TTL 86400 ; 預設 TTL 值,原來每筆 RR 之 TTL 值可以此值代替 $ORIGIN xxx. com. tw. ; 預設附加字尾如同該 zone 則可不寫 @ IN SOA ns 1 root ( 2002021301 ; serial 1 D ; refresh 1 H ; retry 1 W ; expiry 2 D ; negative cache ) IN NS ns 1 IN NS ns 2 IN MX 10 mail IN MX 20 imap ns 1 IN A 211. 72. 211. 1 ns 2 IN A 211. 72. 211. 2 www IN A 211. 72. 211. 80 ftp IN CNAME www mail IN A 211. 72. 211. 25 imap IN A 211. 72. 211. 143 $ORIGIN dept 1. xxx. com. tw. ws 1 38400 IN A 211. 72. 211. 111 ws 2 38400 IN A 211. 72. 211. 112 36
子網域的分割 ; 在 xxx. com. tw. 的 Zone File 內 $ORIGIN xxx. com. tw. IN NS ns 1 IN NS ns 2 ns 1 ns 2 $ORIGIN ns 1 ns 2 IN A 211. 72. 211. 1 IN A 211. 72. 211. 2 dept 1. xxx. com. tw. IN NS ns 1 IN NS ns 2 IN A 211. 72. 211. 101 IN A 211. 72. 211. 102 上述例子 dept 1 要自建一 Sub-domain,以管理自己部門之 DNS 資料,需以 NS 記錄再授權出去 l 原在上頁 Zone File 中的 ws 1/ws 2 等資料應從 xxx. com. tw. 中移 除,避免 DNS 混淆 l 於 ns 1. dept 1. xxx. com. tw 及 ns 2 上再建立 dept 1. xxx. com. tw. 的 Zone File,並做好 Master/Slave 之區分 l 可參考實例 l http: //phorum. study-area. org/viewtopic. php? t=17969&highlight=glue 37
Master/Slave 如何實現 ns 1. xxx. com. tw #/etc/named. conf #其他略 zone “xxx. com. tw” { type master; file “xxx. com. tw. hosts”; allow-transfer { 211. 72. 211. 2/32; }; }; ns 2. xxx. com. tw #/etc/named. conf #其他略 zone “xxx. com. tw” { type slave; masters { 211. 72. 211. 1; }; file “xxx. com. tw. hosts”; allow-transfer {none; }; }; l 一般而言 Slave 主機應不允許 zone transfer l Slave 主機啟動後即會和 Master 同步資料,而後資 料的同步即是參考 SOA 資訊 l Master 主機更改了資料請務必記得序號需加大, 否則即使時間到了 Slave 不會同步資料 38
Master/Slave 的同步問題 Zone transfer 只有一個方向,由 Slave 向 Master 發出 要求 l 如果 Master 更改了資料,以上述 Zone File 的範例而 言,最長要一天後 Slave 才會更新,顯然不夠即時 l l 解決方法 l l 降低 Refresh 之值:或可改善但仍會有時間差 使用 Bind 8. x/9. x 之 notify 功能 l 當 Master 重新啟動時,即會送出 notify 訊息至所有 Zone File 中的 NS RR,告知這些機器進行 AXFR l 這個功能在 Bind 9. x 中預設即巳啟動,若欲關閉 options { …. notify no; }; 39
反解 : 域名設定 Zone “ 210. 72. 211. in-addr. arpa” { type master; file “ 210. 72. 211. rev”; }; l l l 反解依然有 master/slave 主機之分,與正解同理 上例為一 Class C 反解,若為 Class B 則可寫成 72. 211. in-addr. arpa. 若不滿一個 Class C,設定方法較特別,請參考 http: //dns-learning. twnic. net. tw/DNS 94/ 40
反解 : Zone File 內容範例 $TTL 86400 $ORIGIN 211. 72. 211. in-addr. apra. IN SOA ns 1. xxx. com. tw. Root. xxx. com. tw. ( 20030421; 86400; 3600; 864000; 2 D; ) IN NS ns 1. xxx. com. tw. IN NS ns 2. xxx. com. tw. 1 IN PTR ns 1. xxx. com. tw. 2 IN PTR ns 2. xxx. com. tw. 3 IN PTR pc 3. xxx. com. tw. ; 以下類推 …. . l l l 反解之 Zone File 內容與正解類似 反解之 TYPE 為 PTR ( Pointer),指出這個 IP 對應什麼名稱 建議正反解最好一致 41
反解 : 利用 $GENERATE 變數簡 化 ; 前 SOA 及 NS RR 略 1 IN PTR pc 1. xxx. com. tw. 2 IN PTR pc 2. xxx. com. tw. 3 IN PTR pc 3. xxx. com. tw. … 31 IN PTR pc 31. xxx. com. tw. l 上述例子可以 BIND 9. X 之 $GENERATE 功 能表示為 : $GENERATE 1 -31 $ PTR pc$. xxx. com. tw. ; $ 即表 1 -31,將會自動展開成 31 行的 PTR ; BIND 9. X 省略 IN (Class) 不寫 l $GENERATE 亦可用於正解部分,語法相同 42
負載平衡功能 (Round Robin) www pc 1 pc 2 IN A 211. 72. 211. 80 IN A 211. 72. 211. 81 如上資料,一個 FQDN 有兩個以上之 IP 位址是允許 的 l 回答的答案基本上是循環的,不過在 BIND 9. X 中是 以有些回答的依據設定 (rrset),不過一般是較少用 到 l DNS 僅做名稱之負載平衡,如 www/mail 或他類型 的服務之負載平衡要取決其他技術 (ex: Level 4 43 switch) l
named 之及啟動與停止 l 基本上只要執行 named 即可啟動 DNS $>named 或 named –u named (#視安裝方法而定 ) $>/etc/rc. d/init. d/named start named 啟動狀況會寫到 syslog (/var/log/messages) 中,只要查看 log 檔即知 啟動狀況 l 為了方便了解其執行狀況,可以讓 named 於 前景執行 l 要停止 named ,可直接 kill 掉其行程即可 $>killall -9 named 或 l $>kill -9 pid-file 或 $>/etc/rc. d/init. d/named stop 44
Windows DNS:設定 以下範例僅以 Windows 2000 Advance Server 為例 l Windows DNS 位於 控制台 ->服務 ->系統管理 具 ->DNS l 此二項目作用相同,在於設定 DN 之 Master/Slave 及正反解檔 即 SOA 中的 Expire 時間 即以手動方式清除過期(TTL 時間巳到)之 RR 所有的 Slave 設定做 AXFR 動作 清除所有快取資料而不論其 TTL是否巳到 45
Windows DNS: Master/Slave 及 正解 /反解 p標準主要區域: Master p標準次要區域: Slave p正向對應:正解 p反向對應:反解 46
Windows DNS: 新增一個標準主要區域 -正解 將設定寫回檔案 將 Zone File 重新載入到視窗 即 A RR,可一併建立 PTR 資料 CNAME MX DN 下再加一層,如 dept 1 (同一 Zone) 即 NS,建立 Subdomain 再授權出去 其他不常用 即反解,如您巳了解 Windows DNS 的正解的設 功能,這個項目應可迎刃而解 此處非常重要而常為人所忘…. . 見下頁 47
Windows DNS: 網域的 ”內容 ”項目 這一個畫面是一般的 Windows DNS 管理者常常忽略之處 一般:項目中有一 “是否允許動 態更新”,主要為 Windows 的 特定需求而設 SOA: 這個畫面之值多要改,依 據 RFC 1912 多不有不符合之處 名稱伺服器:需在此加上自身 的名稱及 IP 及 Slave 主機資料 區域轉送:即 Zone Transfer, 預設為全開,建議選擇第二項, 僅允許您其他的 NS ,並勾選 通知(Notify)功能 48
檢測 具 : nslookup/dig l nslookup UNIX 及 Windows 平台皆有 l 可使用命令模式與交談模式 l 較好用但資訊較簡略 l l dig 僅有命令模式 l 較不好用但資訊完整 l 49
檢測及追蹤方式介紹 $TTL 86400 @ IN SOA ns 1 root ( 2002021301 ; serial 1 D ; refresh 1 H ; retry 1 W ; expiry 2 D ; min ttl ) $ORIGIN xxx. com. tw. IN NS ns 1 IN NS ns 2 IN MX 10 mail IN MX 20 imap Ns 1 IN A 211. 72. 211. 1 Ns 2 IN A 211. 72. 211. 2 www IN A 211. 72. 211. 80 www IN A 211. 72. 211. 81 ftp IN CNAME www Mail IN A 211. 72. 211. 25 Imap IN A 211. 72. 211. 143 50
以 nslookup追蹤 (1) [root@pc 071 named]# nslookup Default Server: ns 1. xxx. com. tw Address: 211. 72. 211. 1 啟動 nslookup 交談模式 連線至 nameserver > set q=soa > xxx. com. tw. Server: pc 071. twnic. net. tw Address: 211. 72. 211. 71 設定查詢類別為 SOA 資訊 查 xxx. com. tw origin = ns 1. xxx. com. tw mail addr = root. xxx. com. tw serial = 2002021301 refresh = 86400 (1 D) retry = 3600 (1 H) expire = 604800 (1 W) minimum ttl = 172800 (2 D) 如 Zone 所列之內容 (SOA 訊息 ) 51
以 nslookup追蹤 (2) ; 續前頁 xxx. com. tw nameserver = ns 1. xxx. com. tw nameserver = ns 2. xxx. com. tw ns 1. xxx. com. tw internet address = 211. 72. 211. 1 ns 2. xxx. com. tw internet address = 211. 72. 211. 2 q set q=soa 之功能,除 SOA 外,您尚可設定其他 TYPE (如 NS, MX, A, CNAME, PTR …等不同記錄 ),以查到您想要 的資訊 q 命令模式 (等同與上例 ) nslookup –q=soa xxx. com. tw. 52
以 nslookup追蹤 (3) [root@pc 071 named]# nslookup Default Server: ns 1. xxx. com. tw Address: 211. 72. 211. 1 > server dns. hinet. net Default Server: dns. hinet. net Address: 168. 95. 1. 1 > set q=ns > hinet. net Server: dns. hinet. net Address: 168. 95. 1. 1 ; 以下結果略 >ls –d hinet. net [dns. hinet. net] *** Can't list domain hinet. : Unspecified error >server ns 1. xxx. com. tw. >ls –d xxx. com. tw. ; 以下會列出 xxx. com. tw. 的 Zone File 內容 以 dns. hinet. net 做為 DNS Server 設定查詢 NS 記錄 對 dns. hinet. net 要求 ls (list) – d(domain) 資料 (即 AXFR),結果當 然被拒 ls –d 之指令不適用於 BIND 9 環境 (省略部份訊息 ),切回 ns 1 並做 AXFR, 若允許 Client IP 做 AXFR 則會列出 Zone File 內容 53
以 nslookup追蹤 (4) >set q=a >www. xxx. com. tw. Server: ns 1. xxx. com. tw Address: 211. 72. 211. 1 Name: www. xxx. com. tw Addresses: 211. 72. 211. 80, 211. 72. 211. 81 >www. msn. com. Server: ns 1. xxx. com. tw Address: 211. 72. 211. 1 Non-authoritative answer: Name: www. msn. com Addresses: 207. 68. 171. 245, 207. 68. 171. 247, 207. 68. 172. 234, 207. 68. 173. 244, 207. 68. 173. 254, 207. 68. 171. 244 查詢 www. xxx. com. tw. 資訊,列出兩 個 IP,即是此記錄做 Round Robin, 再查一次可能是相同順序,亦可能 81 會排到前面,如果您在看此網站,有 時可能會連到 80,但有時又會連到 81,即可達到負載平衡之效果 查詢外面的網域名稱可以查的到, 代 表 root server的設定正常 Non-authoritative answer 表示為非權威資 料,意即是 Cache 而來 54
以 dig追蹤 (1) [root@pc 071 named]# dig @211. 72. 211. 1 xxx. com. tw ns ; <<>> Di. G 8. 3 <<>> @211. 72. 211. 1 xxx. com. tw ns ; (1 server found) ; ; res options: init recurs defnam dnsrch ; ; got answer: ; ; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6 ; ; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2 ; ; QUERY SECTION: ; ; xxx. com. tw, type = NS, class = IN ; ; ANSWER SECTION: xxx. com. tw. 1 D IN NS ns 2. xxx. com. tw. 1 D IN NS ns 1. xxx. com. tw. ; ; ADDITIONAL SECTION: ns 2. xxx. com. tw. 1 D IN A 211. 72. 211. 2 ns 1. xxx. com. tw. 1 D IN A 211. 72. 211. 1 55
以 dig追蹤 (2) l 命令格式為 dig @dns_server domain type 由上頁可看出 dig 較 nslookup 複雜許多 l 其列出許多 DNS 封包的欄位資訊,可參考 RFC 1034/1035 或 Oreilly “DNS & BIND” 一書 之介紹 l DNS封包格式 l Query Identifier(16) QR OPCodes Flags QDCount(16 ) RCodes ANCount(16) NSCount(16) Reserved ARCount(16) Question Section(32) Answer Section(32) Authority Section(32) Additional Records Section(32) 56
DNS Running ? l 如何確定 DNS 是否運行呢 ? l l l Port Scan 目標 53/UDP (敏感動作 ) telnet 53 port nslookup –q=ns. Dns_server (查詢其 Root 記錄 ) dig @dns_server. Ns DNS 不正常原因 : l l l l 語法錯誤造成 DNS 未啟動 觀念錯誤造成運作不正常 網路是否正常 (流量,斷線 …) 是否被 Router/Firewall 等檔掉了 53 port 被入侵或欺騙 判別密碼被猜出或離職員 惡意或其他非故意而被人為的 改變了 DNS 的指向 是不是 TWNIC 的關係造成解析上的問題 版本差異與認知上之問題 57
DNS安全相關設定 58
DNS 各種問題之探討與觀念介 紹 l TTL 設定對網路的影響 l 兩部以上 DNS 之作用 l Resolver query 的行為探討 l DNS 不安全之後果 l BIND 8/BIND 9 的差異性 l Lame Server l 為什麼 SERVFAIL l 中國大陸對 DNS 做了什麼 59
TTL 設定對網路的影響 l l l TTL Time To Live, 他人 DNS 快取了你的域名的某筆資料時,將在他 的機器上暫存多久讓他人於查詢同一筆資料時可快速回應 (這個值 是由自己指定 ) 當 TTL 為 0 時,表示 RR 不為他部 DNS 主機所快取,不過就實際層面 而言較少人會如此設定 當要更改 DNS 內容或公司網路變動時,預先縮小 TTL 值是必要的, 可以縮短整體網路的更新時間 DNS 預設每小時檢查一次所有快取資料是否過期 下圖為 www. twnic. net. tw 一個月之查詢量在不同 TTL 值上的變化, 我們可以看出,只要設定了 TTL 值,即會減輕 DNS 查詢對網路的負 載 60
兩部以上 DNS 之作用 根據 Inter. NIC 的規定,NIC 之 DNS 指定應兩 部以上 l 兩部 NS 之意義在於 l l 容錯 只有一部 DNS 失效時,眾多網路服務也跟著失效,且正 確的兩部以上主機更應處在不同的網段以降低風險 l 系統安全 二部以上的 DNS 主機能互相支援,亦爭取了足夠的處理 時間,也有效的降低網路安全的風險 l 負載平衡 若您設定了兩部以上的 DNS 主機,當有人連接您的網站 前,其查詢乃是兩台主機輪流運作 (輪詢,Round-Robin). 在這樣的運作機制下讓您的系統可以更穩定 61
Resolver query 的行為探討 l l l DNS 預設查詢逾時為 5 秒 預設每次逾時時間加倍,嘗試3次 (5, 10, 20) 依據 /etc/resolv. conf 中設定的 nameserver 數量 (最多不可以超過3,系 統巳定義 ) l l l 一台 nameserver, timeout 總長為 5+10+20=35 秒 二台 nameserver, timeout 總長為 5*2+(10/2)*2+(20/2)*2=40秒 三台 nameserver, timeout 總長為 5*3+(10/3)*3+(20/3)*3=42秒 上述除數僅取整數 , Ex: 10/3*3=9 Nameserver 選擇以 n 1, n 2, n 3 為序,皆逾時後以新 timeout 時間再進行一次 調整 timeout 與 retry 於 /etc/resolv. conf 設定 l l time out 為 應用程式可以改變上述之總總行為 Default Domain/Search 作用 l l Options timeout: 3 attempts: 2 意即只試二次,每個3秒,以上述例子看一台,二台,三台分別最大 9, 12, 15 秒 所查詢的名稱不含點 (. ) 時會啟用 resolver 的 domain/search 功能,有的作 業系統會查不到時就加 (windows),有的作業系統會一開始時加 (Sun) 主要 在於不同的 OS 預設稍有不同 如果域名為 tw. com. tw 或 tw. net. tw 會造成過多的問題 , 若其又使用 wildcard (*) 更會影響網域名稱的正常使用 62
DNS 不安全之後果 (1) l 為何會不安全 l l 被入侵 : 可能從別的服務程式或直接從 DNS 入侵 被欺騙 : 被造假的 DNS 訊息欺騙 若使用 BIND 建議您昇級至 9. 2. 3 以後之版本 可能的後果 DNS 失常 這是最常見的情況,使用者會感覺到 DNS 失去作用. 此時 除了重新啟動,還需去了解為什麼 DNS 會失效. l 假造網頁 原來的 www 位於 211. 72. 211. 80,但被改到 1. 2. 3. 4,而其又 mirror 您的網頁,此時很容易套出您使用者的身份與密碼, 而又不易被察覺 (因為使用者輸入的是 www. xxx. com. tw )( 即一般俗稱 man in the middle 手法 ) l 63
DNS 不安全之後果 (2) l 可能的後果 複製郵件 所有的信件到達你的服務器之前可以被拷貝,修改或者刪除. 入侵 者只要了解郵件伺服器與 DNS 的運作原理輕易即可達成此一目 的,而其也可以偽造成您的信件寄出,這些都是可以透過 DNS 完成,而您不會感覺到很明顯的異常. 其手法同上一段所述 l 授權問題 某些與信任有關服務 (如 mail, firewall, proxy等等 ) 若涉及 DNS域 名信任時將會無效. 如您的防火牆信任 any. com. tw 網域可自由通 過,在 DNS 被入侵後防火牆將完全失效. 因為入侵者可在您的 DNS 中潻加他機器為 any. com. tw 網域機器的資訊 l 系統權限 當駭客從 DNS 入侵後 (指遠端溢位攻擊, remote buffer overflow ) , 通常亦直接取得 DNS 權限 l 64
BIND 8/BIND 9 的差異性 l BIND 9 只相信權威主機的資料 l (aa=1) 有人在 twnic 指定設定 DNS 模式,主機分 別為 www/mail 但實際未在該 IP架設 DNS Server 使用 BIND 9 信件將寄不到 l 使用 BIND 8,因 BIND 8 只要有資料就會相信, 所以信件仍可寄達 l 168. 95. 1. 1 最多人用,而其使用 BIND 8,所以造 成許多人誤解用 hinet 就可以,別家有的就不 能寄 l 65
Lame Server l Lame Server 成因 l DNS 並無管理該網域名稱 (即非權威主機 ),卻將 DNS 的 NS 記錄指向了該部 DNS l l DNS 管理該網域名稱 , 但是 NS 記錄列表裏並沒有 該 DNS 的名稱或不一致 l l 很多人將在 TWNIC 的 DNS 指定 , 設向了 168. 95. 1. 1 或其 他僅提供大眾查詢與解析網域名稱之 DNS 主機( Cache Server) , 但是此類主機並無管理該網域名稱 domain. com. tw 在 TWNIC 的 DNS 指定為 ns 1 及 ns 2 , 但自 己的 DNS 卻將 NS設為 ns 3/ns 4 等,或與上層不一致之 主機名稱。 避免 LAME Server 最大的要求即在上層與下 層的 DNS 設定完全一致 , 並且所有的 DNS 主 機都能正常 作,如此方是一個上下層完整 的授權關係 66
為什麼 SERVFAIL l SERVFAIL 意即 Server Fail ,主要的成因為 : l l l 在查詢端接收到超過 64 K 的 DNS TCP 回應時,將判定為 Server Fail (DNS 使用基本的 udp 53 port 只能回應 512 bytes, TCP 最高可至 64 K) 該 DNS 主機可接受遞迴查詢 , 但是又沒有 Root dns (. ) 的設定 , 造成 遞迴查詢上的失敗時 , 也會產生 Server Fail 之情形。 名稱伺服器雖有設立該網域名稱 , 但是載入或狀態不正確 (SOA/NS 必需正確 ): l l l Zone 過期 , 主要因為 slave 主機到達了 expire 時間仍未更新所造成。 Zone 載入時發生錯誤 , 主要因為 Zone File 有語法或語意上的錯誤 , 造成 該網網域名稱稱實際上並未載入 DNS 中。 網域的 NS 記錄的不可以接 CNAME 記錄,否則亦會造成 Server Fail。 Zone 錯誤 , 不正確的 SOA 或 NS 資訊 , 也會造成 Server Fail。 名稱伺服器所設立的 CLASS(IN, CH, HS) 與查詢之 CLASS 不相符。 當 Server Fail 發生時,通常為設定上之問題,主要好發於第3 點所描述狀況 (其他情況亦有可能但較不常見 ),若您有此情形, 請檢查您的 DNS 啟動記錄中所發生的錯誤訊息,適當修正後 即可避免此一情形。 67
中國大陸對 DNS 做了什麼 l 管制言論,中國 Internet 進 /出口的內容上進行了過濾 l 寄 /收信常會 timeout, 一段時間連不上 有些網站連不到 Search 後得到一個特定頁或無結果回應 在某些網頁跑出警語 重點期間 (開會 /十一國慶 ) 狀況會較嚴重 l Ex: Internet Freedom l l 往外查詢 DNS時,對於特定 Query 內容進行阻檔,回應假的 IP 或說找不到 l 直接檔掉國外一些 DNS Server 或 Domain Name l DNS 查詢從外往內連時,也會經過過濾處理 發生任何你在他國都不會發生,只在大陸發生的狀況都不足 為奇 l 使用 VPN 方式是最佳解法,專線雖貴但至少有一定保障,也可 以找像 Frees/WAN (net to net) 或 pptpd 之類的進行連線時的加 密,只要經過出口時資料是加密的就檔不到 l l l DNS Query 往台灣或其他國外送 68
DNS安全相關設定 (1) l 如何建講一個安全的 DNS Server l DNS Server 要更新 l l 兩部以上的 DNS Server 並實體適當分離 l l l http: //www. isc. org/sw/bind-security. php 8. 4. 3/9. 2. 2 以後版本目前是 ”安全 ”的 Windows 平台基本上隨 hot fix 或 Service Pack 而更新 容錯考量 避免線路或實體上造成解析問題 區分可 Recursive 對象 l l l 架設兩部以上外的可供內部使用的 resolver 主機 或使用 BIND view 的架構,區分內外網查詢處理的差別 內網可 Recursive 查詢,外網則禁止以避免欺騙問題 69
DNS安全相關設定 (2) l 區分內外網可 recursive 對象 , 善用 bind 9 的 view (服務位於內網, NAT port mapping) acl “Lan” {192. 168/24; 127. 0. 0. 1; }; acl “public” { !Lan; }; options { directory “/var/named”; allow-transfer {none; }; }; view “intranet” { match-clients {Lan; }; recursion yes; zone ". " { type hint; file "named. root"; }; zone “xxx. com. tw" { type master; file “xxx-intranet. com. tw"; }; }; view “internet” { match-clients {!Lan; }; recursion no; zone ". " { type hint; file "named. root"; }; zone “xxx. com. tw" { type master; file “xxx-internet. com. tw"; }; }; 70
DNS安全相關設定 (3) l 如何建講一個安全的 DNS Server 以 firewall 適當過濾不相關之協議或服務 請求 l 限制轄區傳送 (default any) l 限制動態更新 (default none),若一定要開 需注意 Access Control l 以非 root 啟動 named l chroot/SElinux 視能力及狀況使用 l 71
存取控制 (1) acl=Access Control List , 通常 ACL 宣告 要放在 named. conf 的最前面,以免發 生未宣告之類的錯誤 l 除了用 firewall 之外,BIND 也可以對 許多 DNS 行為做管控 l acl “acl_name” 可接 l l IP/netmask (or CIDR), none , any 72
存取控制 (2) l 先宣告後使用 acl “internal” { #同時間 recursive 最大數量 recursive-clients integer; 1, 2, 3, 4; # 可不可以接受 recursive, 單純的 yes (default) or no 5. 6. 7. 0/24; recursion yes_or_no; 9. 10. 11. 12/255. 252; # 設定最大的 Cache 時間,避免特長的 cache 出現 13. 14/15; max-cache-ttl integer; }; # 允許 recursive 來源 IP, 這些 IP 外就是不允許 或負面表列 allow-recursion {address_match_element; …}; Acl “external”{!internal; }; # 允許查詢的 IP 段,設在 options 中代表全部有效 allow-query { address_match_element; . . . }; # 同上用意,用於 update allow-update { address_match_element; . . . }; http: //www. dnsreport. com 檢測您的 DNS, 建議您修正所有紅字,尤其 open server 該項,這是避免 Spoof 重要的問題 # 同上用意,用於 Zone transfer allow-transfer { address_match_element; . . . }; # Client IP 符合條件..用於 view match-clients { address_match_element; . . . }; 73
存取控制 ( 3) l 只允許特定來源遞迴查詢 acl internal { 192. 168. 4. 0/24; }; options { allow-recursion { internal; }; use-id-pool yes; # 其他設定 }; zone ". " { type hint; file "named. root"; }; zone “xxx. com. tw" { type master; file “xxx-internet. com. tw"; }; 74
負載平衡 - NS l 多個 NS 用意即在負載平衡及容錯考量 l NS 間以 Zone transfer 達到資料同步作 用 l NS 的選擇是基本上是循環的 com. tw. 3600 3600 IN IN IN NS NS NS ns 2. cuhk. edu. hk. a. twnic. net. tw. b. twnic. net. tw. c. twnic. net. tw. d. twnic. net. tw. e. twnic. net. tw. 75
負載平衡 - NS l 實例中的 SLD 查詢流量 (2007/03/03) l l l 基本上每台主機的負載是均等的 , 但易受到外部頻寬限制影響 , 故 有臨時性的波動 DNS 流量 (如左圖週六時間 )常有臨時性的大量查詢 , 但時間不長 下右圖新增兩部 SLD 主機後可看出流量再次被平均分配了 SLD DNS 新增兩部主機 76
負載平衡 - A 多個 A 記錄常用於 Web 的分流使用 l Web 的資料同步不是 DNS 管的 l A 記錄回應可用 view 來控制結果 l l l Hinet User 訪問到 Hinet 線路上的 User 其他 User 訪問到固定某一台 Server 內網訪問到內部的,外網訪問到外部的 中國大陸網通和中國電信間存在嚴重的 peering 問題,所以需要南方訪問到南方,北對北 l l 台灣較無此問題 , 故跨 ISP 間的訪問對 User 而言並無障礙 使用 view 需要有足夠的 IP 分布資料,可以在 apnic 的 ftp 上找到 (ftp. apnic. net) 77
負載平衡 – A + CNAME l 著名的公司 l www. akamai. com 以 DNS View + 反向代理技術聞名 [root@twnic rrd]# dig www. yahoo. com +short www. yahoo. akadns. net. 66. 94. 230. 32 66. 94. 230. 34 66. 94. 230. 39 66. 94. 230. 40 66. 94. 230. 41 66. 94. 230. 42 66. 94. 230. 43 66. 94. 230. 75 # 以上為向 twnic. net. tw 查詢之結果 [root@twnic rrd]# dig www. yahoo. com @202. 101. 103. 55 +short www. yahoo. akadns. net. 68. 142. 197. 66 68. 142. 197. 75 68. 142. 197. 76 68. 142. 197. 77 68. 142. 197. 84 68. 142. 197. 85 68. 142. 197. 90 68. 142. 197. 64 # 以上為向厦门 查詢所得之結果 78
負載平衡 – A + CNAME Cache 廠商宣稱離使用者最近的 Server 是不 可能的,只是在 DNS Query 時,給予距離使 用者 DNS 最近的答案 l Cache 業者的 A 記錄時間皆很短,以避免 DNS Cache 過久,影響其更新速度 (記錄改變的速 度) l 反向代理與一般代理的差別在於反向代理 是把網站 A 記錄指到 Proxy 上 (不是設在 Broswer) l Proxy 必需知道後台真正的 Web 在哪裏,所 以可能另有一個對照表 l l IP www. yahoo. com (可能是 private dns 或 hosts ) 79
負載平衡 – A + CNAME l Google 自有一套算法,但取最近的 Web Site 仍是以 view 中的答案為主 l SINA/百度. . 都是 A+CNAME View+反向 代理 有時 CNAME 會超過一次 l CNAME 用意在於把一筆記錄交給 業者管理,由業者給出 A 記錄 l Caching 80
負載平衡 - MX l 多 MX 用意本在當 best MX 無法傳送時, 將信件傳送到次之的 MX 等待 best MX 復原後 relay 信件回到 best MX l SMTP 傳送信件時,先 Query MX 若無則 改 Query A l 部份 antispam 方案要求必要有 MX 否則信 件無法傳遞是較不符合 RFC 規定的 l 若多個 MX 下又多個 A,查詢原則是先 選 MX 再選 MX 內的某一個 A 記錄 81
負載平衡 - MX SMTP 在使用 MX 時,相同的優先權只使用一次 l 若有多筆 A 記錄亦使用一次,所以 l l l Yahoo: 信件在 mx 1~mx 3 (各有 4, 4, 7 個 IP)間循環 , 信件送到 mx 1~mx 3 的機 率是相同的,但 mx 3 有 7 部 , 故每一部實收信件量會較低 Yahoo: 信件在 mx 1~mx 3 只要一連接失敗 , 發信端 SMTP Server 改送 mx 4, 由 mx 4 再 relay 回 mx 1~mx 3 間任一部 , 如果 mx 4 再失敗則 queue 在發信端 Hotmail: MX 優先權皆相同 , 皆為 4 IP, 所以送到任一部機會是相等的 Hotmail: 信件不能傳送時 , 會留在發信端的 Server 上 , 因為其沒有次之的 MX yahoo. com mx (註 : 此二列表常改變 , 可能與您目前查詢到的略有不同 1 mx 1. mail 4. 79. 181. 15 67. 28. 113. 71 67. 28. 113. 73 1 mx 2. mail 4. 79. 181. 135 4. 79. 181. 136 67. 28. 113. 70 1 mx 3. mail 67. 28. 113. 10 67. 28. 113. 11 67. 28. 113. 19 4. 79. 181. 134 64. 156. 215. 18 5 mx 4. mail 66. 218. 86. 156 66. 218. 86. 254 64. 156. 215. 8 hotmail. com mx 5 mx 3 65. 54. 245. 72 64. 4. 50. 179 5 mx 4 65. 54. 244. 232 65. 54. 245. 104 5 mx 1 65. 54. 244. 8 65. 54. 244. 136 5 mx 2 65. 54. 245. 40 65. 54. 190. 50 65. 54. 244. 72 65. 54. 190. 179 65. 54. 245. 8 65. 54. 244. 40 ) 4. 79. 181. 14 67. 28. 113. 72 4. 79. 181. 12 65. 54. 244. 200 65. 54. 244. 104 64. 4. 50 65. 54. 244. 168 82
負載平衡 - MX MX 的優先權代表信件的投送順序 , 有時會為 spam/virus filter 所使用,真實的收件是次之的 MX l 有些 spam 會直接寄往次之的 MX,此時將真正的信 箱主機放在 filter 之後並僅接受 filter 的來信會較好 ( 若不考慮成本問題 ) l MX 10, filter MX 20, backup 非在表列的 MX 內,而是MX 10 將 filter 後的結果後送的 主機,其需僅接受來自 MX 10 對 smtp 的連接 83
DNS系統記錄解讀 l l ns_forw: query(mail. vinwell. com. tw) All possible A RR's lame 說明這個網域名稱可能有 Lame Server 狀況,也有可能是查詢人之 Resolver 之 default-domain 之功能所引起的 l l /etc/named. conf: 53: syntax error near '}' 語法錯誤,通常是少了 ; 號或忘了 {} 號,可使用 named-checkconf 檢查看看 l l unrelated additional info 'Manager. aluba. com. tw' type A from [203. 149. 224. 202]. 53 說明從 203. 149. 224. 202 送來了和他無關的資料,通常發生的原因可能是該部 DNS 的一些域名設定有誤,但也有可能是 DNS 欺騙的一種狀況 l l bad referral (in-addr. arpa !<88. 216. 1. in-addr. arpa) from [168. 95. 192. 14]. 53 Bad Referral 狀況,可以從訊息中看到 168. 95. 192. 14 (HINET)的反解設為 ”inaddr. arpa. ”,可能原因是其 IP 太多,故如此偷懶,這樣的設定會造成此人往後 的一段時間內 ($TTL) 查詢任何反解資料時都會到此 IP 查 l ns_forw: query(BBS. NNUT. EDU. TW 00. nhu. edu. tw) forwarding loop (dns. nhu. edu. tw: 203. 72. 0. 3) learnt (A=140. 111. 1. 2: NS=140. 111. 1. 2) 查詢 bbs. nnut. edu. tw. 時發現有迴圈狀況,通常是 CNAME 所造成的,同時並記 住管理 nhu. edu. tw. 的上層主機為 140. 111. 1. 2 (也就是這一次是使用這一部 ) l 84
DNS系統記錄解讀 l l Response from unexpected source ([168. 95. 1. 24]. 53) for query "_ldap. _tcp. tmt. gtmt. com. tw IN SOA" 查詢 _ldap 主機時,意外的從 168 的主機回應答案 , 其主要原因是 HINET 使用 Layer 4 Switch,故回應的 IP 可能不固定所致,但亦有可能是 DNS Spoofing l l Cleaned cache of 1083 Rrsets 這是 named 清楚 Cache 的 log,表示有 1083 筆 TTL 時間到了 l l rcvd NOTIFY(tw, IN, SOA) from [140. 111. 1. 2]. 45599 從 140. 111. 1. 2 將到一個轄區變更的通知 (notify) l l Sent NOTIFY for "tw IN SOA 2001021959" (tw); 4 NS, 4 A 同上,但是送出,可見送出時所帶參數, 2001 為序號 l l sysquery: findns error (SERVFAIL) on pc 071. twnic. net. tw? 這一部 DNS 發生錯誤造成 伺服器失敗 , 通常的原因是 SOA, NS 或是 Zone file 載入時有錯所造成 l l sysquery: query(mail. digi-age. com. tw) NS points to CNAME (lnx 5. net-chinese. com. tw: ) learnt (CNAME=168. 95. 192. 3: NS=140. 111. 1. 2) 查詢 mail. digi 時,發現它的 NS RR 接的是一個 CNAME RR,這樣的 NS 是不被承認的 l l db_load could not open: /var/named/hosts: No such file or directory zone 的設定中指定的 file 位置找不到檔案 l l send AXFR query 0 to 168. 95. 192. 9 這部機器向 168. 95. 192. 9 作一 AXFR 請求,這個請求送的序號為 0 (這是因為手動使用 named-xfer 所產生 的訊息 ) 85
DNS系統記錄解讀 l l slave zone "tw" (IN) loaded (serial 2001021959) 這部機器完成了 ”tw” 的 AXFR 請求,並將其載入 l l check_hints: no A records for E. ROOT-SERVERS. TW class 1 in hints 找不到 Root Server 中 E. ROOT 之 Class,也就是 named. ca 中沒有設定 IN l l stream_getlen([140. 126. 102. 30]. 42873): Connection timed out 和 140. 126. 102. 30 的連線逾時 l l denied update from [140. 112. 15. 188]. 3633 for ". " 拒絶來自 140. 112. 15. 188 要求動態更新 . 的位置 l l xn--abc. tw has multiple CNAMES 這個名稱 CNAME 多次到不同的名稱 (系統預設是 no, 若真的要用需 multiple-cname yes ) l l Zone "" (file named. ca): No default TTL ($TTL<value>) set, using SOA minimum instead named. ca 沒有定 TTL 值,使用 SOA 中的 TTL 代替 l l a. dns. tw IN A differing ttls: correct a. dns. tw 的 TTL 值與上層設定不同,調整之 , BIND 9 才會有 , 以下層資料為準 l l /var/named/abel. hosts. utf 8: WARNING SOA refresh value is less than 2 * retry (2 < 1209600 * 2) SOA 中的 refresh 的值小於 retry 值的二倍,建議您可達十倍左右 86
DNS系統記錄解讀 l l sysquery: findns error (NXDOMAIN) on ipopc-16. ipoware. ocm. tw? 找不到 這個網域名稱 (NXDOMAIN) l l Malformed response from [203. 70. 159. 194]. 53 (out of data in final pass) DNS 回應的封包格式不對 l l deleting interface [211. 72. 211. 71]. 53 這個網路介面 shutdown 了 (bind 預設每小時會檢查 interface 狀況 ) l l There may be a name server already running on [211. 72. 211. 1]. 53 named 巳經在執行中了 l l invalid RR type 'NS' in additional section (name = 'auth. com') from [194. 74. 63. 90]. 53 194 的回答中, additional section 資訊中的 NS 資料不對,可能有設錯的狀況或 Spoofing l l log_open_stream: open(/var/log/named/dns-statistics. log) failed: Permission denied 開啟系統記錄檔時,權限不足 , 需注意 named run-time 時的 uid 和檔案 (目錄 )權限是否相 符 l l cannot set resource limit on this system 無法設定這台機器的系統設定,如最大檔案開啟數,最大行程數...主因通常是權限不 足 l l db. movie: 16: data "hp. com" outside zone "com. tw" (ignored) hp. com 這個名稱不屬於 com. tw 這個 zone 之下 87
DNS系統記錄解讀 l l zone “tw” (class 1) SOA serial# (1) rcvd from [211. 72. 210. 250] is < ours (2001062901) 轄區傳送 ”tw”時發現 211. 72. 210. 250 的序號小於現在的序號 , 這會造成不傳的狀況. 每次更改 zone file 時 要記得同時至少為 serial 加上 1, 這是一個基本的原則 l l l Err/TO getting serial# for "edu. tw" secondary zone "edu. tw" expired slave 無法取得轄區資料 , 當到達了 SOA 的 expire 值時則會產生第二行的訊息內容 , 表示 edu. tw 的轄區資 料巳經過期了 , 當再遇到有人來查 twnic. edu. tw 時則會產生 SERVFAIL 的系統訊息. 會造成這樣的訊息可 能的原因可能為 : master 與 slave 間的網路連線有問題 , slave 主機所指定的 master ip 有誤 , master 沒有開 allow-transfer 或其 zone file 中的語法有誤 l l can't change directory to /var/named: No such file or directory 找不到 /var/named 這個目錄.這通常是因 options 中 directory 所指定的路徑不存在或打錯字 l l : master zone "movie. edu" (IN) rejected due to errors (serial 1997010600) Zone file 中語法或格式錯誤造成整個 Zone 不用 (BIND 8 訊息 , BIND 9 仍可用 , 但可能出現 SERVFAIL 狀況 ) l l socket(SOCK_RAW): Too many open files 系統開啟的檔案數過多,造成 named 無法再開啟檔案或 socket l l l gethostby*. getanswer: asked for "37. 103. 74. 204. in-addr. arpa IN PTR" , got type "CNAME" gethostby*. getanswer: asked for "37. 103. 74. 204. in-addr. arpa", got "37. 32/27. 103. 74. 204. in-addr. arpa" 找 204. 74. 103. 37 的反解時,發現其指到一 CNAME,通常這種狀況較少見,是小於一個 Class C 中常用反 解的指定方法,所以其要再問 37. 32/27. 103. 74. 204. in-addr. arpa 的結果 l l ns_udp checksums NOT turned on: exiting OS 中的 udp checksum 功能未打開, DNS 無法運作 88
DNS系統記錄解讀 l l can't fdopen tmpfile (sec_qip/db. 135. 156. Hfe. Or. P) DNS 在做轄區傳送時會在 directory 所指令的目錄下產生一個 訊息 l l couldn't create pid file 無法建立 PID file (process id),權限問題 l l setsockopt(REUSEADDR): Operation not supported on socket 作業系統不支援 setsockopt 中某些參數 (REUSEADDR) l l CNAME and other data (invalid) 一個巳是 CNAME rr 的記錄不能再用於其他記錄 l l $GENERATE unknown type: $i. 3. 2. 1. dyn. tw GENERATE 的語法錯誤, type 不對或是忘了加了 l l host name "t_terrall. dev. oclc. org" (owner "51. 240. 174. 132. in-addr. arpa") IN (primary) is invalid - proceeding anyway FQDN 名稱不合法 , 不能有底線 ([A-Za-z 0 -9, -]) l l no SOA found for fs. dedip. oclc. org, SOA query got rcode 3, aa 1, ancount 0, aucount 1 雖是權威主機 (aa=1)查無 SOA 記錄 (rcode 3 = NXDOMAIN, an=ANSWER , au=AUTHORITY l l NOTIMP 未實作 (Not Implemented ) NSTATS 942153823 941779425 A=86974 NS=2 CNAME=59 SOA=6 MG=5 PTR=17610 HINFO=141 MX=5631 TXT=6 AAAA=138 LOC=2 MAILB=5 ANY=2066 BIND 8 特有,說明從何時至何時 (UTC time) A 記錄查詢了 86974 次 … l temp file, 若此時權限不對,即會出現此類 89
DNS系統記錄解讀 l l ns_resp: query(242. 240. 112. 207. in-addr. arpa) A RR negative cache entry (NS 0. NAP. NET: ) 因為負面答案快取,巳知其不存在 l l ns_resp: query(200. 229. 99. 195. in-addr. arpa) Bogus LOOPBACK A RR (localhost. geosrv. com: 127. 0. 0. 1) 查詢 NS 記錄時,指向了 127. 0. 0. 1,這個 IP 是有問題的 (Bogus) l l ns_resp: query(www. abc. com) Glue A RR missing (ns 1. def. com: ) www. abc. com 沒有對應的 A 記錄 (外部的域名 ) l l ns_resp: query(155. 128/26. 218. 32. 216. in-addr. arpa) No possible A RRs 沒有對應的 A 記錄 (自己的域名 ) l l ns_resp: TCP truncated: "167. 133. 200. 192. in-addr. arpa" IN PTR from [192. 200. 128. 254]. 53 DNS 回應封包太大,改用 tcp 方式查詢 (超過 512 要 truncate 或使用 edns) l l "rr. com IN MX" points to a CNAME (mail. rr. com) MX/CNAME 不能混用 l l sysquery: query(ring. kotel. co. kr) NS points to CNAME (daiduk. kaist. ac. kr: ) NS/CNAME 不能混用 l l [[206. 153. 116. 21]. 13172] transfer refused from [206. 153. 116. 8], zone psk. net 拒絕 206. 153. 116. 8 對 . 21 要求 zone transfer ( psk. net) 的請求 (allow-transfer 沒有它 ) l l unapproved AXFR from [132. 174. 19. 16]. 36285 for "riptor. com" 同上意,不同的版本字面稍有不同 , ’unapproved’ 有的版本會改稱 ‘deny’, 而 AXFR 因情況不同,可能是查 詢 (query), 遞迴 (recursive), 或更新 (update)等 90
DNS安全進階應用與實例探討 l 關閉非自己 client 的 recursive l l l 正面範例 : abc. com aol. com cnn. com … 負面範例 : ncc. tw tsmc. com. tw 網域名稱判別密碼應妥善保管 l l 業務人離職交接後應變更判別密碼 專屬業務人員,勿使人人皆知 l l pchome. com. tw 權責清楚 使用 BIND 9 會比 BIND 8 在查詢上嚴謹 l 留意 DNS 相關的系統漏洞或問題 l 避免或少用 168. 95. 1. 1,主要其太多人用常有 timeout 情況發生 l 91
DNS安全進階應用與實例探討 l l l 開啟 query/security log 記錄查詢及安全方面相關訊 息 網路有調整即檢視 acl 是否仍適當 版本隱藏 (options { version “abc”; }; ) 開啟 use-id-pool yes,增加 query id (2 bytes) 的隨機性, 且記錄 qid 與 IP 間的關係,以避免 spoof (會增加系 統資源的使用 ) 可考慮 chroot 環境,以減少入侵後的風險 l 可參考去年講義 http: //dns-learning. twnic. net. tw/DNS 94/ 92
動態更新相關問題 bind 8 後支援動態更新 l bind 動態更新可以只認 IP 或是使用 key l l l 認 IP 簡單而實用 認 key 需使用 tsig (此教材不特別說明) l l Google with “bind nsupdate tsig” nsupdate 後會在 directory 產生日誌檔 (. jnl) nsupdate 後日誌檔用於 zone transfer, 及稽核使用 nsupdate 會直接對 zone file 進行內容修改 , 及對巳 載入 run-time 資料一併修改 , 以維持其一致性 93
動態更新相關問題 l 兩個 DNS Server, nsupdate 兩部 ? 只需要 update master 即可 l nsupdate 不需要處理 SOA serial 值 , 系統會 自動加 1 l zone transfer l l 增量區域傳送 (IXFR, incremental zone transfer ) 的資料同步全部 DNS (只 傳改變的部份 ) l Bind 8 與 Bind 9 間的動態更新支援情形 8. 2. 3 前版本只能傳全部 (AXFR) l 8. 3. 0 後版本可支援傳部份 (IXFR) l 94
動態更新相關問題 – 架構示意圖 用程式將 DB 的 record 轉 成 Bind 認識的 zone file notify DNS Server 固定時間讀取 Transaction Log 做成 nsupdate 產生日誌檔 options { directory "/var/named"; pid-file "/var/run/named. pid"; allow-transfer { sip 1; sip 2; sip 3; bip 1; bip 2; bip 3; }; also-notify { bip 1; bip 2; bip 3; }; #備用主機 provide-ixfr yes; also-notify request-ixfr yes; recursion no; }; zone "tw" { type master; file "tw"; allow-update { 127. 0. 0. 1; }; }; zone "tw" { type slave; file "twnic. tw"; masters {master_ip; }; }; 95
動態更新相關問題 –參數意義 acl “hotsite-dns”{ seednet_ip; hinet_ip; tanet_ip; hk_ip; }; acl “real-dns” {1. 2. 3. 4; 5. 6. 7. 8; 9. 10. 11. 12; }; #acl 分別宣告兩個 ACL 用於區分服務 性質及備援主機 options { directory "/var/named"; pid-file "/var/run/named. pid"; allow-transfer {real-dns; hostsite-dns; }; # zone transfer 要對兩個 ACL 全開 allow-notify { hotsite-dns; }; # also-notify 意在通知備份主機也要同步 recursion no; # 不接受遞迴 , 您可自依情況改用 allow-recursion provide-ixfr yes; # 差異化 transfer out request-ixfr yes; # 差異化 transfer in max-journal-size 1 m; # nsupdate 記錄檔只留 1 M size transfer-format many-answers; # zone transfer 以多個記錄一起傳 , 可以加快 速度 }; 96
動態更新相關問題 –nsupdate command $>nsupdate > server localhost #設定要更新的 Server >zone twnic. tw #更新那個 zone file >update delete 1. twnic. tw A #刪除 1. twnic. tw 的 A 記錄 >update delete 255. twnic. tw. A #刪除 255. twnic. tw 的 A 記錄 >update add 255. twnic. tw 8888 A 9. 9 #加一筆 ttl=8888 的 A 記錄 >show #顯示目前 nsupdate 情形 Outgoing update query: ; ; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: 0 ; ; flags: ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0 ; ; UPDATE SECTION: 1. twnic. tw. 0 ANY A 255. twnic. tw. 8888 IN A 9. 9 >send #送出更新指令 (未送不會生效 ) >quit 註 : 可以把上述指令寫在文字檔中 , 以 nsupdate Filename 一次處理完 , nsupdate 若 封包大於 512 bytes, 則屬 truncate 模式 , 會改以 53/tcp 傳送此一 update 請求 97
動態更新相關問題 如果您只是給 windows client 做一般的動態 更新 , 開啟 allow-update {您的網段 ; }; l 如果您是 dhcp + nsupdate 由 dhcpd 來做 update 動作會有較高的安全性 , 可參考 l l l http: //www. ops. ietf. org/dns/dynupd/secure-ddnshowto. html#forward 如果您是 DNS 相關廠商 , 使用 IXFR 能有效節 省更新時間 l l l Verisign rapid DNS update (. com) 每 15秒更新 zone file 一次 (>30000000 筆域名資料 ) dyndns. org, noip. com 都是 60 秒內的更新 TWNIC 計畫今年內推出 30 秒內更新方案,目前仍 在測試階段 (預設的 NS 記錄 TTL 86400 不會降低 ) l 降低此值會增加上層的負擔 98
動態更新相關問題 – 動態 DNS l dyndns. org/no-ip. com l l 以 client 向其 Web Server 發送資訊 (hostname, id, passwd) 等必要資訊 Web Server 處理出其真實 IP (因可能經過 NAT 或 Proxy)後轉換成 nsupdate 指令結構 執行 nsupdate 更新其 bind 相關 RR 資訊 (ttl=60) TWNIC dyndns l l TWNIC 自行開發 client/server 環境 後台結合各家 Registrar 以確認密碼正確性 不使用 nsupdate, 而以資料庫操作 提供 client source code 供 Vendor 移植 99
動態更新相關問題 – 動態 DNS l DB 化的動態 DNS l l 那種好 ? l l l 主要使用 mydns (perl) /Power. DNS (C++) 從網頁接收資訊後直接操作資料庫 ( dns query 時直接 select 資料庫或從快取抓取資料 查詢效率 : Bind 顯然比 DB 快 安全性 : Bind 相對承受壓力查詢較高 (>10000 vs ~1000) 彈性 : DB 性質的可變性高 , 前端易結合其他服務 管理 : DB 化是較易管理 , 額外負擔較小 , BIND 則需另有後台 處理這類事情 如何從外部判斷其方法 l l SOA serial 變化 , bind 會遞增 , DB 則不用動 (DB 自有同步化 機制 以 dns fingerprint 軟體測試 (fpdns) 其 nameserver, 可知其大 概版本及平台 (具風險性 ) 100
動態更新相關問題 – 動態 DNS DB 模式 BIND 模 式 HTTP Request 檢查 hostname, id, passwd 及抓取 Client IP 資訊寫入 DB 輸出 nsupdate 至 master DB DNS 資料同 步 DNS query 時 select DB 求 取 Answer DNS Service Master 通常隱藏在後 Slave 向 master 同步 DNS Service 101
大型網路 DNS安全架構探討 l 可自行建立 解析 Local-Root 提供內部完全的 不用現有的 named. ca 而是自己建立 l Root server 只要一個叫 “. ” 的 zone file l 例如中美海覽斷線事件 l l 善用 also-notify 做好備援主機隨時保持 在最新資料狀態 l 為方便管理,可考慮以 DB 產生 zone file 方式進行 DNS 更新 102
利用 DNS提升網路容錯能力 l 分布 DNS 在不同線路或實體機房,避 免 SPOF (Single Point of Failure ) 情況發 生 l DNS round robin MX/A 記錄,以避免服 務完全中斷 l 可適當利用動態更新技巧,對發生故 障主機進行 Record 修改 l 預先寫好介面可事半功倍 103
案例探討 有一單位 (xxx. com. tw. )遭受來自網路上的 DNS Query 的 DDOS 攻,造成其 T 1 的頻寬完全塞滿,每秒查詢萬次以上,無數的主 機皆向其詢問, xxx. com. tw. AAAA 的內容,但該網域名稱並無 AAAA 之 Record, 請問如何解決 ? ( TTL 及 Cache 因素 ) l 某人在 TWNIC 指定其 xxx. com. tw. 之 DNS Server 如下面內容 : mail. xxx. com. tw. 1. 2. 3. 4 而其本身並沒有在這兩個 IP 上架設 DNS Server (有 Mail. Server), 請問別人以 user@xxx. com. tw 寄信給他時, 收得到嗎 ? 為什麼 ? (版本差異 ) l Veri. Sign 在 . com. net 的 g. TLD 上加了 $ORIGIN com. * IN A 64. 94. 110. 11 請問,對 Internet 各種服務會有什麼影響 (綜合觀念, telnet /smtp/www …) l ? 104
案例探討 上層 DNS 中 . tw 及 . com. tw 的 DNS 查詢量那一個較 多 ? 為什麼 ? (TTL 及架構因素 ) l 依據 ISC 及 CERT/CC 組織的說明,建議使用 BIND 運 行 DNS 的人,為了安全的理由,最好都換到 BIND 9. X 版,為什麼像 HINET/SEEDNET 這些 ISP 都不願意換 呢 ? (版本差異 ) l 有一個網域名稱叫 tw. com. tw , 為什麼他的查詢是 高達每小時數萬次 ? 管理人員覺得很困擾,用 Fire Wall 將 DNS query 給檔下來又會發生什麼事 ? (Resolver 的 default domain/search 及 loop 問題 ) l 105
DNS 其他的應用 l SPF (Sender Policy Framework) l Domain Key 的應用 l ENUM l 網路釣魚的問題 l RBL l 其他 106
SPF l SPF 全名為 Sender Policy Framework l 主要使用 dns 的 TXT 記錄說明這個網域 的發信 source 有哪些 l SPF 目前巳是標準 RFC 4408 l 可以使用精靈幫您產生 SPF 資料 http: //www. openspf. org/wizard. html l 這個資料要放到自己的 zone file 中 l 如果是代管則代管業者需提供 TXT 記錄 l 107
SPF 運作原理 l Sender 寄信給 Recipient l 收件人郵件主機收到信後檢查 Sender 的 Doamin 的 SPF 記錄 l abelyang@twnic. net. tw ==> 查詢 twnic. net. tw TXT 記錄 IP 不在 SPF 的記錄中, 則退信, 若有則接收 l 如果來源的發信 108
SPF TXT 記錄說明 l DNS 中本即有 TXT 記錄, 用於 “說明” 事 項 l TXT 記錄只是一個 string, 自由格式, SPF 則直接使用此 TXT 做為應用 ip 4|ip 6: address 說明信來源 IPv 4|IPv 6, 可使 用 CIDR 表示法 l a|mx|ptr: FQDN 來源可能為 A|MX 記錄的 IP l include: Domain 說明這個來源包含了這個 Domain 的 SPF 記錄 l redirect: FQDN 轉向以該域名做為 SPF 檢查 l 109
l SPF 的行為 (action) 定義 l l l + Pass - Fail ~ Soft. Fail ? Neutral 網路上的例子 l Google. com “v=spf 1 ptr ? all” 反解是 google. com 的 , 其他不表示意見 l gmail. com "v=spf 1 redirect=_spf. google. com“ 請改向 _spf. google. com 查詢 (使用這個功能要注意 loop 問題 ) l _spf. google. com "v=spf 1 ip 4: 216. 239. 56. 0/23 ip 4: 64. 233. 160. 0/19 ip 4: 66. 249. 80. 0/20 ip 4: 72. 14. 192. 0/18 ? all“ 這些 ipv 4 位址是 gmail 的來源 , 其他不表示意見 (中立 ) l Hotmail. com “v=spf 1 include: spf-a. hotmail. com include: spf-b. hotmail. com include: spf -c. hotmail. com include: spf-d. hotmail. com ~all” 包含了這幾個名稱 (spf-a. hotmail. com. . )的 SPF 記錄 , 同理 , include 也要注意 Loop l Sina. com "v=spf 1 include: spf. sinamail. sina. com. cn -all“ 包含 spf. sinamail. sina. com. cn 的相關記錄 , 其他都不是我的 110
SPF 檢查過程 (同意連接 ) other. com twnic. net. tw 連線到 other. com (擇最佳的 MX ) 220 other. com ehlo twnic. net. tw Other. com 回應 250 - extensions 訊息 Mail from: <abelyang@twnic. net. tw> Other. com 檢查 twnic. net. tw type=TXT 記錄 DNS 回應查詢結果 5 mx 5. other. com. 10 mx 10. other. com. Other. com 回應連接訊息 Twnic 送出 ehlo/helo 訊息 250 -SIZE 20971520 (信件最大 size) 250 -8 BITMIME (本文允許 8 bit 250 ENHANCEDSTATUSCODES (加強型的 回應訊息 ) twnic. net. tw 的主機發出一封 寄件人為 abelyang@twnic. net. tw 的信件到 gmail IN TXT “v=spf 1 ip 4: 211. 72. 210. 0/23 ip 4: 210. 17. 9. 224/26 ip 4: 203. 73. 24. 0/28 ip 4: 61. 220. 48. 0/27 a ptr include: twnic. tw –all” 註 : 這個動作可能在收下來整封信以後 才做 , 也可能在連接階段 (如此處 )就做 Other. com 回應 OK Other. com 回應 250 2. 1. 5 OK” 111
SPF 檢查過程 (拒絕連接 ) other. com Spam. com 連線到 other. com (擇最佳的 MX ) 220 other. com ehlo twnic. net. tw Other. com 回應 250 - extensions 訊息 Mail from: <abelyang@twnic. net. tw> Other. com 檢查 twnic. net. tw type=TXT 記錄 DNS 回應查詢結果 Other. com 回應 拒絕 訊息 5 mx 5. other. com. 10 mx 10. other. com. Other. com 回應連接訊息 spam 送出 ehlo/helo 訊息 250 -SIZE 20971520 (信件最大 size) 250 -8 BITMIME (本文允許 8 bit 250 ENHANCEDSTATUSCODES (加強型的 回應訊息 ) spam 的主機發出一封 寄件人為 abelyang@twnic. net. tw 的信件到 gmail (他假冒身份 ) IN TXT …略 Other. com 回應 550 5. 7. 1 abelyang@twnic. net. tw. . . Please see http: //spf. pobox. com/why. html? sender=abely ang@twnic. net. tw&ip=163. 28. 6. 33&receiver=t wnic. net. tw 112
SPF 檢查過程 (進來後才檢查 ) other. com Spam. com 連線到 other. com (擇最佳的 MX ) 220 other. com ehlo twnic. net. tw Other. com 回應 250 - extensions 訊息 Mail from: <abelyang@twnic. net. tw> 5 mx 5. other. com. 10 mx 10. other. com. Other. com 回應連接訊息 Twnic 送出 ehlo/helo 訊息 250 -SIZE 20971520 (信件最大 size) 250 -8 BITMIME (本文允許 8 bit 250 ENHANCEDSTATUSCODES (加強型的 回應訊息 ) twnic. net. tw 的主機發出一封 寄件人為 abelyang@twnic. net. tw 的信件到 gmail Other. com 檢查 twnic. net. tw type=TXT 記錄 DNS 回應查詢結果 Other. com 回應 拒絕 訊息 IN TXT …略 Other. com 回應 550 5. 7. 1 mengwong@vw. mailzone. com. . . Please see http: //spf. pobox. com/why. html? sender=abelyang @twnic. net. tw&ip=163. 28. 6. 33&receiver=twnic. n et. tw 113
SPF + Spam. Assassin (1) SPF 也可以將信收進來後再開始檢查 l 安裝 SA (請您自己研究網路上之文章 l l , 通常一般都使用 SA 來進行驗證 ) 或參考 http: //phorum. study-area. org/viewtopic. php? t=18000 或以 perl -MCPAN -e “install Mail: : Spam. Assassin” 來安裝 SA 加載 SPF 功能 l 檢查目前 SA 是否支援 SPF #/etc/mail/spamassassin/init. pre # 設定檔是否載入 Plugin loadplugin Mail: : Spam. Assassin: : Plugin: : SPF # 檢查 Perl Modules 中是否包含了 SPF 必要的一些模組 (cmd line), 若無錯誤訊息即表丕巳 安裝這兩個 modules $>perl -e‘require Mail: : Spam. Assassin: : Plugin: : SPF’ $>perl -e ‘require Mail: : SPF: : Query’ 若無則使用 CPAN (www. cpan. org) 安裝該模組 $>perl -MCPAN -e ‘install Mail: : Spam. Assassin: : Plugin: : SPF; install Mail: : SPF’ # 此法能解決 Perl 模組之相依性問題 , 若您未用過則在初次使用時會有一些必要的詢問與 設定動作 114
SPF + Spamassassin (2) l SA 中 SPF 相關的設定 (/usr/share/spamassassin) l 定義不同的狀況的檢查函式及描述 25_spf. cf header SPF_PASS eval: check_for_spf_pass() # 檢測能否通過 SPF PASS 檢查 describe SPF_PASS SPF: sender matches SPF record # 這個項目的描述 tflags SPF_PASS net nice userconf # 我們省略了這個檔中的大多數內容 # 分數定義的方式 , 實際請根據您的系統及版本來看會較好 # 在此提醒 , SA 版本低於 3. 1. 8 可能存在被 DOS 的風險 (https: //rhn. redhat. com/errata/RHSA-20070074. html) l 定義分數 , 內容很長 , 可找到有關 SPF 的項目 50_scores. cf score SPF_PASS -0. 001 # 通過 SPF 檢查給予 -0. 001 分 , 因許多 Spamer 也曉得要建立 SPF 記錄 score USER_IN_SPF_WHITELIST -100. 000 #如果是 SPF_PASS 的白名單 , 那就真的是白名單而不是假的 sender l 60_whitelist_spf. cf header USER_IN_SPF_WHITELIST eval: check_for_spf_whitelist_from() # 此檔下半部定義了 describe USER_IN_SPF_WHITELIST From: address is in the user's SPF white list tflags USER_IN_SPF_WHITELIST userconf nice noautolearn net # 不需自動學習 SPF WL 115
SPF + Postfix (1) l Postfix : Postfix >2. 3 可以使用 Sendmail 的 Milter 功能 (2. 2 之前的使用 libspf 2 本處不多做介紹) # 要讓 Postfix 支援 Milter 要先裝 sendmail 的 Milter (使用 8. 13. X 版本 milter) $>wget ftp: //ftp. sendmail. org/pub/sendmail. 8. 13. 8. tar. gz # 取得 sendmail tarball 檔 $>tar -zxvf sendmail. 8. 13. 8. tar. gz # 解壓 $>cd sendmail-8. 13. 8/libmilter # 進入對應目錄 $>make ; make install # 編譯及安裝 milter 函式庫 l 安裝 sid-milter (支援 SPF) # 取得 sid-milter $>wget http: //nchc. dl. sourceforge. net/sourceforge/sid-milter-0. 2. 14. tar. gz # 依 http: //www. postfix. org/MILTER_README. html#workarounds 進行幾行程式的修改 $>tar -zxvf sid-milter-0. 2. 14. tar. gz # 解壓 $>cd sid-milter-0. 2. 14 # 進行該目錄 $>make; make install # 編譯及安裝 sid-milter $>/usr/bin/sid-filter -a /etc/postfix/milter/peerlist -l -p inet: 3332@127. 0. 0. 1 -h 116
SPF + Postfix (2) l 續前頁 l l 添加自己 Domain 的 SPF (TXT) 記錄 修改 mail. cf smtpd_milters = inet: 127. 0. 0. 1: 3332 l l # IP: Port, 需配合 sid-milter 中的 -p 參數 重啟 postfix 後即可生效 sid-milter 參數說明 (僅列較重要的 ) -a peerlist of hosts to ignore # 那些來源忽略 , 通常指自己的主機及用戶 IP, 可以是 FQDN, IP, CIDR -A auto-restart # sid-milter 若失常自動重新啟動 -D softfail DNS errors # 查詢該域名發生錯誤時以 softfail (~) 看待 -d domlist domains to always pass # 那些 DN 不檢查 , 通常指外部 -h prepend identifying header# 在 Header 中添加 SPF 檢查訊息 Ex: # Received-SPF: pass (google. com: domain of abelyang@twnic. net. tw # designates 211. 72. 210. 250 as permitted sender) -M text rejection message # 拒絕連接時的訊息內容 -q quarantine instead of rejecting # 以隔離代替拒絕 -t test-only mode # test only, 不熟悉時建議使用 -T secs DNS timeout # DNS 查詢逾時時間 -u userid change to specified userid # run time 時的 user id - 117
SPF + Sendmail (1) l 做法同前兩頁說明 , 但不需進行任何程式修 改 sid-milter 本來就是做給 sendmail 用的 l sendmail 必需支援 Milter, 多數的 Linux 版本預設 即巳支援 $> sendmail -d 0 </dev/null # 檢測自己目前使用的版本支援情形 l Version 8. 13. 8 Compiled with: DNSMAP LOG MAP_REGEX MATCHGECOS MILTER MIME 7 TO 8 MIME 8 TO 7 NAMED_BIND NETINET NETUNIX NEWDB PIPELINING SASLv 2 SCANF STARTTLS TCPWRAPPERS USERDB XDEBUG l 若不支援 , 因做法較複雜請參考下列連結第二節 之說明 http: //phorum. study-area. org/viewtopic. php? t=40579 118
SPF + Sendmail (2) l 續前頁 $>vi /etc/mail/sendmail. mc # 前略 # 在 MAILER 前加入 INPUT_MAIL_FILTER(`sid-filter', `S=inet: 3322@localhost') # 後略 $> m 4 /etc/mail/sendmail. nc > /etc/mail/sendmail. cf $> service sendmail restart l l (我們的介紹可能太簡短 , 有賴有興趣的朋友多 Sendmail 的其他方案 l l 接著您就可以多加測試了 加實驗 ) Milter-SPF 主要以 Perl 來進行 SPF 驗證 Smf-spf 主要以 C 來進行 SPF 驗證 , 需函式庫 libspf 2 Mimedefang主要以 C 來 hook perl 程式進行認證 , 同時可以搭 配 Spamassassin 及 Virus scan 等諸多功能 補充 : 何謂 MILTER (Mail f. ILTER) l Sendmail 為開放第三方 (third-party) 使用的一種方案 , 讓每個 SMTP 協商階 段都可以呼叫一個以上的外部程式進行驗證或調整部份郵件表頭 , 以達到 最佳的開放性 119
SPF 具程式 l 在前面的介紹中, 安裝了 Perl Module 中的 Mail: : SPF: : Query 時, 亦會安裝 一個 具程式 spfquery l twnic. net. tw 的 SPF 內容 # +short 表示只要最短的結果值 "v=spf 1 ip 4: 211. 72. 210. 0/23 ip 4: 210. 17. 9. 224/26 ip 4: 203. 73. 24. 0/28 ip 4: 61. 220. 48. 0/27 a ptr include: twnic. tw -all" $>dig twnic. net. tw txt +short l 使用 spfquery 來測試結果 $>spfquery --mail-from|-m <email-address>|<domain> --helo|-h <hostname> # Sender, helo 主機名稱 --ip|-i <ip-address> [OPTIONS] # IP 位址 spfquery --helo|-h <hostname> --ip|-i <ip-address> [OPTIONS] # 或是以主機名稱及 IP 來測 $>spfquery -m tech@twnic. net. tw -h twnic. net. tw -i 1. 2. 3. 4 # 查此一比對結果 Fail # 因為我們是使用 -all Please see # 訊息較長 , 主要是 link 到 spf網站說明資訊 http: //www. openspf. org/why. html? sender=tech%40 twnic. net. tw&ip=1. 2. 3. 4&receiver=spfquery: domain of tech@twnic. net. tw does not designate 1. 2. 3. 4 as permitted sender Received-SPF: fail (spfquery: domain of tech@twnic. net. tw does not designate 1. 2. 3. 4 as permitted sender) clientip=1. 2. 3. 4; envelope-from=tech@twnic. net. tw; helo=log. twnic. net. tw; # SPF 標準的 header 表示 $>spfquery -h twnic. net. tw -i 210. 17. 9. 240 # 210. 17. 9. 240 是 twnic 宣告的發信 IP Pass # 符合 , 所以 pass Please see …略 , 同上 Received-SPF: pass (spfquery: domain of tech@twnic. tw designates 210. 17. 9. 240 as permitted sender) clientip=210. 17. 9. 240; envelope-from=; helo=twnic. net. tw; # spf 檢查結果為 pass, 及其相關訊息 120
SPF. tw 目前 SPF 設定情形 twnic 目前所管理之 DNS 資料抽 樣 各主要類別 SLD 1000 筆以計算設定 情形, 不足 1000筆者則以全部檢測 l 我們以 SLD l edu. tw l net. tw l com. tw l gov. tw 檢測筆數 281 611 1000 有 SPF 記錄 13 9 4 7 121
SPF 的問題 l Spammer 也可以建立 SPF 來規避 SPF check, 這個問題也存在 Domain Key 中 l l 多數的 Domain 都沒有設 SPF , 這個需要時間多加推廣 (SPF 去年 4月方成為標準) l l MTA 可以拒絕這個 Domain 的來信, 造假的 Envelope Sender 其 IP 無 法符合 SPF Check 自己的 DNS 要記得設定 SPF 記錄, 但不一定需要在 MTA 實作去檢查 來信的 SPF 記錄, 以免錯失必要的信件 SPF 需注意處 l ISP 所提供 Relay 主機之問題 l l Mailing-List / Aliases / Forward / 退信 時 (同上理) l l l 因為 Sender 還是自己, 但 IP 為 ISP 的主機 使用 Mailman / Majordomo 等可避免此一問題 郵件若有使用 Virtual domain, 可善用 include 或 redirect 統合 SPF 相對於 DK 較簡單易懂, 本質疏途同歸 122
Domain Key DK 目前仍不是 RFC 標準, 細節爭議仍不少, 故本 處我們僅介紹原理, 不涉及實作介紹 l 主要是由 Yahoo 所提出之一套 Email 認證方式 以確保發信人或 Domain 之真實性 l l l Sender 將自己 Domain 的 Public Key 置入 DNS zone file 中 (TXT) 發出去的信件使用自己的 Private Key 對必要欄位( 或內文)進行簽章動作 收件端由 dns 查詢取得 Public Key 進行還原確認 依結果再決定處理行為 123
DKIM 近況 l DKIM 在過去一年來巳陸續通過了三篇 RFC l l l RFC 4686 Analysis of Threats Motivating Domain. Keys Identified Mail RFC 4871 Domain. Keys Identified Mail (DKIM) Signatures RFC 5016 Requirements for a Domain. Keys Identified Mail (DKIM) Signing Practices Protocol DKIM相關之標準巳經確立 l 根據 TWNIC 以 Domain Name 查 _domainkey. DN 目前台灣約有700個域名 有此相關記錄 l 目前 124
DK 範例 (1) TWNIC 客服寄出一封回應 給 User 的信件 From: tech@twnic. net. tw To: Customer customer@other. com Subject: Problem fixed ? Date: Fri, 9 March 2007 21: 00: 37 +0800 (CST) Message-ID: efjoj 5 rjkjkjlabc@twnic. net. tw DKIM-Signature: a=rsa-sha 256; s=brisbane; d=twnic. net. tw; c=simple; q=dns/txt; i=joe@football. example. com; h=Received : From : To : Subject : Date : Message-ID; bh=jpltw. NFTq 83 Bkjt/Y 2 ekyqr/+i 296 da. Nk. FZSdaz 8 VCY=; b=bn. Uo. MBPJ 5 w. Bigy. Zx. LWJATk. Skb 9 Ig+8 OAu 3 c. E 2 x/er+B; Received: from pc 133. twnic. net. tw [211. 72. 211. 133] by twnic. net. tw with submit. cf; Fri, 9 March 2007 21: 00: 37 +0800 (CST) From: tech@twnic. net. tw To: Customer customer@other. com Subject: Problem fixed ? Date: Fri, 9 March 2007 21: 00: 37 +0800 (CST) Good Luck ! Message-ID: efjoj 5 rjkjkjlabc@twnic. net. tw TWNIC. Good Luck ! TWNIC. l經過 twnic. net. tw 郵件主機 Signing 後產生如右之結果 • Received 欄位是傳送記錄 (Trace Field), 為原來 SMTP 的範疇 , 和 DK 無關 • Mail Header 是由最上開始往上加 , 所以多個 Received 代表經過了多次轉 送 • 由於 b= 和 bh= 內容較長 , 我們去掉了部份簽章內容 125
DK 郵件表頭 欄位解釋 DKIM 識別欄位名稱 , 這個是 Sign 的欄位 Domain Sender Selector 名稱 所使用的簽章演算法 Canon 類別 DKIM-Signature: a=rsa-sha 256; s=brisbane; d=twnic. net. tw; c=simple; i=tech@twnic. net. tw; q=dns/txt h=Received : From : To : Subject : Date : Message-ID; bh=jpltwqr/+i 296 da. Nk. FZSdaz 8 VCY=; b=bn. Uo. MBPb 9 Ig+8 OAu 3 c. E 2 x/er+B; 對那些 Header 的簽章 , 如列 , DKIM 建議至少要包含 From Header Value 的簽章結果這個 結果會受到 Canon 影響 , 且不 包含 Header 的名稱 , Ex: From Domain. Key-Status: pass: verify 成功 no sig: 沒有 DKIM-Signatur miss: 沒有 b= 的值 dns : dns 查詢方面的錯誤 Int: internal error , 內部方面的錯誤 Body 的簽章結果 , 若含有 l=n 表示 Body 的前幾個 Bytes, 以避免信件過大的消耗 針對不同的狀況 verify 端可以決 定自己的採取對策 : Accept Discard Reject Tempfail 126
DK 欄位說明 在 DK 草案的 Section 5 中提到每個 DKIM-Signature 欄位 (tag)的意義 l 每個 tag 間以 ; 做為區隔 l l l l a= 演算法, 為 rsa-sha 256/rsa-sha 1 h= 取用那些表頭欄位進行簽章, 建議至少要含 From b= 取用 h= 表頭的簽章結果 bh= 本文的簽章結果 l= 取用本文的長度 c= (canonicalization ), 以 訊息標準化的方法, 有 simple 和 relaxed, header/body 分別為什麼標準化方法, Ex: c=simple/simple (見後述) d= 網或名稱 s= selector , 使用的 domain key 頭 selector. _domankey. DN v= 版本, 目前為 0. 5 q=dns/txt (目前為固定此值), 表示查 DNS 的 TXT 記錄 t= signature time , 為 1970/1/1 後的 UTC 秒數 x=signature expiration, 簽章的有效期間 詳細的說明可以參閱 www. ietf. org Working Group (DKIM) 上之說明 127
DK 何謂訊息的標準化 主要因為表頭訊息可能有一行內放不下之情形, 可能存在 ‘縮排 (folding)’ 情形(可以是 TAB 或是一個以上的空白), 實際上 folding 的 訊息是該欄位名稱全部的值 l 標準化動作主要統一訊息的取用方法, 兩種方法 l l l Simple: 欄位及 folding 皆保留 (就是原封不動) Relaxed: 進行欄位的 unfolding , 將多行併成一欄, 多行需補空白 l Folding 舊版原名 nofws, 但意思是一樣的 Cc: <SP>ima@ietf. org, <TAB> dkim@ietf. org, <TAB> enum@ietf. org 經過 relaxed 處理後的結果 , 冒號左右的空白需去掉 /欄位名稱轉成小寫 /unfolding 成一行 /去掉行未 的空白字元 (<TAB> 表示 ascii 9 的 tab, <SP> 表示空白字完 ) cc: ima@ietf. org, <SP>dkim@ietf. org, <SP>enum@ietf. org 128
DK 建立 DNS 記錄 (1) 以 _domainkey. DN 形成 TXT 解析條件 l 產生 rsa 的 public/private key l l Key 的長度不要超過 2048 bits 以避免 DNS 封包長 度 512 bytes 的限制 $>openssl genrsa -out rsa. private 1024 # 建立 private key $>openssl rsa -in rsa. private -out rsa. public -pubout -outform PEM # public key 內容 -----BEGIN PUBLIC KEY----MHww. DQYJKo. ZIhvc. NAQEBBQADaw. Awa. AJh. ALUlcpnslrckb 3 GVOBxrk. Uiw. Xs Pf. A 8 Xpd/t. U 31 B/Mx. Xc. SI 4 n. Sz. RGWr. Brl. Xi. SBYf. Sy. XLM 8 r. X 3 iy. Dnw. XZh 5++E 6 Cn+ 8+OXi. X 6 Vtxk 8 otrc. N 9 BSUC 3 Yy. Nag 0 XVUFW 3 B 4 k. F/1 w. IDAQAB -----END PUBLIC KEY----- # 去掉那些 --- 的行 , 接成一行放到 DNS 的 zone file 中 (一行 ) _domainkey. twnic. tw IN TXT "k=rsa; t=y; p=MHww. DQYJKo. ZIhvc. NAQEBBQADaw. Awa. AJh. ALUlcpnslrckb 3 GVOBxrk. Uiw. Xs. Pf. A 8 Xpd/t. U 31 B/Mx. Xc. SI 4 n. Sz. RGWr. B rl. Xi. SBYf. Sy. XLM 8 r. X 3 iy. Dnw. XZh 5++E 6 Cn+8+OXi. X 6 Vtxk 8 otrc. N 9 BSUC 3 Yy. Nag 0 XVUFW 3 B 4 k. F/1 w. IDAQAB 129
DK 建立 DNS 記錄 (2) l 如果 DKIM-Signature 有 s= 的話則解析 selector. _domainkey. DN l l gmail 寄出來的信 s=beta (您可以自行觀察該欄位上之值) 則查 beta. _domainkey. gmail. com Yahoo 的 s 為 1024 $> dig beta. _domainkey. gmail. com txt +short "t=y; k=rsa; p=MIGf. MA 0 GCSq. GSIb 3 DQEBAQUAA 4 GNADCBi. QKBg. QC 69 TURXN 3 o. Nfz+G/m 3 g 5 rt 4 P 6 ns. K m. Vg. U 1 D 6 cw 2 X 6 Bnx. KJNl. QKm 10 f 8 t. Mx 6 P 6 b. N 7 ju. TR 1 Be. D 8 uba. Gqtzm 2 r. WK 4 Li. MJqho. Qcw. Qzi. Gb K 1 zp/Mkd. XZEWMCfl. LY 6 o. UITriv. K 7 JNOLXt. Zbdx. JG 2 y/RAHGsw. KKy. Vh. SP 9 ni. Rs. ZF/IBr 5 p 8 u. QIDA QAB" $>dig s 1024. _domainkey. yahoo. com. tw txt +short "k=rsa; t=y; p=MIGf. MA 0 GCSq. GSIb 3 DQEBAQUAA 4 GNADCBi. QKBg. QDr. Eee 0 Ri 4 Juz+Qfi. WYui/E 9 UGSXau/2 P 8 Ljn. TD 8 V 4 U nn+2 FAZVGE 3 k. L 23 bzeo. ULYv 4 Pele. B 3 gfm" "Ji. DJOKU 3 Ns 5 L 4 KJAUUHj. Fw. Debt 0 NP+s. BK 0 VKe. TATL 2 Yr/S 3 b. T/xhy+1 xtj 4 Rkd. V 7 f. Vx. Tn 56 Lb 4 ud. Unwux. K 4 V 5 b 5 Pd. OKj/+Xcw. IDAQAB; n=A 1024 bit key; " " 130
DK 建立 DNS 記錄 (3) l DK DNS TXT 中的 tag 說明 v= 版本, 可不寫, 日後標準形成後為 v=DKIM 1 l k= 編碼方式 k=rsa 為預設 l n= 註解 (如上頁 yahoo 例子) l p= public key 的值 (base 64) l t= flag, y 為 test 之意, 若為 n 表示限定 DKIM -Signature 中的 i= (Sender) 必需同於 d= (Domain) l 131
DK 的實作 l 可參考下列連結之介紹 http: //phorum. study-area. org/viewtopic. php? p=207148 目前標準的細節仍可能變動, 尤其是 tag 資訊的 異動可能較多, 但精神是不變的 l Spamassassin 亦有 DKIM 之 Plugin, 目前較少 看到 Domain Name 有設定 _domainkey 的相 關記錄 l l 相同於 SPF 的抽樣, 僅看到 4筆 DK 資料 雖有 DK 的 TXT 記錄, 但若其 MTA 若實作亦無作用 www. dkim. org 為 dkim 之官方網站, 上有多種 MTA 之建置資料 132
DK 的問題 雖然功能較多, 能識別到 user 是否真實, 但內容遠比 SPF 複雜許多 l SPF 的 sign/verify 會消耗較多系統資源, 造假的 signature 會讓系統過於忙碌 l RSA 演算法存在碰撞現象, 不同的 key 可能產生相同的 signature (巳證實) l 郵件內容改變 l l Header Insert/delete/rewrite (如主旨加了 {spam} ) 會造成 verify 失敗 綜觀 DKIM 的立意良好, 但其實作程面要求的程度較 SPF 來得高許多, 其中又關係到 sign / verify 及安全等議 題, 故可能在最後的導入上遭遇困難 l Tags 太多不易理解, 容易形成障礙 l 標準尚未完全確立 l 133
網路釣魚 134
網路釣魚的動機 l 網路釣魚主要是要竊取各種機密資訊, 或是冒用其他的人身份從事各種活動, 最主要的動機就是賺錢 網路銀行帳號、密碼 l 信用卡卡號 l 網路拍賣轉帳 l 遊戲虛擬寶物 l 各種系統帳號、密碼 l 135
網路釣魚 常見方法 l 電子郵件網釣 l 偽造網頁 l 入侵其他人的主機設置偽造的網頁 l 偽造網站 l 註冊一個相似的 domain name l 發送偽造的 l email(社交 程 ) 以各種理由騙使用者使其連線到事先安 排好的偽造網頁或是網站 136
網路釣魚 視覺上的欺騙 使用相似或容易混淆的域名 l www. hsbc. com. hk->www. hkhsbc. com l www. esunbank. com. tw->www. esumbank. com. tw l www. bankofthewest. com->www. bankofthevvest. com l 多了 -、. net等輔助或不明顯的符號 _、 l www. chinatrust. com->www. china-trust. com l www. mobile 01. com->www. mobile 01. com. net l 以數字取代英文 l www. paypal. com -> www. paypa 1. com l 使用者拼錯字或按錯鍵盤 l www. gamania. com-> www. gamannia. com l 137
網路釣魚 最近的幾個案例 l 華航 l l l 日盛證券 l l l china-airlines. com. tw china-air 1 ines. com. tw jihsunbank. com. tw jinsunbank. com. tw 土銀 l l landbank. com. tw 138
網路釣魚 上述案例之目的 l l l 網域名稱和原網站相似,使用者不易察覺 使用 frame技術連到原來之網站,使用者之 操作直接與原網站連線,過程資料不會經由 假網站,使用者不會查覺有異樣 另一個隱藏 frame暗藏木馬程式,下載至使 用者電腦執行 , 以側錄 user 的資訊 在搜尋引擎上買關鍵字廣告或造假左側排 名 當這些公司向 TWNIC 反應時 , 我們的困難 l l l 犯罪事實的認定 刪除或凍結的依據 因為這些法律上的問題會拉長受害時間 139
網路釣魚 停止該假網頁之運作 刪除假網站之網頁內容 (網站代管 )—立即生 效 l 停止假網站使用之網頁轉址服務 —立即生效 l ISP 停用假網站之電路 -立即生效 l l 通常網釣者不會用自己的網路以避免被抓到 代管業者停止假網站使用之 DNS代管 —有 cache效果,無法立即停止 l TWNIC 停止假網站網域名稱之授權解析 —有 cache效果,無法立即停止 l 140
網路釣魚 TWNIC可能協助的方 式 儘速通知檢調機構完成搜證並通知中心停 止解析服務 —時效上之問題 l 其他預防措施 l l 檢查現有註冊資料庫中有下列情況有上千組,但 無法確定那一個是有問題 l l 1 h n m rn l 此方案目前 TWNIC 正在推動 l l 提醒使用者自行保護其網域名稱,如微軟除了註 冊 microsoft. com外還註冊 micr 0 soft. com,山富旅遊 除了註冊 travel 4 u. com. tw外還註冊 trave 14 u. com. tw 等 由 registrar或 domain monitor公司提供之當有其他 人註冊可能混淆域名之 alert服務 141
網路釣魚 公司如何自我保護 l 對 Web Log 應時常 monitor, 檢查是否有 來歷不明的 Referer l 透過一些 web log 分析 具程式可以清查 所有的來源 l 公司可常上常用之搜尋引擎以了解自 己公司關鍵字查詢結果 l 預先註冊類似之網域名稱 , 以防止受害 l 公司合併仍應保留原有之網域名稱一 段時間 , 以避免被他人所申請 142
DNS 其他的應用 DNS RBL 黑名單機制 143
RBL 涵義 RBL DNS Realtime Black List (dnsrbl) 通常用於用於郵件主機之 IP 連線時即時查詢 , 以驗證該主機是 否為黑名單主機 , 若是則拒絕連接 l 網路上之接受公開查詢之 RBL 很多 , 也有需要付費的 , 需視情況 使用之 l l l l l 有的 RBL 雖然 active 但巳經不維護了 , 故資料正確性可能有問題 有的 RBL 只是單向的添加 , 但並不允許移除 有的 RBL 有很高的準確度 , 但也可能存在較高的誤判率 有的 RBL 只是針對地區性 , 而沒有考慮到合理性 有的 RBL 有很高的準確度 , 也有很好的政策機制 (如舉報 , 移除 , 通 知等 ), 建議多採用這類 RBL 有的 RBL 是其他幾個 RBL 的集合 , 是否好用應視自己的情況來考 慮 如果 IP 為 219. 56. 182. 46, 被列入 bl. spamcop. net (以下投影片都 以這個為例 ) 中 , 則其存在於 DNS 中的記錄為 46. 182. 56. 219. bl. spamcop. net A 127. 0. 0. 2 l 此處的 127. 0. 0. 2 中的 2 可能介於 2 -15 間 , 主要視不同的 RBL 定義 而定 , 多數的 RBL 使用 2 表 spam 或 3 表 open relay…等 , 不一而足 , 此處並無一定 144
RBL 檢查過程 (連接時檢查 ) Spam. com (IP=219. 56. 182. 46) 連線到 other. com (擇最佳的 MX ) other. com 5 mx 5. other. com. 10 mx 10. other. com. 220 other. com Other. com 回應連接訊息 ehlo twnic. net. tw spam 送出 ehlo/helo 訊息 Other. com 回應 250 - extensions 訊息 250 -SIZE 20971520 250 -8 BITMIME 250 ENHANCEDSTATUSCODES Mail from: <abelyang@spam. com> Other. com 回應 250 OK 訊息 Rcpt to: <abelyang@other. com> Other. com 檢查 IP 的 RBL 記錄 DNS 回應查詢結果 Other. com 回應 拒絕 訊息 Other. com 檢查連的的 IP 是否被列入 RBL: 查詢 46. 182. 56. 219. bl. spamcop. net 的 A 記錄 Other. com 得到結果為 127. 0. 0. 2, 來源被列入 RBL, 代表他 可能是 Spam 的來所以拒絕連接 , 通常回應的訊息會帶 link 資訊如 : 553 5. 3. 0 <abelyang@spam. com>. . . spam blocked see: http: //www. spamcop. net/w 3 m? action=blcheck&ip=219. 56. 1 82. 46 145
RBL 的連結資訊 l 以下是該連結所提供的訊息, 包含了 219. 56. 182. 46 被列入 bl. spam. net 的 RBL 中 , DNS 查到的結果是 127. 0. 0. 2 spamcop 的政策是你被列入一段時間 就解除 , 目前這個要 11 小時才解除 過去一週以來有人檢舉 (不提供證據 ) 如果這個 IP 沒有再被舉報 Spam, 就會自動解除 RBL 若一個 IP 第一次被列入 RBL 時 , 只會有 24 小時限制 , 但第二次後視條件有不同的時間限制 下半部尚有少量訊息 , 但較不重要 146
RBL 廣告信檢舉 ( spamcop 為例 ) l 必需先在 spamcop 上申請一個以 email 為名的帳號 平均反應時間 , 也就是收到 Spam 到 Report 給 spamcop 的平均時間差 , 時間愈短 , 其儘早列入 RBL 可減少其他人受害的機會 處理巳自己寄來的 Spam 內容 , 最主要 是確認的 作 , 因為不是寄了就算舉 報完成 您也可以把郵件的表頭及內及貼在此處並按下 “Process Spam”, 他會把 表頭所有的 Received: 取出來判斷 IP 資訊 , 並且取出內文中所有的 Link, 分析 Link 的資訊 , 這些資訊包含了 Domain MX/Whois , IP Whois 的查詢 結果 , Spamcop 會出析出所有有用的資訊並將之寄給對應的人 , 連 SOA 中的 Email 都可能會被其取用 , 其目的是儘最大能力通知所有的人注意 此事 , 並向其反應 , 如果沒有人反應 , 他就會把這個 IP 列為 RBL 您可以把 SPAM 附件轉寄的方 式寄到這個帳號 , 他們就會處理 後續的問題 , 而以回信的方式給 你一個 link 去處理後續的問題 147
RBL 另外一種型態的捕捉 www. spamhaus. org (以下簡稱 SH)的 RBL 是 以設陷阱(trap) 的方式來補捉 spam mail l 以一些公開的 email 讓 spammer 把信送到這 些帳號 l l l Spammer 只儘力收集名單而不知那些 email 是 trap 一些 spam 統計也是以 trap 方式進行 SH trap 收到信後直接列入 RBL 要移除 SH 被列入 RBL 的 IP 需要一番手續, 而 不像 spamcop 自動解除, 在一般的情況 user 所 用的 MTA 不會被無故列入該 RBL, 但可能因為 open relay/proxy 之故而被列入 148
RBL 檢查自己是否被列入 可以用 google 找 rbl check 可以找到很多 l 新申請線路時若巳知 IP, 建議您先 check , 若 被列入再請 ISP 換別的 IP (再 check 一次 ) l 若被列入 RBL 請依對方網站說明方能解除 RBL l l l 有些 RBL 需要 ISP 去提才能解除 , 因需與 ISP 溝通 故相當花時間才能解封 (還需看 ISP 配不配合 ) 若自己被列入 RBL 有什麼現象 l l 寄出的信可能被退回 , 一般而言退信訊息上會有 相關連結 (連接時就拒絕 ) 寄出的信可能會被對方歸為 Spam, 而致使對方可 能沒有看見 (收下來後才檢查 ) 149
RBL MTA 如何搭配 l Postfix #/etc/postfix/main. cf # sbl-xbl 含義建議您自行參考 SH 網站上的說明 smtpd_client_restrictions = reject_rbl_client bl. spamcop. net, , reject_rbl_client sbl-xbl. spamhaus. org l Sendmail # /etc/mail/sendmail. mc FEATURE(`enhdnsbl‘, `bl. spamcop. net’, `“spam blocked see: # 為同一行 , 勿斷行 http: //www. spamcop. net/w 3 m? action=blcheck&ip="$&{client_addr}', `t') $>m 4 sendmail. mc > sendmail. cf MTA 的設定後需重新啟動 MTA 之相關服務 l 修改好 150
謝謝 151
83c16511ede755fdd301415862f1ffd3.ppt