localhost в зоне DNS

15

Наш провайдер также размещает наш внешний DNS. По умолчанию они включают запись для localhost.

Например: localhost.example.com. 86400 В 127.0.0.1

Когда я попросил их убрать его, мне было тяжело и сказали, что именно так работает Бинд.

Я пытался провести некоторое исследование того, почему я мог бы хотеть включить это, но я не мог найти много. Я нашел хотя бы одно место, которое считало возможным вектор атаки XSS. Похоже, что это довольно часто, поэтому я просмотрел топ-20 доменов сайта от alexa, и у большинства нет такой записи, но у пары есть. У некоторых других есть запись, но вместо того, чтобы указывать на 127.0.0.1, они указывают на другой IP-адрес с возможностью маршрутизации по всему миру.

Так или иначе, почему я хотел бы иметь locahost в зоне для моего домена? Есть ли у них какие-либо проблемы с отсутствием этого? Есть ли какая-либо лучшая практика по этому поводу? Это действительно Bind вещь по умолчанию, о которой я не знаю?

Благодарность

Мэтью
источник
Хороший вопрос. Я никогда не слышал об этом раньше.
TomTom
У меня есть даже «петля» в файле зоны моих интернет-провайдеров. WTF?
Дэвид Тонхофер

Ответы:

13

localhost.example.comиногда включается на внутренних DNS-серверах для предотвращения утечки запросов «localhost» в Интернет (для случая, когда Джон Смит печатает http://localhost/в своем браузере и по какой-либо причине его распознаватель не просматривает файл hosts, добавляет свой путь поиска ( example.com) & начинает спрашивать серверы имен, к чему это относится).

Вам не нужно иметь запись localhost (и если ваш интернет-провайдер считает, что «так работает BIND», они либо вводят в заблуждение, либо идиотов: BIND обслуживает то, что находится в файле зоны, и если они удаляют localhostстроку, он прекращает обслуживать это запись). Как бесплатный пример, localhost.google.comне разрешается, и я держу пари, что NS для этого домена работает BIND.

Вектор XSS - это то, о чем я никогда не задумывался, но это вызывает беспокойство: наличие localhostзаписи в вашем общедоступном DNS означает, что любой взломанный компьютер может находиться «в вашем домене» (при запуске веб-сервера на 127.0.0.1) и потенциально может всякие гадости Вероятно, это достаточно веская причина, чтобы избавиться от записи.

voretaq7
источник
1
Лично я считаю , что localhost.some.testэто просто еще одна жертва не получает надлежащего точечную окончание. Причина наличия localhost.(обратите внимание на точку!) Ясна, но точки часто забываются в зонах DNS. Затем возникла таинственная жизнь.
poige
См. Tools.ietf.org/html/rfc1537 Распространенные ошибки конфигурации файла данных DNS, которые указывают на правильность записи localhost.
BillThor
1
Нет, rfc1537 не указывает это. Это указывает, что у рекурсоров должен быть локальный хост. зона и зона для реверса. Нигде не говорится, что вашим зонам нужна запись localhost.
Хабби
@BillThor Комментарии к этому другому ответу имеют отношение к RFC 1537 и его преемнику (RFC 1912). Как упоминал Хабби, мы должны иметь зону localhost. , но практика localhost записи в каждой зоне, которую мы обслуживаем, вышла из-под контроля. в пользу. (Этот вопрос фактически привел меня в эту кроличью нору RFC 5 лет назад, возможно, я обновлю свой ответ новыми RFC и мыслями из этой
ветки
3

Предполагая, что ваше внутреннее разрешение имен обрабатывает разрешение имен должным образом, любой DNS-запрос для localhost никогда не должен передаваться вашему внешнему DNS-провайдеру, и это не должно быть проблемой вообще.

Одна из причин, по которой кто-то может сделать это, о чем я могу подумать, это то, что когда-то кто-то использовал инструмент веб-авторинга, который облажался с кучей абсолютных ссылок на http: // localhost , но это предполагает, что ваш Интернет-провайдер также размещал на своих DNS-коробках и это долгий путь.

Однако RFC 1537 действительно определяет:

Широко обсуждается вопрос о том, добавлять ли к нему локальный домен. Был сделан вывод, что "localhost". будет лучшим решением; Приведенные причины были:

  • Сам по себе localhost используется и должен работать на некоторых системах.

  • перевод 127.0.0.1 в "localhost.my_domain" может привести к тому, что какое-то программное обеспечение подключится к самому себе, используя петлевой интерфейс, когда оно этого не хочет.

Обратите внимание, что все домены, которые содержат хосты, должны иметь запись «localhost» A в них.

Строго говоря, кажется, что ваш провайдер правильно включает localhost, но неправильно использовать полное имя.

Максимус Минимус
источник
5
Похоже, что RFC-1537 был устаревшим из-за RFC-1912, который удаляет Note that ...язык (я думаю, в ответ на потенциальные проблемы XSS, о которых мы начали бы знать в 1996 году :) 1537 Объясняет, почему это в шаблонах BIND.
voretaq7
Вы имеете в виду, что в зоне для example.com должна быть запись, например: localhost. 86400 В 127.0.0.1; обратите внимание на период
Матфея
3
4.1 из 1912 года на самом деле довольно явно на это: ietf.org/rfc/rfc1912.txt
Максимус Minimus
Прошло 5 лет, но стоит пояснить: 4.1 RFC 1912 явно указывает, что localhost зона должна существовать на сервере (поэтому, если он получает запрос просто как "localhost", он не передает его по цепочке на следующий сервер), это он далек от включения localhostв скажем example.comзону (создание localhost.example.com), что в равной степени ясно, что вы не должны делать из-за возможных непреднамеренных побочных эффектов Ожидается, что «localhost» станет особой, магической, полностью квалифицированной областью в своем собственном праве.
voretaq7
0

Я не уверен, какой смысл ... По умолчанию внешний адрес будет перезаписан файлом hosts, который почти всегда отображает localhost на 127.0.0.1.

Однако файл зоны BIND по умолчанию включает зону localhost. Никогда не задумывался об этом.

Satanicpuppy
источник
Это не зона локального хоста (если это не неправильная конфигурация этой зоны). Это также не fqdn 'localhost.' и обычно не перезаписывается локальным файлом hosts.
Мэтью