上一步 回到第一頁

DNS server 安全防護

以下2種功能皆由Bind 9所提供的安全防護。TSIG提供DNS server間在做Zone Transfer及DNS更新(更新zone的設定…)時對其傳輸資料所做的加密簽章,並能對其他DNS server做認證;”rndc” command提供使用者能遠端控管DNS server,並對傳輸資料做加密,來提高DNS server的安全防護。

TSIG

Transaction Signature(TSIG ; RFC 2845)是使用加密簽章驗證DNS訊息,特別是回應與更新。它是以MD5 hash加密簽章(cryptographic signature)方式,以認證DNS server間資料傳輸。首先須於Primary master上自行產生加密簽章,之後將此簽章傳遞給Slave,經設定後由Slave以密碼簽章送往Primary master要求Zone Transfer。同時亦提供服務給加密簽章簽署過的動態更新要求。 TSIG功能為確認DNS之資訊是由某特定DNS Server提供;並且大多數應用於DNS間之Zone Transfer,確保 Slave與Primary DNS server複製資料不會由其它假的DNS server提供或被篡改截取。

TSIG設定步驟

  1. 產生key值

    輸入“dnssec-keygen -a hmac-md5 -b 128 -n HOST example”表示以”hmac-md5”演算法來產生share key,”128”表示所產生key的長度(bits),最長可以產生512 bits 的key;而”example”表示當執行指令後所產生的2個檔案分別名為 ”Kexample.+157+45717.key” 和 ”Kexample.+157+45717.private”,而key值就存放在Kexample.+157+45717.key檔案中。
  2. 設定兩邊DNS servers的/etc/named.conf (1)
    如果產生的key值為: OQCfZ2DMmOrIkX8m5dqtRg==,則在雙方電腦的named.conf檔案中加入

  3. 設定兩邊DNS server的/etc/named.conf (2)
    在雙方電腦的named.conf檔案中加入

    server後面接的是對方的IP address,若host1與host2為DNS server,則host1便在此設host2的IP address,反之亦同。
  4. 在zone transfer部分
    只要在named.conf檔案中在zone後面加上”allow-transfer{ key example; };”,使得DNS server間在做zone transfer時可以利用TSIG的方式來傳送資料。

  5. 在zone update的部分
    只要在named.conf檔案中對想要更新的zone後面加上”allow-update {key example; };”,使得我們在更新時可以利用TSIG的方式來傳送資料。

    附帶一提的是,由例子可以得知我們是使用與zone transfer時相同的key;即”example”,若要有所區隔,我們可以重新產生新的key值,而使用與zone transfer不同的key值來傳送。(由”nsupdate” command來做zone update,”nsupdate” command的相關細節可由”man nsupdate”得知。)
  6. 檢查 /var/log/messages
    重新啟動Bind後,檢查messages檔案是否有任何錯誤訊息。

rndc

Bind 9之後提供新的功能為”rndc”(remote name daemon control),不過可視為Bind舊版ndc的延伸,它可使系統管理者利用rndc command遠端或本端(localhost)控制管理Bind,並以加密方式來傳送資料,以防止其他非授權使用者控制Bind。

rndc設定步驟(local端)

  1. 產生/etc/rndc.key檔案

    執行”rndc-confgen -a”指令後,會在/etc目錄下產生rndc.key檔案,而所產生的檔案內容如下圖所示:

    “algorithm hmac-md5”表示我們是使用”hmac-md5”演算法來產生”secret”每次執行都會產生不一樣的”secret”
  2. 產生/etc/rndc.conf檔案

    執行上圖指令後會在/etc目錄下產生rndc.conf檔案,將檔案中secret置換成rndc.key的secret。置換後的檔案內容如下:
  3. 修改/etc/named.conf
    如rndc.conf檔案後面的注解所示,在/etc/named.conf檔案中加入

  4. 檢查 /var/log/messages
    重新啟動Bind後,若在/var/log/messages中發現

    則表示設定成功。
  5. 測試
    即表示之後便可以在本機端利用”rndc”command來控制管理Bind。
    例如:

    rndc後面接status參數可以展示出目前DNS server的相關訊息,可以接的參數可以由只輸入”rndc”後面不加任何參數,執行後便會列出所有可以接的參數為何。
    有關”rndc” command的用法可由”man rndc”查詢得知。

rndc設定步驟 (遠端)

遠端控制管理Bind的意思是在其他的電腦上能透過”rndc”command的方式來對遠端的DNS server(Bind)做設定或是管理的動作,由於透過rndc的方式,所以能增加資料傳送的安全性。

  1. 在設定local端時,我們已產生rndc.key及rndc.conf,所以就繼續沿用此2個檔案。
  2. 修改/etc/named.conf
    在named.conf檔案中加入

    allow{ any; }表示允許任何電腦連線到此電腦,inet 後面則接DNS server IP address。
  3. 檢查 /var/log/messages
    重新啟動Bind後,若在/var/log/messages中發現

    即表示之後便可以在遠端電腦利用”rndc”command來控制管理Bind。
  4. 設定遠端電腦的rndc.key及rndc.conf
    將遠端電腦中的rndc.key及rndc.conf檔案中的secret設成與欲控制的DNS server中rndc.key之secret相同,如此才能控制遠端DNS server。
  5. 測試

    rndc –s 後面接DNS server IP address(domain name亦可)。執行後可列出遠端DNS server相關訊息。

上一步 回到第一頁