Adresse IP privée dans le DNS public

62

Nous avons un serveur de messagerie SMTP uniquement derrière un pare-feu qui aura un enregistrement public de courrier A. . Le seul moyen d'accéder à ce serveur de messagerie consiste à utiliser un autre serveur protégé par le même pare-feu. Nous n'exécutons pas notre propre serveur DNS privé.

Est-ce une bonne idée d'utiliser l'adresse IP privée en tant qu'enregistrement A sur un serveur DNS public - ou est-il préférable de conserver ces enregistrements de serveur dans le fichier des hôtes locaux de chaque serveur?

Geoff Dalgas
la source

Réponses:

62

Certaines personnes diront qu'aucun enregistrement DNS public ne doit jamais divulguer une adresse IP privée ... en pensant que vous donnez un coup de pouce aux assaillants potentiels pour lui demander des informations pouvant être nécessaires pour exploiter des systèmes privés.

Personnellement, je pense que l’obscurcissement est une forme de sécurité médiocre, en particulier lorsque nous parlons d’adresses IP, car en général elles sont faciles à deviner, alors je ne vois pas cela comme un compromis de sécurité réaliste.

La plus grande considération ici est de s’assurer que vos utilisateurs publics ne récupèrent pas cet enregistrement DNS dans le cadre des services publics normaux de votre application hébergée. C'est-à-dire que les recherches DNS externes commencent en quelque sorte à se résoudre en une adresse à laquelle elles ne peuvent pas accéder.

En dehors de cela, je ne vois aucune raison fondamentale pour laquelle placer des enregistrements d'adresse A privés dans l'espace public pose un problème ... surtout lorsque vous ne disposez d'aucun serveur DNS de remplacement pour les héberger.

Si vous décidez de placer cet enregistrement dans l'espace DNS public, vous pouvez envisager de créer une zone distincte sur le même serveur pour contenir tous les enregistrements "privés". Cela clarifiera le fait qu'ils sont destinés à être privés ... toutefois, pour un seul enregistrement A, je ne m'ennuierai probablement pas.

Tall Jeff
la source
+1, voir le commentaire sur la réponse de Womble pour la raison :)
Mihai Limbăşan
2
Ceci est un bon exemple d'un problème avec cette idée: merit.edu/mail.archives/nanog/2006-09/msg00364.html
sucuri
Ce conseil s'applique-t-il toujours si vous avez des serveurs sensibles avec des adresses IP publiques, mais derrière un pare-feu restreignant l'accès? Si le DNS public pour les adresses IP publiques fournit une feuille de route de l'infrastructure, cette utilisation n'est-elle pas utile à un attaquant? Identification de l'hôte?
Kenny
@Kenny Oui, en théorie, cela a une certaine utilité, mais ce sont des informations qui ne sont pas difficiles à obtenir car la plage d'adresses IP publiques est de toute façon facilement détectable. J'ai en quelque sorte abordé cette question dans la réponse et en ajoutant à cette notion, je dirais que si vous dépendez de la dissimulation d'adresses IP ou de noms d'hôtes en tant que type de ligne de défense matérielle, vous avez déjà des problèmes bien plus importants.
Tall Jeff
1
@Kenny Pour vous, il est certainement souhaitable de minimiser la quantité d'informations pouvant être révélées publiquement et vous ne voudriez pas divulguer quelque chose dont vous n'aviez pas besoin ou du moins que vous n'aviez pas une bonne sorte d'échanges coûts / avantages- hors impliqué pour y réfléchir. Aucun argument là-bas. En dehors de cela, mon argument principal (et je pense que nous sommes d’accord) est simplement que l’obscurcissement est une forme de sécurité médiocre et qu’il n’ya pas de bon / mauvais absolu, mais seulement un continuum de compromis coûts / avantages considéré au cas par cas en fonction de votre tolérance au risque, etc.
Tall Jeff
36

