Кешируется ли рекурсивный преобразователь IP-адреса авторитетного сервера имен из записи Glue?
Сервер имен для домена верхнего уровня включает клей вместе с делегированием для доменного имени.
Теперь, кэширует ли рекурсивный преобразователь эту запись A / AAAA (связующую запись)? Я знаю, что кеширование применяется только в том случае, если ответ пришел от «авторитетного» сервера имен, но здесь сервер имен TLD дополнительно делегирует и не может считаться авторитетным.
Или
Предоставляет ли авторитетный сервер имен также свой собственный IP-адрес в виде записи A (вместе с записью A домена), и именно это кэширует рекурсивный преобразователь?
Обычно клейкие записи не даются как авторитетные ответы, что вы можете заметить, если посмотрите на флаги (наличие или отсутствие aa
Авторитетный ответ; RFC 1035, 4.1.1) например из следующих запросов:
Авторитетный по отношению к родителю:
dig com NS @f.gtld-servers.net
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27
Снятие контроля. Оба дают клей в дополнительный раздел.
dig google.com NS @f.gtld-servers.net
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 9
dig ns1.google.com A @f.gtld-servers.net
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 9
Авторитетные ответы авторитетного сервера:
dig google.com NS @ns1.google.com
;; flags: qr aa rd; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 9
dig ns1.google.com A @ns1.google.com
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
Базовый алгоритм от RFC 1034, 5.3.3 кэширует большую часть данных ответа; только неудачи и другое странное содержание (d) игнорируются (выделено мной):
а. если ответ отвечает на вопрос или содержит ошибку имени, кешируйте данные а также вернуть его клиенту.
б. если ответ содержит лучшее делегирование другим серверам, кэшировать информацию о делегированиии перейдите к шагу 2.
c. если ответ показывает CNAME, и это не сам ответ, кешировать CNAME, измените SNAME на каноническое имя в CNAME RR и перейдите к шагу 1.
d. если ответ показывает сбой серверов или другое странное содержимое, удалите сервер из SLIST и вернитесь к шагу 3.
В RFC также упоминается, что в некоторых реализациях может быть возможность заставить преобразователь игнорировать кэшированные данные и обращаться к авторитетному серверу. Что происходит на самом деле, зависит от реализации. В соответствии с Как DNS убивает Интернет от Kudelski Security Research:
Помимо ошибок, которые могут привести к непреднамеренным ложным срабатываниям, кеш-отравление (см. Уязвимость DNS Дэна Камински 2008 г. и Автостопом по отравлению кеша DNS) необходимо принять во внимание. Многие реализации кэша DNS кэшируют связующие записи как обычные записи, поэтому DNS-сервер может предоставить злонамеренный ответ и, как следствие, иметь неправильную запись в кеше.
Например:
evil.com. IN NS ns.company.com. ns.company.com. IN A 6.6.6.6
В то время как законный сервер говорит
company.com. IN NS ns.company.com. ns.company.com. IN A 1.2.3.4
Таким образом, неправильный IP-адрес останется в кеше на время существования записи. Чтобы избежать этой проблемы, большинство реализаций кэширующего преобразователя не доверяют и игнорируют необязательные связующие записи для NS-записей вне bailiwick и, таким образом, игнорируют
ns.company.com. IN A 6.6.6.6
в примере выше. Примечание для администратора DNS: рекомендуется иметь только внутренние записи.
Независимо от того, является ли ответ авторитетным или нет, само по себе не является индикатором того, следует ли кэшировать записи или нет:
Серверы имен верхнего уровня являются частью той же структуры авторитетных серверов имен. Следовательно, поскольку они делегируют управление своими поддоменами, то есть в конечном итоге могут контролировать, кто может авторитетно отвечать, им следует доверять и они заслуживают доверия. Обычно связующие записи должны соответствовать записям в самой зоне, а все остальное будет ошибкой конфигурации в соответствии с IANA. Технические требования к авторитетным серверам имен:
Согласованность между клейкими и авторитетными данными
Для серверов имен, IP-адреса которых указаны в качестве связующего, IP-адреса должны соответствовать официальным записям A и AAAA для этого хоста.
Согласованность между делегированием и зоной
Набор NS-записей, обслуживаемых официальными серверами имен, должен совпадать с предложенным для делегирования в родительской зоне.
Не каждый рекурсивный сервер начинает разрешать имя с корневых серверов имен, но есть и более сложные рекурсивные инфраструктуры. Резолвер может иметь экспедиторы, другие рекурсивные серверы имен, которые они запрашивают вместо авторитетных серверов имен. Эти ответы никогда не являются авторитетными, но всегда кэшируются.
В сценариях отравления кеша DNS злоумышленником является не какой-либо из авторитетных серверов имен, а ложный ответ, полученный из надежного источника, будь то авторитетный сервер имен или сервер пересылки. Поскольку DNS использует UDP, подделать ответы проще. Против этого есть несколько решений:
Максимальный размер ответа UDP. Если ответ больше, чем один пакет UDP, DNS использует TCP. Имея дополнительный раздел, ответ, содержащий связующие записи, легко выходит за эту границу. TCP-соединения не так легко подделать, поскольку для этого потребуется позиция MitM.
Проверка DNSSEC. Поддельный ответ не может иметь совпадающих подписей DNSSEC для своих записей, поэтому они не будут кэшироваться.
Зашифрованный DNS. Есть два стандарта: DNS over TLS (RFC 7858) и DNS через HTTPS (RFC 8484).