localhost dans une zone DNS

15

Notre FAI héberge également notre DNS externe. Par défaut, ils incluent une entrée pour localhost.

Par exemple: localhost.example.com. 86400 DANS UN 127.0.0.1

Quand je leur ai demandé de le retirer, ils me donnent du fil à retordre et disent que c'est juste la façon dont Bind fonctionne.

J'ai essayé de faire des recherches sur les raisons pour lesquelles je pourrais vouloir inclure cela, mais je n'ai pas trouvé grand-chose. J'ai trouvé au moins un endroit qui pensait que c'était un vecteur d'attaque XSS possible. Cela semble être assez courant, j'ai donc effectué des recherches sur les 20 principaux domaines de sites Web d'Alexa et la plupart n'ont pas une telle entrée, mais quelques-uns en ont. Quelques autres ont une entrée, mais au lieu de pointer vers 127.0.0.1, ils pointent vers une autre une adresse IP à itinéraire mondial.

Alors, pourquoi voudrais-je avoir locahost dans la zone de mon domaine? Leurs problèmes sont-ils de ne pas l'avoir? Existe-t-il une sorte de meilleure pratique à ce sujet? Est-ce en effet une chose Bind par défaut que je ne connais pas?

Merci

Matthieu
la source
Bonne question. Je n'en ai jamais entendu parler auparavant.
TomTom
J'ai même un "bouclage" dans mon fichier de zone FAI. WTF?
David Tonhofer

Réponses:

13

localhost.example.comest parfois inclus sur les serveurs DNS internes pour empêcher les requêtes "localhost" de fuir sur Internet (dans le cas où John Smith tape http://localhost/dans son navigateur et pour une raison quelconque son résolveur ne regarde pas dans le fichier hosts, ajoute son chemin de recherche ( example.com) & commence à demander aux serveurs de noms ce que cela résout).

Vous n'avez pas besoin d'avoir une entrée localhost (et si votre FAI pense que c'est "la façon dont BIND fonctionne", il est soit erroné, soit idiot: BIND sert ce qui se trouve dans le fichier de zone, et s'il supprime la localhostligne, il cessera de la servir. record). À titre d'exemple gratuit, localhost.google.comne résout pas, et je parie que le NS pour ce domaine exécute BIND.

Je n'avais jamais pensé au vecteur XSS, mais c'est quelque chose de préoccupant: avoir une localhostentrée dans votre DNS public signifie que n'importe quelle machine piratée pourrait être "dans votre domaine" (en exécutant un serveur Web sur 127.0.0.1) et potentiellement le faire toutes sortes de choses désagréables. Probablement une raison suffisante pour se débarrasser de l'entrée.

voretaq7
la source
1
Personnellement, je pense que localhost.some.testc'est juste une autre victime de ne pas obtenir une fin de point correcte. Le raisonnement derrière avoir localhost.(notez le point!) Est clair, mais les points sont souvent oubliés dans les zones DNS. Puis il a eu sa propre vie mystérieuse.
poige
Voir tools.ietf.org/html/rfc1537 Erreurs courantes de configuration du fichier de données DNS qui suggèrent que l'entrée localhost est correcte.
BillThor
1
Non, rfc1537 ne le précise pas. Il spécifie que les récurseurs doivent avoir un hôte local. zone et une zone pour l'inverse. Nulle part cela ne dit que vos zones ont besoin d'une entrée d'hôte local.
Habbie
@BillThor Les commentaires sur cette autre réponse concernent la RFC 1537 et son successeur (RFC 1912) - Comme Habbie l'a mentionné, la zone localhost. est quelque chose que nous sommes censés avoir, mais la pratique d'avoir un localhost enregistrement dans chaque zone que nous servons est tombée de faveur. (Cette question m'a en fait conduit dans le trou du lapin RFC il y a 5 ans, peut-être que je mettrai à jour ma réponse avec le nouveau RFC et les pensées de ce fil de commentaire plus tard :))
voretaq7
3

En supposant que votre résolution de noms interne gère correctement la résolution de noms, toute demande DNS pour localhost ne doit jamais être envoyée à votre fournisseur DNS externe, et cela ne devrait donc pas du tout être un problème.

Une raison pour laquelle quelqu'un ferait cela, à laquelle je peux penser du haut de ma tête, est si quelqu'un a déjà utilisé un outil de création Web qui a foiré avec une charge de références absolues à http: // localhost , mais cela suppose que votre Le FAI hébergeait également sur leurs boîtiers DNS et est un plan à long terme.

Cependant, la RFC 1537 ne précise:

Il y a eu une discussion approfondie sur l'opportunité d'y ajouter ou non le domaine local. La conclusion était que «localhost». serait la meilleure solution; les raisons invoquées étaient les suivantes:

  • "localhost" lui-même est utilisé et devrait fonctionner sur certains systèmes.

  • la traduction de 127.0.0.1 en "localhost.my_domain" peut amener certains logiciels à se connecter à eux-mêmes à l'aide de l'interface de bouclage lorsqu'ils ne le souhaitent pas.

Notez que tous les domaines qui contiennent des hôtes doivent avoir un enregistrement A "localhost".

Donc, à strictement parler, il semble que votre fournisseur de services Internet soit correct pour inclure localhost, mais incorrect pour utiliser le nom complet.

Maximus Minimus
la source
5
On dirait que la RFC-1537 a été obsolète par la RFC-1912 qui supprime le Note that ...langage (je suppose qu'en réponse aux problèmes XSS potentiels dont nous aurions commencé à être conscients en 1996 :) 1537 Explique cependant pourquoi il est dans les modèles BIND.
voretaq7
voulez-vous dire qu'il devrait y avoir une entrée comme celle-ci dans la zone par exemple.com: localhost. 86400 DANS UN 127.0.0.1; noter la période
matthew
3
4.1 de 1912 est en fait assez explicite: ietf.org/rfc/rfc1912.txt
Maximus Minimus
5 ans après, mais mérite d'être clarifié: 4.1 de la RFC 1912 est explicite que la localhost zone doit exister sur le serveur (donc si elle obtient une requête simplement "localhost", elle ne la transmet pas en amont au serveur suivant), c'est un loin de l'inclure localhostdans example.comla zone de say (création localhost.example.com), ce qui est tout aussi explicite en disant que vous ne devriez pas le faire en raison d'effets secondaires involontaires possibles. On s'attend à ce que «localhost» soit un domaine spécial, magique et pleinement qualifié à part entière.
voretaq7
0

Je ne sais pas quel serait le point ... Par défaut, l'adresse externe serait écrasée par le fichier hosts, qui mappe presque toujours localhost à 127.0.0.1.

Un fichier de zone BIND par défaut comprend cependant une zone localhost. Je n'y ai jamais vraiment pensé.

Satanicpuppy
la source
Ce n'est pas la zone localhost (sauf si c'est une mauvaise configuration de cette zone). Ce n'est pas non plus le «localhost» du fqdn. et ne serait généralement pas écrasé par le fichier des hôtes locaux.
matthew