DNS frank https url fitdns DNS DNS DNS

  • Slides: 60
Download presentation
DNS 管理實務 frank https: //url. fit/dns

DNS 管理實務 frank https: //url. fit/dns

DNS 簡介 - 什麼是 DNS? DNS (Domain Name Service) 常見的 RR 種類們 ➢ 網域名稱服務

DNS 簡介 - 什麼是 DNS? DNS (Domain Name Service) 常見的 RR 種類們 ➢ 網域名稱服務 SOA Start of authority ➢ 分散式的資料庫 NS Name server (delegation record) A Address (IPv 4) AAAA Address (IPv 6) PTR Pointer (reverse lookup) MX Mail exchange ○ 由世界各地不同的 DNS 伺服器所組成 ○ 每台伺服器負責不同的部份 ➢ 提供 IP 與名稱的對應資料� 詢 ○ 每一筆紀錄稱為一個 RR (Resource Record) ○ 其他功能 5

DNS 簡介 - DNS 命名空間 (DNS Name Space) (2/2). (root) . Domain tw. tw

DNS 簡介 - DNS 命名空間 (DNS Name Space) (2/2). (root) . Domain tw. tw edu. tw. edu nctu. edu. tw. www. nctu. edu. tw. us com nctu www Subdomain FQDN 7

DNS 原理 10

DNS 原理 10

DNS 原理 - DNS Query (2/4) 13

DNS 原理 - DNS Query (2/4) 13

DNS 原理 - DNS Query (3/4) ➢真實案例 ○ 詢問 giri. gbrmpa. gov. au 的位址

DNS 原理 - DNS Query (3/4) ➢真實案例 ○ 詢問 giri. gbrmpa. gov. au 的位址 14

DNS 原理 - DNS Query (4/4) ➢依據� 詢的類型又可以大致分為 ○ 正解 (Forward Lookup) ■ Domain

DNS 原理 - DNS Query (4/4) ➢依據� 詢的類型又可以大致分為 ○ 正解 (Forward Lookup) ■ Domain Name -> IP ( 又稱為 Forward mapping ) ■ 例如: www. google. com. tw -> 216. 58. 200. 227 ○ 反解 (Reverse Lookup) ■ 用 IP 來反� Domain Name, IP -> Domain Name (又稱為 Reverse mapping) ■ 透過特殊的 in-addr. arpa 這個 TLD (這被歸類為 Infrastructure g. TLD) 進行� 詢 ■ 例如� 詢 216. 58. 200. 227 所對應的域名 ● 227. 200. 58. 216. in-addr. arpa -> tsa 03 s 01 -in-f 227. 1 e 100. net. 15

DNS 架設與維護 - 安裝相關套件 ➢更新套件庫 ○ $ sudo apt-get update ➢安裝套件 Bind 9 ○

DNS 架設與維護 - 安裝相關套件 ➢更新套件庫 ○ $ sudo apt-get update ➢安裝套件 Bind 9 ○ $ sudo apt-get install -y bind 9 ➢設定開機時� 動服務 ○ $ sudo systemctl enable bind 9 ➢立即� 動服務 ○ $ sudo systemctl start bind 9 20

DNS 架設與維護 - 設定檔語法 ➢named. conf 中包含以下幾種陳述 (statements) ○ include ○ options ○ server

DNS 架設與維護 - 設定檔語法 ➢named. conf 中包含以下幾種陳述 (statements) ○ include ○ options ○ server ○ key ○ acl ○ zone ○ view ○ controls 22

DNS 架設與維護 - 存取控制 acl ➢ 語法 ○ acl_name { address_match_list }; ➢ 預設

DNS 架設與維護 - 存取控制 acl ➢ 語法 ○ acl_name { address_match_list }; ➢ 預設 ACL ○ any, localnets, localhost, none ➢範例 acl CSnets { 140. 113. 235/24; 140. 113. 17/24; 140. 113. 209/24; 140. 113. 24/24; }; acl NCTUnets { 140. 113/16; 140. 126. 237/24; }; allow-transfer {localhost; CSnets; NCTUnets}; 24