J'ai eu une longue discussion sur ce sujet sur la liste NANOG il y a quelque temps. Même si j'avais toujours pensé que c'était une mauvaise idée, il s'avère que ce n'est pas une si mauvaise idée en pratique. Les difficultés proviennent principalement des recherches rDNS (qui concernent les adresses privées Just Don't Work dans le monde extérieur). Lorsque vous fournissez un accès aux adresses via un VPN ou similaire, il est important de vous assurer que les clients VPN sont correctement protégés. "fuite" du trafic lorsque le VPN est en panne.

Je dis allez-y. Si un attaquant peut obtenir quelque chose de significatif en étant capable de résoudre des noms en adresses internes, vous avez des problèmes de sécurité plus graves.

femme
la source
1
+1, merci d'être une voix de bon sens dans toutes les réponses FUD à cette question. «Risque de sécurité» dans mes régions dorsales inférieures, et voir les problèmes de routage et les problèmes de DNS collés en un réflexe «ne le faites pas», cela me fait me demander quelle est la compétence des utilisateurs de réseaux partout.
Mihai Limbăşan
1
Correction: Assurez-vous que "les problèmes de routage, les problèmes DNS et les problèmes d' authentification / d'identité sont compliqués".
Mihai Limbăşan
8

En général, l’introduction d’adresses RFC1918 dans le DNS public entraînera de la confusion, si ce n’est un problème, dans le futur. Utilisez des adresses IP, des enregistrements d'hôte ou une vue DNS privée de votre zone pour utiliser les adresses RFC1918 situées derrière votre pare-feu sans les inclure dans la vue publique.

Pour clarifier ma réponse sur la base de l'autre réponse soumise, je pense que l'introduction d'adresses RFC1918 dans le DNS public est un faux pas, pas un problème de sécurité. Si quelqu'un m'appelle pour dépanner un problème et que je tombe sur des adresses RFC1918 dans leur DNS, je commence à parler très lentement et à leur demander s'ils ont redémarré récemment. Peut-être que c'est du snobisme de ma part, je ne sais pas. Mais comme je l'ai dit, ce n'est pas une chose nécessaire à faire et c'est susceptible de causer de la confusion et une mauvaise communication (humaine, pas d'ordinateur) à un moment donné. Pourquoi risquer cela?

jj33
la source
1
Quels sont les vrais problèmes? De quelle manière les gens seront-ils confus?
femme
2
Donc, il est ... poli ... de ne pas mettre d'adresses de 1918 dans le DNS public? J'ai rencontré de nombreux problèmes causés par les zones DNS "masquées" et "à horizon divisé", mais pas beaucoup causées par les adresses IP privées dans les DNS publics. Je ne vois tout simplement pas le problème.
femme
2
@womble, les ordinateurs peuvent être perturbés si, pour une raison quelconque, ils tentent de se connecter à cet hôte en dehors de votre réseau et au lieu d'obtenir le serveur SMTP, ils s'attendent à obtenir tout ce qui vivait à cette adresse IP sur le réseau local auquel ils étaient actuellement connectés. Il se pourrait même qu'un membre de votre personnel utilisant un ordinateur portable sur une télécommande puisse commencer à vomir le nom d'utilisateur et le mot de passe en clair sur le réseau de quelqu'un d'autre simplement parce qu'ils ont également un 192.168.1.1
Zoredache
16
Le problème que j'ai avec votre réponse est que vous faites allusion à des problèmes, mais ne fournissez aucun détail. S'il y a des raisons de ne pas le faire, je veux être au courant afin de pouvoir prendre une décision pleinement motivée à ce sujet.
Womble
1
@ Zoredache: Pourquoi quelqu'un résout-il un nom auquel il n'a pas accès? Le DNS n'est pas le seul endroit où vous pouvez obtenir des adresses privées. HTML peut utiliser des littéraux IP, par exemple ...
womble
5

Non, ne mettez pas vos adresses IP privées dans le DNS public.

Premièrement, il fuit des informations, bien que ce soit un problème relativement mineur.

Le pire problème, si vos enregistrements MX pointent vers cette entrée d’hôte particulière, c’est que toute personne qui essaiera d’envoyer du courrier à celle-ci obtiendra au mieux des délais d’expiration.

Selon le logiciel de messagerie de l'expéditeur, ils peuvent recevoir des rebonds.

Pire encore, si vous utilisez un espace d'adressage RFC1918 (ce que vous devriez, à l'intérieur de votre réseau) et que l'expéditeur l'est aussi, il y a toutes les chances qu'ils tentent de remettre le courrier sur leur propre réseau.

