|
本次技術專欄將解說如何利用TSIG來進行ZONE Transfer之實作,將持續進行五項實驗,藉由實驗來觀看TSIG是否運作正常及是否有作用
本次將介紹實驗A
設備:電腦*3、Hub*1
系統:Windows 2000 Server、Linux RedHat 9
軟體:windows DNS、ISC Bind 9.2.1、ethereal(用來監控封包狀態)
實驗項目:
A master dns與slave dns皆無使用TSIG之機制
B master dns與slave dns皆使用TSIG之機制
C master dns啟用TSIG機制,slave dns未啟用TSIG機制
D slave dns啟用TSIG機制,master dns未啟用TSIG機制
E master與slave皆啟用TSIG機制,但雙方之金鑰不同
環境設定:
在實驗開始之前,有幾點事情是需要注意到的,在為ZONE Transfer進行設定時,如果沒有注意到下列幾點事項,那進行ZONE
Transfer將會發生錯誤:
*時間同步化
*產生一對金鑰(shared secret)
*於master dns建立一個允許金鑰傳送的清單(allow-transfer)
*於slave dns的設定檔中加入master dns所使用的金鑰
關於時間同步化的問題,如果二台dns server的時間差距大於數分鐘,則即使所有的設定檔的設定都是沒問題,但是進行ZONE
Transfer時依然會發生失敗的情形,這個問題可以利用NTP來解決即可;而金鑰的部分可以使用dnssec-keygen工具來產生,關於dnssec-keygen使用語法在往後會做大致的介紹。需要注意的是雖然RSA、DSA、RSASHA1…等等演算法都能產生金鑰以供使用,但目前TSIG只支援"hmac-md5"演算法。
master dns 與 slave dns 設定檔的部分,需要建立一個TSIG金鑰的設定,為安全起見避免金鑰被篡改,可以把金鑰的部分存成另一個新的唯讀檔案,並只能以root權限來讀取,之後再利用include的方式將金鑰加入到設定檔之內(例如:include
/var/named/shared.keys),而金鑰的使用設定如下:
key keyname {
algorithm string;
secret string;
};
另外,在master dns需要建立一個允許金鑰傳送的清單,其設定方式如下:
zone "domain name"{
type zonetype;
file filename;
allow-transfer { key keyname; };
};
最後,在slave dns 的設定檔中加入master dns 所使用的金鑰,其設定方式如下:
server 10.1.1.1 {
keys { keyname; };
};
本次的主角實驗A-master dns與slave dns皆無使用TSIG之機制
將master dns 與 slave dns 的環境架設好之後,利用sniffer軟體監聽ZONE Transfer 時的封包並記錄其封包數量、長度與內容,做為一個照對的實驗樣本。
實驗A之實驗架構
進行ZONE Transfer時,利用 sinffer 軟體所截取的封包與system log檔如下圖所示:

master dns之system log檔內容

slave dns之system log檔內容

利用sniffer軟體截取的封包

利用sniffer軟體截取的封包之一的dns header

利用sniffer軟體截取的封包之一的dns response內容
結果:因為沒有做TSIG,因此資訊將是明文傳送,請注意此項實驗結果一定要為成功,若不成功,接下來就不做囉…
下此將繼續進行實驗B,請待續……
TWCERT/CC
|