DNS 架設與維護 - 全域設定 options ➢ 編輯 /etc/bind/named. conf. options acl Campus { 140.

DNS 架設與維護 - 全域設定 options ➢ 編輯 /etc/bind/named. conf. options acl Campus { 140. 113/16; }; options { version ""; // 拿掉版本號 listen-on port 53 { any; }; // Listen 在所有 IPv 4 listen-on-v 6 port 53 { any; }; // Listen 在所有 IPv 6 allow-query { any; }; // 允許所有人向我發送 Query recursion true; //開� 遞迴� 詢 allow-recursion { localhost; Campus; }; //限制遞迴� 詢 }; ➢sudo rndc reload 25

DNS 架設與維護 - 區域宣告 zone (1/3) ➢ 用來宣告其為 Authoritative Zone ➢語法 zone "jkes. tc.

DNS 架設與維護 - 區域宣告 zone (1/3) ➢ 用來宣告其為 Authoritative Zone ➢語法 zone "jkes. tc. edu. tw" { type master | slave| stub; file "path”; // Zone 資料庫檔案 masters {ip_addr; }; allow-query {address_match_list}; allow-transfer { address_match_list}; allow-update {address_match_list}; }; [all] [empty] 26

DNS 架設與維護 - 區域宣告 zone (2/3) ➢Master Server 範例 ➢acl Trusted_slaves { 163. 28.

DNS 架設與維護 - 區域宣告 zone (2/3) ➢Master Server 範例 ➢acl Trusted_slaves { 163. 28. 66. 70; 2001: 288: 4000: 66: : 70; }; ➢zone "cs. nctu. edu. tw" IN { type master; file "master/cs. nctu. edu. tw. hosts"; allow-query { any; }; allow-transfer { localhost; Trusted_slaves; }; allow-update { none; }; }; 27

DNS 架設與維護 - 區域宣告 zone (3/3) ➢Slave Server 範例 zone "cs. nctu. edu. tw"

DNS 架設與維護 - 區域宣告 zone (3/3) ➢Slave Server 範例 zone "cs. nctu. edu. tw" IN { type slave; file "slave/cs. nctu. edu. tw. hosts"; masters { 140. 113. 235. 107; }; allow-query { any; }; allow-transfer { localhost; CS-DNS-Servers; }; }; 28

DNS 架設與維護 - Zone 資料庫 (4/13) ➢ Resource Record (RR) 種類 32

DNS 架設與維護 - Zone 資料庫 (4/13) ➢ Resource Record (RR) 種類 32

DNS 架設與維護 - Zone 資料庫 (5/13) ➢ SOA: Start of Authority ○ 定義 DNS

DNS 架設與維護 - Zone 資料庫 (5/13) ➢ SOA: Start of Authority ○ 定義 DNS Zone 的權威性,每個 Zone 只能有一個 SOA ○ 格式 [zone] IN SOA [server-name] [administrator’s mail] ( serial, refresh, retry, expire, negative ttl ) ○ 範例 $TTL 3600; $ORIGIN cs. nctu. edu. tw. @ IN SOA csns. cs. nctu. edu. tw. root. cs. nctu. edu. tw. ( 2007052102 ; serial number 1 D ; refresh time for slave server 30 M ; retry 1 W ; expire 2 H ) ; negative cache ttl 33

DNS 架設與維護 - Zone 資料庫 (6/13) ➢ NS: Name Server ○ 用來宣告 Zone 的

DNS 架設與維護 - Zone 資料庫 (6/13) ➢ NS: Name Server ○ 用來宣告 Zone 的 Authoritative Server ○ 通常置於 SOA RR 後面 ○ 每一筆 NS RR 除了在自己的 Zone file 裡宣告,也需要在上層宣告 ○ 範例 $TTL 3600; $ORIGIN cs. nctu. edu. tw. @ IN SOA csns. cs. nctu. edu. tw. root. cs. nctu. edu. tw. ( 2007052102 ; serial number 1 D ; refresh time for slave server 30 M ; retry 1 W ; expire 34

DNS 架設與維護 - Zone 資料庫 (7/13) ➢ A Record: Address ○ 提供 Hostname 至

DNS 架設與維護 - Zone 資料庫 (7/13) ➢ A Record: Address ○ 提供 Hostname 至 IP 之對照 ○ 範例 $ORIGIN cs. nctu. edu. tw. @ IN NS dns. cs. nctu. edu. tw. IN NS dns 2. cs. nctu. edu. tw. dns IN A 140. 113. 235. 107 dns 2 IN A 140. 113. 235. 103 www IN A 140. 113. 235. 111 35

DNS 架設與維護 - Zone 資料庫 (8/13) ➢ AAAA Record: Address IPv 6 ○ 提供

DNS 架設與維護 - Zone 資料庫 (8/13) ➢ AAAA Record: Address IPv 6 ○ 提供 Hostname 至 IPv 6 之對照 ○ 範例 $ORIGIN cs. nctu. edu. tw. @ IN NS dns. cs. nctu. edu. tw. IN NS dns 2. cs. nctu. edu. tw. dns IN AAAA 3 ffe: : bbb: 93: 5 36

DNS 架設與維護 - Zone 資料庫 (9/13) ➢ PTR: Pointer $ORIGIN in-addr. arpa. ○ 用於反�

DNS 架設與維護 - Zone 資料庫 (9/13) ➢ PTR: Pointer $ORIGIN in-addr. arpa. ○ 用於反� IP 與 Hostname 之對應 103. 235. 113. 140 IN PTR csmailgate. cs. nctu. edu. tw. 107. 235. 113. 140 IN PTR csns. cs. nctu. edu. tw. ○ 利用特別的 g. TLD: in-addr. arpa ○ 範例 $ORIGIN 235. 113. 140. in-addr. arpa. @ IN SOA csns. cs. nctu. edu. tw. root. cs. nctu. edu. tw. ( 2007052102 ; serial 1 D ; refresh time for secondary server 30 M ; retry 1 W ; expire 37

DNS 架設與維護 - Zone 資料庫 (10/13) ➢ PTR: Pointer (IPv 6) 3. 0. 0.

DNS 架設與維護 - Zone 資料庫 (10/13) ➢ PTR: Pointer (IPv 6) 3. 0. 0. 2. 0. 0. 0 IN PTR csmailgate. cs. nctu. ed ○ 使用 ip 6. arpa g. TLD ○ PTR Record for 2404: 6800: 4008: 800: : 2003 ○ $ORIGIN 0. 0. 8. 0. 0. 4. 0. 0. 8. 6. 4. 0. 4. 2. ip 6. arpa. @ IN SOA csns. cs. nctu. edu. tw. root. cs. nctu. edu. tw. ( 2007052102 ; serial 1 D ; refresh time for secondary server 30 M ; retry 1 W ; expire 2 H) ; minimum IN NS dns. cs. nctu. edu. tw. IN NS dns 2. cs. nctu. edu. tw. 38

DNS 架設與維護 - Zone 資料庫 (11/13) ➢ MX: Mail exchanger ○ 提供郵件伺服器路由資訊 ○ 範例

DNS 架設與維護 - Zone 資料庫 (11/13) ➢ MX: Mail exchanger ○ 提供郵件伺服器路由資訊 ○ 範例 $TTL 3600; $ORIGIN cs. nctu. edu. tw. @ IN SOA csns. cs. nctu. edu. tw. root. cs. nctu. edu. tw. ( 2007052102 ; serial number 1 D ; refresh time for slave server 30 M ; retry 1 W ; expire 2 H ) ; negative cache ttl IN NS dns. cs. nctu. edu. tw. IN NS dns 2. cs. nctu. edu. tw. IN MX 1 csmx 1. cs. nctu. edu. tw. IN MX 5 csmx 2. cs. nctu. edu. tw. 39

DNS 架設與維護 - Zone 資料庫 (12/13) ➢ CNAME: Canonical Name ○ 為一個 Host 增加別名

DNS 架設與維護 - Zone 資料庫 (12/13) ➢ CNAME: Canonical Name ○ 為一個 Host 增加別名 ○ 不應拿來做 Load-balance 用途 ○ 範例 www IN A 140. 113. 209. 63 IN A 140. 113. 209. 77 penghu-club IN CNAME www King IN CNAME www R 21601 IN A 140. 113. 214. 31 superman IN CNAME r 21601 40

DNS 架設與維護 - Zone 資料庫 (13/13) ➢Glue Record ○ 如果你的 DNS Server 位址也在同個 Domain

DNS 架設與維護 - Zone 資料庫 (13/13) ➢Glue Record ○ 如果你的 DNS Server 位址也在同個 Domain 裡的話 必須透過 Glue Record,讓別人能� 從上層找到你 ○ 例如: $ORIGIN mydomain. com. @ IN NS ns 1. mydomain. com. 這樣的情況下我要怎麼找到 ns 1. mydomain. com. 在哪裡? ○ 在 Parent 加上 mydomain. com. IN NS ns 1. mydomain. com. IN A 123 41

DNS 安全與除錯 - DNS 常見的攻擊模式 ➢DNS 放大攻擊 (DNS Amplification Attack) 46

DNS 安全與除錯 - DNS 常見的攻擊模式 ➢DNS 放大攻擊 (DNS Amplification Attack) 46

DNS 安全與除錯 - DNS 常見的攻擊模式 ➢DNS 放大攻擊 (DNS Amplification Attack) ○ 避免自己成為放大攻擊的幫凶,避免 Open Recursion

DNS 安全與除錯 - DNS 常見的攻擊模式 ➢DNS 放大攻擊 (DNS Amplification Attack) ○ 避免自己成為放大攻擊的幫凶,避免 Open Recursion ○ 關閉 recursion 功能,或是限制 recursion 的對象 options { recursion off; // 直接關閉 recursion }; 或者 options { recursion on; allow-recursion { trusted; }; // 只允許 trusted ACL 清單中的人進行 recursion }; 47

DNS 安全與除錯 - DNS 常見的攻擊模式 ➢區域轉送攻擊 (Zone Transfer Attack) ○ 避免洩漏組織網域的完整資料庫 ○ 限制可以執行 zone

DNS 安全與除錯 - DNS 常見的攻擊模式 ➢區域轉送攻擊 (Zone Transfer Attack) ○ 避免洩漏組織網域的完整資料庫 ○ 限制可以執行 zone transfer 的對象 zone "cs. nctu. edu. tw" IN { type master; file "master/cs. nctu. edu. tw. hosts"; allow-query { any; }; allow-transfer { localhost; slaves; }; // 只允許我認可的 slave server 執行 zone transfer allow-update { none; }; }; 48

DNS 安全與除錯 - 紀錄檔 logging ➢ logging 描述 logging { channel security-log { file

DNS 安全與除錯 - 紀錄檔 logging ➢ logging 描述 logging { channel security-log { file "/var/named/security. log" versions 5 size 10 m; severity info; print-severity yes; print-time yes; }; channel query-log { file "/var/named/query. log" versions 20 size 50 m; severity info; print-severity yes; print-time yes; }; category default { default_syslog; default_debug; category general { default_syslog; }; category security { security-log; }; category client { query-log; }; category queries { query-log; }; category dnssec { security-log; }; }; 53

DNS 進階議題 - Non-byte boundary (1/3) ➢有時候被分配到的網段可能不是完整的 Class C ➢例如將 192. 168. 3. 0/24

DNS 進階議題 - Non-byte boundary (1/3) ➢有時候被分配到的網段可能不是完整的 Class C ➢例如將 192. 168. 3. 0/24 切成四段,分別交給不同人管理 ○ 192. 168. 3. 0 ~ 192. 168. 3. 63 ■ ns. sub 1. chwong. csie. net. ○ 192. 168. 3. 64 ~ 192. 168. 3. 127 ■ ns. sub 2. chwong. csie. net. ○ 192. 168. 3. 128 ~ 192. 168. 3. 191 ■ ns. sub 3. chwong. csie. net. ○ 192. 168. 3. 192 ~ 192. 168. 3. 255 ■ ns. sub 4. chwong. csie. net. 怎麼辦? 55

DNS 進階議題 - Non-byte boundary (2/3) ➢ 方法一 $GENERATE 0 -63 $. 3. 168.

DNS 進階議題 - Non-byte boundary (2/3) ➢ 方法一 $GENERATE 0 -63 $. 3. 168. 192. in-addr. arpa. IN NS ns. sub 1. chwong. csie. net. $GENERATE 64 -127 $. 3. 168. 192. in-addr. arpa. IN NS ns. sub 2. chwong. csie. net. $GENERATE 128 -191 $. 3. 168. 192. in-addr. arpa. IN NS ns. sub 3. chwong. csie. net. $GENERATE 192 -255 $. 3. 168. 192. in-addr. arpa. IN NS ns. sub 4. chwong. csie. net. ➢ 搭配 zone “ 1. 3. 168. 192. in-addr. arpa” { type master; file “named. rev. 192. 168. 3. 1”; }; ➢ 編輯 named. rev. 192. 168. 3. 1 @ IN SOA sub 1. chwong. csie. net. root. sub 1. chwong. csie. net. (1; 3 h; 1 w; 1 h) IN NS ns. sub 1. chwong. csie. net 56

DNS 進階議題 - Non-byte boundary (3/3) ➢ 方法二 ➢ named. rev. 192. 168. 3.

DNS 進階議題 - Non-byte boundary (3/3) ➢ 方法二 ➢ named. rev. 192. 168. 3. 0 -63 $ORIGIN 3. 168. 192. in-addr. arpa. @ IN SOA sub 1. chwong. csie. net. $GENERATE 1 -63 $ IN CNAME $. 0 -63. 3. 168. 192. in-addr. arpa. root. sub 1. chwong. csie. net. (1; 3 h; 1 w; 1 0 -63. 3. 168. 192. in-addr. arpa. IN NS ns. sub 1. chwong. csie. net. $GENERATE 65 -127 $ IN CNAME $. 64 -127. 3. 168. 192. in-addr. arpa. 1 IN PTR www. sub 1. chwong. csie. net. 64 -127. 3. 168. 192. in-addr. arpa. IN NS ns. sub 2. chwong. csie. net. 2 IN PTR abc. sub 1. chwong. csie. net. $GENERATE 129 -191 $ IN CNAME $. 128 -191. 3. 168. 192. in-addr. arpa. IN NS ns. sub 3. chwong. csie. net. $GENERATE 193 -255 $ IN CNAME $. 192 -255. 3. 168. 192. in-addr. arpa. IN NS ns. sub 4. chwong. csie. net. ➢ 搭配 zone “ 0 -63. 3. 168. 192. in-addr. arpa” IN { type master; file “named. rev. 192. 168. 3. 1”; }; 57

DNS 進階議題 - Blackhole Zone ➢ 學校電腦中木馬,� 詢了惡意的網域,因此收到資安通報 ➢ 針對惡意的 DNS 進行阻擋 ➢ 編輯

DNS 進階議題 - Blackhole Zone ➢ 學校電腦中木馬,� 詢了惡意的網域,因此收到資安通報 ➢ 針對惡意的 DNS 進行阻擋 ➢ 編輯 Blackhoe Zone (/var/bind/cache/blackhole. hosts) $TTL 86400 ; one day @ IN SOA ns 0. example. net. hostmaster. example. net. ( 2004061000 ; serial number YYMMDDNN 28800 ; refresh 8 hours 7200 ; retry 2 hours 864000 ; expire 10 days 86400 ) ; negative ttl 1 day NS ns 0. example. net. NS ns 1. example. net. A 127. 0. 0. 1 * IN A 127. 0. 0. 1 58

DNS 進階議題 - Blackhole Zone ➢ 編輯 named. conf. local zone "malicious 1. com"

DNS 進階議題 - Blackhole Zone ➢ 編輯 named. conf. local zone "malicious 1. com" { type master; file "/var/bind/cache/blackhole. hosts"; }; zone "malicious 2. com" { type master; file "/var/bind/cache/blackhole. hosts"; }; zone "malicious 3. com" { type master; file "/var/bind/cache/blackhole. hosts"; }; 59

Appendix A: Converting Raw format to Text format ➢ Use named-compilezone -f raw -F

Appendix A: Converting Raw format to Text format ➢ Use named-compilezone -f raw -F text -o <output filename> <domain name> <input file> 60