Par exemple:

  • le réseau a un serveur de messagerie interne, mais pas de DNS divisé
  • admin met donc les adresses IP publiques et internes dans le DNS
  • et les enregistrements MX indiquent à la fois:

 $ORIGIN example.com
 @        IN   MX    mail.example.com
 mail     IN   A     192.168.1.2
          IN   A     some_public_IP

  • une personne voyant cela pourrait essayer de se connecter à 192.168.1.2
  • dans le meilleur des cas, il rebondit, car ils n'ont pas de route
  • mais s'ils ont aussi un serveur utilisant 192.168.1.2, le courrier ira au mauvais endroit

Oui, c'est une configuration cassée, mais j'ai vu cela (et pire) se produire.

Non, ce n'est pas la faute de DNS, c'est juste ce que l'on dit.

Alnitak
la source
En quoi la distribution du courrier sur la mauvaise machine est-elle un problème DNS? Vous devez authentifier le serveur SMTP. C'est un problème de configuration SMTP qui n'a absolument rien à voir avec DNS. Vous ne comparez même pas des pommes à des oranges ici, vous comparez un toast beurré radioactif à cinq milligrammes de dérivés lagrangiens sur un bâton. Si vous craignez de ne pas obtenir le bon résultat MX ou A, vous devez utiliser DNSSEC au lieu de tenir DNS pour responsable de ce qui ne lui est pas imputable. Si vous distribuez par erreur le protocole SMTP au mauvais numéro RFC1918, vous avez mal configuré ou mal configuré votre réseau.
Mihai Limbăşan
(reposté recommande pour clarification)
Mihai Limbăşan
Si quelqu'un sur votre réseau a "composé" un numéro IP, le protocole IP fonctionne exactement comme il a été conçu, c'est-à-dire sans aucune sécurité. Ce que vous demandez, c'est "comment puis-je avoir confiance que je parle réellement à qui que je sois censé parler?" et la réponse à cela ne peut pas être fournie par IP et / ou par DNS, elle est fournie par DNSSEC et / ou SSL / TLS et / ou un mécanisme de couche application.
Mihai Limbăşan
Lisez simplement votre commentaire sur le message de Dave - votre message a plus de sens maintenant :) Je ne suis toujours pas d'accord avec le principe, mais je ne pense pas que ce soit irrationnel ...
Mihai Limbăşan
2
non, il ne s'agissait pas du tout d'authentification, mais simplement de connexions qui se trouvaient au mauvais endroit. J'en ai vu beaucoup lorsque Verisign a décidé d'utiliser le joker * .com en ~ 2001.
Alnitak
3

Bien que la possibilité soit lointaine, je pense que vous pouvez vous préparer à une attaque de MITM.

Ma préoccupation serait la suivante. Disons qu'un de vos utilisateurs avec un client de messagerie configuré pour pointer vers ce serveur de messagerie emmène leur ordinateur portable vers un autre réseau. Que se passe-t-il si cet autre réseau utilise également le même RFC1918? Cet ordinateur portable peut tenter de se connecter au serveur smtp et offrir les informations d'identification de l'utilisateur à un serveur qui ne devrait pas en disposer. Cela serait particulièrement vrai puisque vous avez dit SMTP et que vous n’avez pas besoin de SSL.

