localhost w strefie DNS

15

Nasz dostawca usług internetowych obsługuje również nasz zewnętrzny DNS. Domyślnie zawierają one wpis dla localhost.

Na przykład: localhost.example.com. 86400 IN A 127.0.0.1

Kiedy poprosiłem ich o usunięcie, trudno mi powiedzieć, że tak właśnie działa Bind.

Próbowałem przeprowadzić badanie, dlaczego mogę chcieć to uwzględnić, ale nie znalazłem wiele. Znalazłem co najmniej jedno miejsce, które myślało, że to możliwy wektor ataku XSS. Wygląda na to, że jest dość powszechny, więc szukałem w 20 najpopularniejszych domenach witryny z Alexa i większość nie ma takiego wpisu, ale kilka z nich ma. Kilka innych ma wpis, ale zamiast wskazywać na 127.0.0.1, wskazują inny adres IP na świecie.

W każdym razie, dlaczego miałbym chcieć mieć locahost w strefie dla mojej domeny? Czy mają jakieś problemy z jego brakiem? Czy istnieje jakaś najlepsza praktyka dotycząca tego? Czy rzeczywiście jest to domyślna rzecz Bind, której nie jestem świadomy?

Dzięki

Mateusz
źródło
Dobre pytanie. Nigdy wcześniej o tym nie słyszałem.
TomTom,
Mam nawet „sprzężenie zwrotne” w pliku strefy moich dostawców usług internetowych. WTF?
David Tonhofer,

Odpowiedzi:

13

localhost.example.comjest czasem dołączany do wewnętrznych serwerów DNS, aby zapobiec wyciekaniu żądań „localhost” do Internetu (w przypadku, gdy John Smith pisze http://localhost/w przeglądarce i z jakiegokolwiek powodu jego resolver nie szuka w pliku hosts, dołącza swoją ścieżkę wyszukiwania ( example.com) i zaczyna pytać serwery nazw, co to rozwiązuje).

Nie musisz mieć wpisu hosta lokalnego (a jeśli twój dostawca usług internetowych myśli, że „tak działa BIND”, to są oni wprowadzeni w błąd lub idioci: BIND obsługuje to, co jest w pliku strefy, a jeśli usunie localhostwiersz, przestanie to wyświetlać rekord). Jako darmowy przykład, localhost.google.comnie rozwiązuje, i założę się, że NS dla tej domeny działa BIND.

Wektor XSS jest czymś, o czym nigdy nie myślałem, ale budzi niepokój: localhostwpis w publicznym DNS oznacza, że ​​każda zhakowana maszyna może być „w Twojej domenie” (uruchamiając serwer WWW na wersji 127.0.0.1) i potencjalnie wszelkiego rodzaju paskudne rzeczy. Prawdopodobnie wystarczający powód, aby pozbyć się wpisu.

voretaq7
źródło
1
Osobiście uważam, że localhost.some.testjest to kolejna ofiara, która nie ma właściwego zakończenia kropki. Przyczyny posiadania localhost.(zwróć uwagę na kropkę!) Są jasne, ale kropki są często zapominane w strefach DNS. Potem powstało własne tajemnicze życie.
poige
Zobacz tools.ietf.org/html/rfc1537 Typowe błędy konfiguracji pliku danych DNS, które sugerują, że wpis localhost jest poprawny.
BillThor
1
Nie, rfc1537 tego nie określa. Określa, że ​​rekursory muszą mieć hosta lokalnego. strefa i strefa do tyłu. Nigdzie nie jest powiedziane, że twoje strefy wymagają wpisu localhost.
Habbie
@BillThor Komentarze do tej drugiej odpowiedzi odnoszą się do RFC 1537 i jej następcy (RFC 1912) - Jak wspomniał Habbie, strefa localhost. jest czymś, co powinniśmy mieć, ale praktyka posiadania localhost zapisu w każdej obsługiwanej strefie wypadła przysługi. (To pytanie w rzeczywistości doprowadziło mnie do tego, że królicza RFC 5 lat temu, może zaktualizuję moją odpowiedź nowym RFC i przemyślenia z tego wątku komentarza później :))
voretaq7
3

Zakładając, że twoje wewnętrzne rozpoznawanie nazw obsługuje prawidłowe rozpoznawanie nazw, każde żądanie DNS dla localhost nigdy nie powinno być kierowane do zewnętrznego dostawcy DNS, więc nie powinno to stanowić problemu.

Jednym z powodów, dla których ktoś mógłby to zrobić, o czym mogę myśleć od samego początku, jest to, że ktoś kiedyś użył narzędzia do tworzenia stron internetowych, które spieprzyło się z mnóstwem absolutnych odniesień do http: // localhost , ale zakłada, że ​​twój Dostawcy usług hostingowych również hostowali swoje skrzynki DNS i to długa szansa.

Jednak RFC 1537 nie określa:

Odbyła się długa dyskusja na temat tego, czy dołączyć do niej domenę lokalną. Wniosek był taki, że „localhost”. byłoby najlepszym rozwiązaniem; podano przyczyny:

  • Sam „localhost” jest używany i powinien działać na niektórych systemach.

  • przetłumaczenie 127.0.0.1 na „localhost.my_domain” może spowodować, że niektóre oprogramowanie połączy się ze sobą za pomocą interfejsu sprzężenia zwrotnego, gdy nie chce.

Pamiętaj, że wszystkie domeny zawierające hosty powinny mieć rekord „localhost” A w nich.

Mówiąc ściśle, wygląda na to, że Twój dostawca usług internetowych ma prawo do uwzględnienia hosta lokalnego, ale nieprawidłowo używa pełnej nazwy.

Maximus Minimus
źródło
5
Wygląda na to, że RFC-1537 został zdezaktualizowany przez RFC-1912, który usuwa Note that ...język (domyślam się w odpowiedzi na potencjalne problemy z XSS, o których powinniśmy wiedzieć w 1996 roku :) 1537 Wyjaśnia jednak, dlaczego jest to w szablonach BIND.
voretaq7
czy masz na myśli, że powinien być taki wpis w strefie na przykład.com: localhost. 86400 IN A 127.0.0.1; zwróć uwagę na okres
Ew. Mateusza
3
4.1 z 1912 roku jest w rzeczywistości dość wyraźny: ietf.org/rfc/rfc1912.txt
Maximus Minimus
5 lat później, ale warto to wyjaśnić: 4.1 RFC 1912 wyraźnie mówi, że localhost strefa powinna istnieć na serwerze (więc jeśli otrzyma żądanie tylko zwykły „localhost”, nie przekazuje go do następnego serwera), to jest daleko od włączenia się localhostw example.comstrefę powiedzenia (tworzenie localhost.example.com), co jest równie jednoznaczne, mówiąc, że nie powinieneś tego robić z powodu możliwych niezamierzonych efektów ubocznych. Oczekuje się, że „localhost” będzie odrębną, magiczną, w pełni kwalifikowaną domeną.
voretaq7
0

Nie jestem pewien, o co chodzi ... Domyślnie adres zewnętrzny zostałby zastąpiony przez plik hosts, który prawie zawsze mapuje localhost na 127.0.0.1.

Domyślny plik strefy BIND zawiera jednak strefę hosta lokalnego. Nigdy tak naprawdę o tym nie myślałem.

Satanicpuppy
źródło
To nie jest strefa hosta lokalnego (chyba że jest to błędna konfiguracja tej strefy). To także nie jest fqdn „localhost”. i ogólnie nie byłby nadpisywany przez lokalny plik hosts.
Mateusz