Пост канала
- видео
👋 Привет, сетевой друг! Сегодня разберём 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-запросы. 🤖Бесплатный ChatGPT
Открыть в MAX- Просмотры
- 328
- ER
- 1,5%
- Реакции
- 5