Zoredache
la source
Si l'utilisateur a un ordinateur portable qu'il utilise dans votre bureau ou ailleurs, il est probable qu'il aura configuré son fichier hosts pour qu'il pointe vers l'adresse IP interne du MTA ou l'utilise directement dans sa configuration MUA. Même résultat final. Apportez IPv6 et le décès de RFC1918, c’est le seul moyen d’être sûr ...
womble
Excellent point Zoredache. C'est un vecteur d'attaque intéressant. Selon la MUA, la boîte de dialogue "Quelque chose d'ennuyeux peut arriver", cliquez dessus pour que vous fassiez ce que vous voulez faire en premier lieu ", ou elle pourrait échouer si le certificat SSL ne correspond pas.
Dave Cheney
Ce scénario d'attaque est-il effectivement éliminé si tous les serveurs (à savoir Web / HTTPS, IMAP et SMTP) du réseau valide nécessitent des connexions client basées sur SSL / TLS?
Johnny Utahh le
@JohnnyUtahh, vous avez besoin de la prise en charge de TLS par tous les serveurs, avec des certificats valides, ainsi que de la configuration de tous les clients pour vérifier les certificats et ne jamais essayer une connexion non-TLS. Ce qui est un défaut plus courant maintenant, il y a 10 ans Mais il existe encore des logiciels anciens / stupides qui pourraient essayer des connexions non-TLS.
Zoredache
Oui, tout est logique, merci @Zoredache.
Johnny Utahh le
3

Vos deux options sont / etc / hosts et l’enregistrement d’une adresse IP privée dans votre zone publique. Je recommanderais l'ancien. Si cela représente un grand nombre d'hôtes, vous devriez envisager d'exécuter votre propre résolveur en interne, ce n'est pas si difficile.

Dave Cheney
la source
1
C'est certainement une option, mais pourquoi? Qu'est-ce que l'utilisation d'un résolveur interne ou (beaucoup plus intelligent) à l'aide de quelque chose comme les vues BIND vous fait gagner à côté des frais généraux d'administration et des tâches de maintenance? C'est ce que je ne comprends pas.
Mihai Limbăşan
1
Faire fonctionner votre propre serveur de noms n’est pas sorcier. Si votre réseau est d'une taille suffisante pour que vous considériez utiliser / etc / hosts comme un hack ou une perte de temps, vous devez configurer une paire de résolveurs dans votre réseau. De plus, vous réduisez le volume de trafic DNS sortant de votre réseau et accélérez la résolution des requêtes courantes.
Dave Cheney
3
Je sais que ce n’est pas sorcier, mais c’est un coût d’entretien et un risque potentiel pour la sécurité. Certainement un risque de sécurité plus élevé que de fuir l'existence d'un réseau RFC1918. Le trafic DNS est totalement négligeable - j'héberge plus de 80 fichiers de zone moyennement volumineux et occupés sur mon DNS au travail et le trafic DNS hebdomadaire correspond à moins de 2 minutes de Youtube. L'accélération de la résolution des requêtes est en fait le premier argument sain d'esprit à mi-chemin contre les numéros RFC1918 dans le DNS que j'ai vus ici :) Je suis invitée à voter pour penser un peu au-delà du réflexe habituel "Oh, non, c'est un risque pour la sécurité": :)
Mihai Limbăşan
1
@Alnitak: Je comprends votre point de vue, mais ce n'est toujours pas un problème de DNS, et je maintiens qu'essayer de résoudre les problèmes provenant ailleurs du DNS n'est pas une bonne idée du tout. Les problèmes doivent être résolus à la source et non pas corrigés par des hacks DNS - les hacks fragilisent les réseaux.
Mihai Limbăşan
2
oui, je suis d'accord. Et mettre les informations de votre hôte privé dans le DNS public est une solution de piratage pour le problème de l'absence d'un serveur DNS interne ... :) Le problème est que les couches supérieures ne savent pas que ces informations sont supposées être "privées". .
Alnitak
2

