Серверная Админа | Компьютерные сети: post #2855 — TG.ME

👋 Привет, сетевой друг!

Сегодня разберём DNS zone transfer - когда AXFR открыт всем и как это закрыть.

🟣Что такое zone transfer: механизм репликации DNS-зоны между primary и secondary серверами. Primary отдаёт полный список всех записей зоны через AXFR-запрос. Нужен для синхронизации - secondary получает актуальную копию и отвечает на запросы клиентов.

🟣Проблема такая: если AXFR не ограничен по IP, любой может запросить полный дамп зоны и получить карту всей инфраструктуры - все поддомены, внутренние серверы, почтовые хосты, служебные записи:

# Проверяем открыт ли AXFR
dig axfr example.com @ns1.example.com

# Если в ответе идут все записи зоны - проблема есть
# Нормальный ответ: Transfer failed или REFUSED


🟣Диагностируем: смотрим текущие настройки на BIND:

# Проверяем конфиг
named-checkconf /etc/bind/named.conf

# Смотрим логи запросов на transfer
grep "transfer" /var/log/named/named.log
grep "AXFR" /var/log/named/queries.log


🟣Закрываем AXFR в BIND: разрешаем только secondary серверам:

# /etc/bind/named.conf.options
options {
allow-transfer { none; }; # глобально запрещаем
};

# /etc/bind/named.conf.local
zone "example.com" {
type primary;
file "/etc/bind/zones/example.com.db";
allow-transfer {
192.168.1.2; # только наш secondary
key "transfer-key"; # или через TSIG-ключ
};
notify yes;
};


🟣Надёжнее: TSIG-аутентификация для zone transfer: IP-адрес можно подделать, TSIG-ключ нет:

# Генерируем ключ
tsig-keygen -a hmac-sha256 transfer-key > /etc/bind/transfer.key

# Подключаем в конфиг
include "/etc/bind/transfer.key";

zone "example.com" {
allow-transfer { key "transfer-key"; };
};


На secondary прописываем тот же ключ и используем его при запросе зоны.

🟣Проверяем что закрыли правильно:

# С посторонней машины
dig axfr example.com @ns1.example.com
# Должно вернуть: Transfer failed

# С авторизованного secondary
dig axfr example.com @ns1.example.com -k transfer.key
# Должно вернуть полную зону


🟣Дополнительно ограничиваем NOTIFY только на легитимные secondary:

zone "example.com" {
also-notify { 192.168.1.2; };
allow-notify { 192.168.1.1; }; # кто может уведомлять нас
};


Без этого атакующий может отправить поддельный NOTIFY и спровоцировать unnecessary transfer-запросы.

Серверная Админа | Бункер Хакера | #DNS #networking
✍8
August 28, 2026 1.5K 25