區(qū)域傳送操作指的是一臺后備服務器使用來自主服務器的數據刷新自己的zone數據庫。這為運行中的DNS服務提供了一定的冗余度,其目的是為了防止主域名服務器因意外故障變得不可用時影響到全局。一般來說,DNS區(qū)域傳送操作只在網絡里真的有后備域名DNS服務器時才有必要執(zhí)行,但許多DNS服務器卻被錯誤地配置成只要有人發(fā)出請求,就會向對方提供一個zone數據庫的拷貝。如果所提供的信息只是與連到因特網上且具備有效主機名的系統(tǒng)相關,那么這種錯誤配置不一定是壞事,盡管這使得攻擊者發(fā)現(xiàn)潛在目標要容易得多。真正的問題發(fā)生在一個單位沒有使用公用/私用DNS機制來分割外部公用DNS信息和內部私用DNS信息的時候,此時內部主機名和IP地址都暴露給了攻擊者。把內部IP地址信息提供給因特網上不受信任的用戶,就像是把一個單位的內部網絡完整藍圖或導航圖奉送給了別人。
在linux下檢查目標站點的區(qū)域傳送漏洞:
dig NS linux.com
dig @doman.com linux.com AXFR ——用 dig 查看 zone 數據傳輸
在windows下檢測目標站點的區(qū)域傳送漏洞:
nslookup
set type=soa or set type=NS
linux.com
server doman.com
ls -d linux.com >linux.txt
view linux.txt
解決方案:區(qū)域傳送是DNS常用的功能,區(qū)域傳送的漏洞也不是沒有辦法解決的,嚴格限制允許區(qū)域傳送的主機即可,例如一個主DNS服務器應該只允許它的從DNS服務器執(zhí)行區(qū)域傳送的功能。
針對于bind軟件,可以通過allowe-transfer指令來控制,可以作為global選項或者zone選項的一個參數,我們可以使用地址列表如下allowe-transfer {192.168.1.1; 172.24.123.253;};
但是使用基于地址的訪問控制列表可能會被某些“意志堅定”黑客繞過,呵呵。最好的方法是使用TSIG key來嚴格定義區(qū)域傳送的關系,如下
allowe-transfer {key "dns1-slave1"; key "dns1-slave2";}.
設置方式為兩種:一種設置在options配置域;一種設置在zone配置域。優(yōu)先級為如果zone沒有進行配置,則遵守options的設置。如果zone進行了配置,則遵守zone的設置。