Il peut y avoir des problèmes subtils avec cela. L'une d'elles est que les solutions courantes aux attaques DNS Rebind filtrent les entrées DNS locales résolues à partir de serveurs DNS publics. Donc, soit vous vous ouvrez vous-même pour relier des attaques, soit les adresses locales ne fonctionnent pas, soit avez besoin d'une configuration plus sophistiquée (si votre logiciel / routeur le permet même).

Nikola Toshev
la source
+1 la reliure DNS est mauvaise !! medium.com/@brannondorsey/…
Ohad Schneider
1

Il est préférable de le conserver dans le fichier hosts. Si de toute façon une seule machine est supposée s'y connecter, que gagnez-vous en la mettant dans le DNS public?

sh-beta
la source
En travaillant dans le cloud, vous pourriez avoir des milliers de machines privées. Il y a quelques années, Netflix avait déclaré avoir plus de 2 000 nœuds Cassandra. Ce n’est pas pratique d’utiliser le /etc/hostsfichier car les 2 000 machines doivent ensuite gérer ces paires nom / adresse ...
Alexis Wilke
1

Si par privé vous entendez un 10.0.0.0/8, un 192.168.0.0/16 ou un 172.16.0.0/12, alors ne le faites pas . La plupart des routeurs Internet le reconnaissent comme tel: une adresse privée qui ne doit jamais être routée directement vers l'internet public , ce qui a contribué à la popularité du NAT. Toute personne tentant de contacter votre serveur DNS public récupérera l'adresse IP privée du DNS, uniquement pour envoyer un paquet à ... nulle part. Tandis que leur connexion tente de traverser Internet vers votre adresse privée, certains routeurs (configurés de manière intelligente) le long du chemin mangent simplement le paquet en vie.

Si vous voulez que le courrier "extérieur" reçoive un courrier électronique, le paquet doit à un moment donné traverser votre pare-feu. Je suggérerais de configurer une adresse DMZ pour gérer cela - une adresse IP publique unique, étroitement contrôlée par tout routeur / pare-feu en place. La configuration existante que vous décrivez ressemble exactement à cela.

EDIT: clarification de l'intention ... (voir commentaires ci-dessous). Si cela n’a aucun sens, je voterai pour supprimer mon propre message.

Avery Payne
la source
3
Tout cela est beau et vrai, mais vous n'avez pas expliqué pourquoi on ne devrait pas publier les adresses RFC1918 dans le DNS. Vous venez de décrire les adresses RFC1918 et il est possible de ne pas avoir d'itinéraire vers certaines d'entre elles. En quoi est-ce différent de tout autre numéro IP? Il est possible de ne pas avoir d'itinéraire vers 198.41.0.4 - cela signifie-t-il qu'il est faux de publier 198.41.0.4 dans le DNS? Le DNS est un système de résolution de noms . Cela n'a rien à voir avec le routage, les deux sont orthogonaux. Vous associez deux catégories de problèmes, ce qui revient essentiellement à un FUD.
Mihai Limbăşan
1
Le contexte de la discussion était l’utilisation d’adresses IP privées dans un serveur DNS public . Le but de la publication était d'indiquer que, par défaut, les routeurs ne doivent pas router les adresses IP privées. Je n'essayais pas d'indiquer que vous ne pouvez pas utiliser d'adresses IP privées sur un serveur DNS, mais seulement que vous ne devriez pas fournir ces adresses IP "à l'extérieur". Si cela n’est pas assez clair, je retirerai volontiers le message. Sinon, je suis en désaccord, la publication est 100% spot-on - l'effet net pour cette personne est que / ils auront des problèmes / s'ils le font.
Avery Payne
hoche la tête Votre commentaire sous le message d'Alnitak l'a éclairci :) Merci.
Mihai Limbăşan
"Toute personne tentant de contacter votre serveur DNS public récupérera l'adresse IP privée du DNS, uniquement pour envoyer un paquet à ... nulle part" - non, vous venez de décrire la ré-association de DNS et cela fonctionne sur certains des routeurs les plus sécurisés y compris mon PepWave Surf SOHO: rebind.network/rebind
Ohad Schneider
0

