Si j'ai plusieurs hôtes configurés sur une machine (a la VirtualHosts d'Apache), comment puis-je faire une recherche sur l'IP et trouver tous les domaines configurés pour y accéder?
Par exemple, j'ai plusieurs domaines Web et de messagerie connectés à mon serveur. Comment trouver tous les domaines qui pointent vers celui-ci?
Est-ce même possible?
J'ai des entrées DNS A pour tous les domaines que je possède, et je sais que les domaines de certains amis pointent vers mon serveur. Ce que j'aimerais voir, c'est si les gens que je ne sais pas connaissent pointent là aussi. (Ou si quelqu'un a rejoint le domaine ailleurs et que je peux supprimer son "ancien" site Web de mon serveur.)
Non, pas vraiment. Il s'agit de la différence entre les recherches DNS directes et inverses.
Une recherche directe est la recherche standard de nom-> IP. Il faudrait donc connaître tous les noms à l'avance.
Ce que vous voulez, c'est faire une recherche de nom IP->, mais obtenir en quelque sorte tous les noms que vous avez appliqués dans votre configuration Apache et dans DNS en tant qu'enregistrements A (ou CNAMES ou autre).
Ce que vous trouverez probablement, c'est que faire une recherche inversée (par exemple Dig @nameserver $ ip -x) retournera le nom d'hôte donné à cette IP par les personnes qui possèdent ce netblock, qui pourrait être votre FAI. Il pourrait avoir un nom comme 45-23-45-231.big-isp.com, ce qui ne signifie pas grand-chose pour vous. Et surtout, il n'y a qu'un seul enregistrement inversé, mais potentiellement de nombreux enregistrements avant.
Je suppose que cela se résume à la question - comment la zone inverse connaît-elle l'un des enregistrements de la zone avant? Dans la plupart des configurations, la zone directe est mise à la disposition du client pour y apporter des modifications, mais la zone inverse est gérée par les propriétaires du netblock. Les deux systèmes n'ont pas besoin de se connaître pour fonctionner.
Il n'est pas possible de le faire avec le protocole DNS lui-même, car il n'y a généralement qu'un seul enregistrement PTR
pour chaque adresse IP, même s'il peut y avoir plusieurs enregistrements A
pointant sur cette adresse IP.
Cependant, certaines entreprises (par exemple http://www.ip-adress.com/ ) ont réussi à compiler des bases de données contenant ce que vous recherchez en stockant les résultats de toute une série de recherches DNS, puis en proposant une requête inversée dans leurs propres bases de données.
Ces bases de données ne peuvent cependant pas être définitives, elles ne peuvent pas garantir de connaître tous les domaines possibles qui pourraient se diriger vers cette IP - ils ne peuvent que enregistrer les détails DNS pour les noms de domaine qu'ils ont réellement recherchés.
La seule façon de procéder consiste à disposer des données de contenu du nom de domaine que vous souhaitez inspecter.
Avec ce contenu, vous pouvez développer un script récursif pour rechercher le nom d'hôte par rapport à votre IP (récursif en raison de l'éventuel CNAME à vérifier).
Pour obtenir les données d'un partenaire de nom de domaine, vous pouvez demander à être secondaire et obtenir des DONNÉES avec un Dig -t axfr.
Je pense que vous arrivez dans la mauvaise direction. Mis à part a) interroger chaque serveur DNS existant pour chaque nom de domaine possible puis stocker le résultat ou b) obtenir des transferts de zone à partir des serveurs DNS qui vous intéressent, il n'y a aucun moyen de le faire avec DNS.
Eh bien, si vous exécutez des vhosts basés sur le nom Apache, vous disposez déjà d'une liste de domaines qui atteindront votre serveur. Mis à part le vhost par défaut, un vhost basé sur un nom ne répondra que pour son nom. Donc, si je pointe foobar.com vers ma boîte et que je n'ai pas d'hôte foobar.com, il sera soit servi par défaut, soit ne recevra pas de réponse (si vous n'avez pas de serveur par défaut).
Apache possède des fonctionnalités de journalisation très puissantes. La définition d'un format de journal personnalisé avec les lignes de demande que vous souhaitez ne devrait pas poser de problème. De plus, il y a toujours le champ référent.
Le courrier, en revanche, est un peu plus pénible. La meilleure chose à laquelle je peux penser est de choisir ce que vous pouvez dans les journaux du serveur et, si vous dois savoir, configurez une capture de paquets pour SMTP.
Vous devriez vérifier RobTex Pas la meilleure conception de sites Web, mais très utile! Vous pouvez découvrir tous les DNS associés à une IP.
Bien sûr, comme l'a expliqué Alnitak,
Il n'est pas possible de le faire avec le protocole DNS lui-même
Cela signifie que ce site Web n'est qu'une énorme base de données de la plupart des serveurs DNS/IP. C'est assez efficace mais pas à 100% exhaustif.