Knowledge Base

DNS Zone Transfer (AXFR) — открытая передача зоны

DNS Zone Transfer (AXFR) — открытая передача зоны

Категория: DNS Security · Риск: high

DNS Zone Transfer (AXFR) — открытая передача зоны

Что это такое

DNS Zone Transfer (тип запроса AXFR) — механизм репликации DNS-зоны между серверами. Первичный (primary) NS-сервер передаёт вторичному (secondary) полный список всех DNS-записей домена.

Если сервер не ограничивает список адресов, которым разрешена передача зоны, **любой пользователь интернета** может запросить AXFR и получить полный реестр всех поддоменов, IP-адресов, почтовых серверов и служебных записей домена.

Почему это опасно

Получив список всех поддоменов, атакующий:

# Пример уязвимого запроса
dig AXFR example.com @ns1.example.com

# Вывод при уязвимости:
; <<>> DiG 9.18 <<>> AXFR example.com @ns1.example.com
example.com.     3600 IN  SOA    ns1.example.com. ...
example.com.     3600 IN  A      1.2.3.4
www.example.com. 3600 IN  A      1.2.3.4
admin.example.com. 3600 IN A     1.2.3.4
vpn.example.com. 3600 IN  A      5.6.7.8
staging.example.com. 300 IN A   192.168.1.10   ← внутренний адрес утёк
...

Как проверить

# Получить список NS-серверов
dig NS example.com +short

# Попытаться запросить AXFR у каждого
dig AXFR example.com @ns1.example.com
dig AXFR example.com @ns2.example.com

# Безопасный результат:
# ; Transfer failed.
# или
# ; REFUSED

Как исправить

BIND 9

// /etc/bind/named.conf.local
zone "example.com" {
    type primary;
    file "/etc/bind/db.example.com";

    // Только вторичным NS — по IP
    allow-transfer { 5.6.7.8; };   // IP вашего secondary NS
    // Или запрет всем:
    // allow-transfer { none; };
};

PowerDNS

# /etc/powerdns/pdns.conf
allow-axfr-ips=5.6.7.8/32   # только secondary NS

Cloudflare / управляемые DNS-провайдеры

Все управляемые DNS-провайдеры (Cloudflare, Route53, Яндекс.360) **по умолчанию** блокируют AXFR от посторонних. Уязвимость актуальна только при использовании собственного BIND/PowerDNS.

Дополнительная защита

  allow-transfer { key secondary-key; };

Связанные проверки