Je suis arrivé ici alors que je cherchais des informations similaires et j'ai été surpris de constater que beaucoup disent qu'il est acceptable de divulguer vos adresses IP privées. Je suppose qu'en termes de piratage, cela ne fait pas une différence énorme si vous êtes sur un réseau sécurisé. Cependant, DigitalOcean a eu tout le trafic réseau local sur les mêmes câbles avec tout le monde ayant vraiment accès au trafic de tout le monde (probablement faisable avec une attaque Man in the Middle). Les informations vous permettent certainement de faire un pas de plus vers le piratage de mon trafic. (Chaque client dispose désormais de son propre réseau privé réservé, à l'instar d'autres services de cloud computing tels qu'AWS.)

Cela dit, avec votre propre service BIND9, vous pouvez facilement définir vos adresses IP publiques et privées. Ceci est fait en utilisant la viewfonctionnalité, qui inclut un conditionnel. Cela vous permet d'interroger un DNS et d'obtenir une réponse sur les adresses IP internes uniquement si vous le demandez à votre propre adresse IP interne.

La configuration nécessite deux zones. La sélection utilise le match-clients. Voici un exemple d'installation à partir d' un serveur DNS deux-en-un avec BIND9 :

acl slaves {
    195.234.42.0/24;    // XName
    193.218.105.144/28; // XName
    193.24.212.232/29;  // XName
};

acl internals {
    127.0.0.0/8;
    10.0.0.0/24;
};

view "internal" {
    match-clients { internals; };
    recursion yes;
    zone "example.com" {
        type master;
        file "/etc/bind/internals/db.example.com";
    };
};
view "external" {
    match-clients { any; };
    recursion no;
    zone "example.com" {
        type master;
        file "/etc/bind/externals/db.example.com";
        allow-transfer { slaves; };
    };
};

Voici la zone externe et nous pouvons voir que les adresses IP ne sont pas privées

; example.com
$TTL    604800
@       IN      SOA     ns1.example.com. root.example.com. (
                     2006020201 ; Serial
                         604800 ; Refresh
                          86400 ; Retry
                        2419200 ; Expire
                         604800); Negative Cache TTL
;
@       IN      NS      ns1
        IN      MX      10 mail
        IN      A       192.0.2.1
ns1     IN      A       192.0.2.1
mail    IN      A       192.0.2.128 ; We have our mail server somewhere else.
www     IN      A       192.0.2.1
client1 IN      A       192.0.2.201 ; We connect to client1 very often.

En ce qui concerne la zone interne, nous incluons d’abord la zone externe, ce qui en fait le fonctionnement. c'est-à-dire que si vous êtes un ordinateur interne, vous accédez uniquement à la zone interne, vous avez donc toujours besoin des définitions de zone externe, d'où la $includecommande:

$include "/etc/bind/external/db.example.com"
@       IN      A       10.0.0.1
boss    IN      A       10.0.0.100
printer IN      A       10.0.0.101
scrtry  IN      A       10.0.0.102
sip01   IN      A       10.0.0.201
lab     IN      A       10.0.0.103

Enfin, vous devez vous assurer que tous vos ordinateurs utilisent maintenant ce DNS et ses esclaves. En supposant un réseau statique, cela signifierait éditer votre /etc/network/interfacesfichier et utiliser vos adresses IP DNS dans l' nameserveroption. Quelque chose comme ça:

iface eth0 inet static
    ...
    nameserver 10.0.0.1 10.0.0.103 ...

Maintenant, vous devriez être tous ensemble.

Alexis Wilke
la source