83 votes

Adresse IP privée dans le DNS public

Nous avons un serveur de messagerie uniquement SMTP derrière un pare-feu qui aura un enregistrement A public de la messagerie. . Le seul moyen d'accéder à ce serveur de messagerie est de passer par un autre serveur situé derrière le même pare-feu. Nous ne gérons pas notre propre serveur DNS privé.

Est-ce une bonne idée d'utiliser l'adresse IP privée comme un enregistrement A dans un serveur DNS public - ou est-il préférable de conserver ces enregistrements dans le fichier hosts local de chaque serveur ?

3voto

Joey deVilla Points 4487

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

Tout d'abord, il y a des fuites d'informations, même si c'est un problème relativement mineur.

Le problème le plus grave, si vos enregistrements MX pointent vers cette entrée d'hôte particulière, est que toute personne qui essaie d'envoyer du courrier à cette entrée obtiendra au mieux des délais de livraison du courrier.

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

Pire encore, si vous utilisez l'espace d'adressage RFC1918 (ce que vous devriez faire, à l'intérieur de votre réseau) et que l'expéditeur le fait aussi, il y a toutes les chances qu'il essaie de distribuer le courrier sur son propre réseau à la place.

Par exemple :

  • Le réseau possède un serveur de messagerie interne, mais pas de DNS partagé.
  • L'administrateur place donc les adresses IP publiques et internes dans le DNS.
  • et les enregistrements MX pointent vers les deux :

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

  • quelqu'un qui voit ça pourrait essayer de se connecter à 192.168.1.2
  • Dans le meilleur des cas, il rebondit, parce qu'ils n'ont pas d'itinéraire.
  • mais s'ils ont aussi un serveur utilisant 192.168.1.2, le courrier sera envoyé 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, il fait juste ce qu'on lui dit de faire.

3voto

Nikola Toshev Points 31

Il peut y avoir des problèmes subtils. L'un d'eux est que les solutions courantes aux attaques par rebond DNS filtrent les entrées DNS locales résolues à partir de serveurs DNS publics. Ainsi, soit vous vous exposez à des attaques par rebind, soit les adresses locales ne fonctionnent pas, soit elles nécessitent une configuration plus sophistiquée (si votre logiciel/routeur le permet).

1voto

Jeff Thomas Points 183

Si vous entendez par privé un 10.0.0.0/8, un 192.168.0.0/16 ou un 172.16.0.0/12, alors Ne le fais pas. . La plupart des routeurs internet le reconnaissent pour ce qu'il est - une adresse privée qui doit nunca être acheminé vers l'Internet public de manière directe. 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, pour ensuite envoyer un paquet à .... nulle part. Lorsque leur connexion tentera de traverser l'Internet jusqu'à votre adresse privée, un routeur (sainement configuré) sur le chemin mangera simplement le paquet vivant.

Si vous voulez que le courrier électronique de "l'extérieur" arrive à "l'intérieur", le paquet doit à un moment donné traverser votre pare-feu. Je suggérerais de mettre en place une adresse DMZ pour gérer cela - une adresse IP publique unique qui est étroitement contrôlée par tout routeur / pare-feu que vous avez en place. La configuration existante que vous décrivez semble faire exactement cela.

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

1voto

sh-beta Points 6736

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

0voto

Amyunimus Points 163

Je suis arrivé ici car je cherchais des informations similaires et j'ai été surpris de voir que beaucoup disent qu'il n'y a pas de problème à divulguer ses adresses IP privées. Je suppose qu'en termes de piratage, cela ne fait pas une grande différence si vous êtes sur un réseau sûr. Cependant, DigitalOcean a eu tout le trafic du réseau local sur les mêmes câbles exacts avec tout le monde ayant vraiment accès au trafic de tous les autres (probablement faisable avec une attaque Man in the Middle.) Si vous obtenez juste un ordinateur dans le même centre de données, avoir cette information vous donne certainement un pas plus près de pirater mon trafic. (Maintenant, chaque client a son propre réseau privé réservé comme avec d'autres services en nuage tels que AWS).

Cela dit, avec votre propre service BIND9, vous pouvez facilement définir vos IP publiques et privées. Cela se fait à l'aide de la fonction view qui comprend une fonction conditionnelle. Cela vous permet d'interroger un DNS et d'obtenir une réponse sur les IP internes uniquement si vous demandez à partir de l'une de vos propres adresses IP internes.

La configuration nécessite deux zones. La sélection utilise le match-clients . Voici un exemple de configuration de 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 IPs 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.

Comme pour la zone interne, nous incluons d'abord la zone externe, c'est ainsi que cela fonctionne. Par exemple, si vous êtes un ordinateur interne, vous n'accédez qu'à la zone interne, vous avez donc encore besoin des définitions de la zone externe, d'où l'expression $include commandement :

$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 désormais ce DNS et ses esclaves. Dans l'hypothèse d'un réseau statique, cela signifierait modifier votre /etc/network/interfaces et en utilisant vos adresses IP DNS dans le fichier nameserver option. Quelque chose comme ça :

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

Maintenant, vous devriez être prêt.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X