參考文檔:
https://www.acunetix.com/blog/articles/dns-zone-transfers-axfr/
使用 AXFR 協議的 DNS 區域傳輸是跨 DNS 服務器復制 DNS 記錄的最簡單機制。為避免在多個 DNS 服務器上編輯信息的需要,您可以在一台服務器上編輯信息並使用 AXFR 將信息復制到其他服務器。但是,如果您不保護您的服務器,惡意方可能會使用 AXFR 來獲取有關您所有主機的信息。
AXFR 漏洞和預防
AXFR 不提供身份驗證,因此任何客戶端都可以向 DNS 服務器請求整個區域的副本。這意味着除非引入某種保護,否則攻擊者可以獲得域的所有主機的列表,這為他們提供了許多潛在的攻擊媒介。
為了防止此漏洞發生,應將 DNS 服務器配置為僅允許來自受信任 IP 地址的區域傳輸。以下是如何在 BIND DNS 服務器中完成此操作的示例。
# /etc/named.conf acl trusted-nameservers { 192.168.0.10; //ns2 192.168.1.20; //ns3 };
zone zonetransfer.me { type master; file "zones/zonetransfer.me"; allow-transfer { trusted-nameservers; }; };
DNS 的工作原理
DNS(域名系統)就像一個互聯網電話簿。它負責將人類可讀的主機名解析為機器可讀的 IP 地址。該系統包括提供信息的權威 DNS 服務器和臨時存儲該信息以供客戶端查找的 DNS 緩存。典型的 DNS 查詢非常簡單:客戶端提供一個人類可讀的主機名,並作為響應接收一個 IP 地址。但是,系統假定查詢客戶端知道主機名。
DNS 服務器托管區域。DNS 區域是由 DNS 服務器提供服務的域名空間的一部分。例如,example.com及其所有子域可能是一個區域。但是,second.example.com也可能是一個單獨的區域。
為什么需要 DNS 區域傳輸
DNS 是一項關鍵服務。如果某個區域的 DNS 服務器不工作並且緩存的信息已過期,則所有服務(Web、郵件等)都無法訪問該域。因此,每個區域應該至少有兩個 DNS 服務器。對於更多的關鍵區域,可能會有更多。
但是,區域可能很大並且可能需要頻繁更改。如果您分別在每台服務器上手動編輯區域數據,則需要花費大量時間並且很可能會出錯。這就是需要 DNS 區域傳輸的原因。
您可以使用不同的 DNS 區域傳輸機制,但最簡單的一種是 AXFR(從技術上講,AXFR 是指 DNS 區域傳輸期間使用的協議)。它是客戶端發起的請求。因此,您可以編輯主 DNS 服務器上的信息,然后使用輔助 DNS 服務器上的 AXFR 下載整個區域