Journal Du DNS Dynamique (suite)

Posté par  (site web personnel) .
Étiquettes :
5
7
avr.
2010
Dans un journal précédent¹, je parlais de ma petite solution pour faire du DNS Dynamique².

L'idée de base est d'utiliser les objets dynamiques d'un annuaire LDAP, décrit dans la RFC 2589³. J'ai donc écrit un petit script en Perl⁴ qui s'occupait de lire le fichier tenu par le serveur ISC DHCP⁵ et reproduisait son contenu dans l'annuaire, en prenant en compte le temps du bail allouer par le serveur.
L'objet ainsi créé disparaissait automatiquement à la fin de sa durée de vie.

L'étape suivante étant d'utiliser cette information plus loin. Un serveur DNS⁶ normalement constitué retourne toujours une durée de vie de l'enregistrement, prévu par la RFC 1035⁷.

Je me suis donc attaqué au code source du serveur ldapdns 2.06⁸ et j'ai pondu un premier patch⁹ ajoutant le support de l'attribut "entryTtl".
Ce patch reste encore assez expérimental (mais quand même en production sur un serveur DNS chez moi (depuis ce matin)) et va certainement recevoir quelques corrections ainsi qu'une version pour Debian¹⁰ puisque que le projet en lui-même ne semble plus être maintenu au-dehors de Debian (la dernière modification par l'auteur datant de 2003).

Le fait d'ajouter cette valeur permet d'utiliser des serveurs DNS tampon, comme PowerDNS Recursor¹¹ qui s'occupe de faire de la récursion, du tampon et de la résolution DNS (c'est d'ailleurs son seul objectif, la partie autoritaire étant laissée à un autre serveur DNS). En effet, PowerDNS prend en compte la valeur "TTL" et garde en mémoire tampon le résultat, réduisant la charge sur les serveurs autoritaires (ldapdns) et donc sur l'annuaire LDAP.

La page de mon petit projet¹² se trouve sur mon wiki.
  1. http://linuxfr.org/~tchetch/29491.html
  2. http://en.wikipedia.org/wiki/Ddns
  3. http://tools.ietf.org/html/rfc2589
  4. http://en.wikipedia.org/wiki/Perl
  5. http://www.isc.org/software/dhcp
  6. http://en.wikipedia.org/wiki/Domain_Name_System
  7. http://tools.ietf.org/html/rfc1035
  8. http://www.nimh.org/code/ldapdns/
  9. http://www.tchetch.net/code/ldapdns/ldapdns-entryttl.patch
  10. http://packages.qa.debian.org/l/ldapdns.html
  11. http://en.wikipedia.org/wiki/Powerdns
  12. http://www.tchetch.net/wiki/ldap/ddns
  • # C'est moi ou...

    Posté par  . Évalué à 3.

    ... il n'y a aucune différence entre les lignes 154 et 155 du patch ?
    Et comme le changement dans la suite du patch est un passage de c->ttl à c->rttl
    Je me demande s'il n'y a pas un oubli ?
    • [^] # Re: C'est moi ou...

      Posté par  (site web personnel) . Évalué à 2.

      C'est peut-être la ligne où j'ai enlevé un "^M", mais sinon le changement ne doit pas être fait, c'est les TTL des serveurs de noms (NS), donc ceux-ci ne prennent pas la valeur de l'entrée dynamique.
      Dans une réponse complète tu as ça :


      ;; ANSWER SECTION:
      iro025.machines.irovision.ch. 5003 IN A 172.16.30.112

      ;; AUTHORITY SECTION:
      irovision.ch. 172800 IN NS ns1.dns.irovision.ch.
      irovision.ch. 172800 IN NS ns2.dns.irovision.ch.

      ;; ADDITIONAL SECTION:
      ns2.dns.irovision.ch. 172800 IN A 192.168.10.120
      ns1.dns.irovision.ch. 172800 IN A 192.168.10.121


      Donc uniquement le TTL dans ";; ANSWER SECTION" doit avoir la valeur dynamique.

      "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

  • # Secu

    Posté par  (site web personnel) . Évalué à 2.

    Je n'ai pas regardé le code donc c'est juste les gros points à tester (non exhaustif of course :P ).
    Il faut faire attention que certaines entrée ne puissent pas être automatiquement ajoutée tel que 'WPAD' [1] ou 'ISATAP' [2]. La manipulation dynamique des entrées DNS via DHCP peuvent permettre de rediriger le traffic vers la machine de sont choix (MITM). Microsoft a eu quelques problèmes l'année dernière [3].

    J'ai vu beaucoup de charactères un peu spéciaux dans les noms de PC... Il est toujours bon de garder QUE les charactères a-z 0-9 ça permet d'éviter les injections au niveau LDAP et DNS.

    Il faut aussi que tu ne puisses pas ré-enregistrer des entrées déjà existantes i.e. www. mail. etc...

    Voilà

    [1]: http://en.wikipedia.org/wiki/Web_Proxy_Autodiscovery_Protoco(...)
    [2]: http://en.wikipedia.org/wiki/ISATAP
    [3]: http://blogs.technet.com/srd/archive/2009/03/13/ms09-008-dns(...)

    http://www.theatre-eibel.fr http://www.isc2chapter-yorkshire.co.uk

    • [^] # Re: Secu

      Posté par  (site web personnel) . Évalué à 3.

      Il faut faire attention que certaines entrée ne puissent pas être automatiquement ajoutée tel que 'WPAD' [1] ou 'ISATAP' [2]. La manipulation dynamique des entrées DNS via DHCP peuvent permettre de rediriger le traffic vers la machine de sont choix (MITM). Microsoft a eu quelques problèmes l'année dernière [3].

      Oui tu as raison, je suis au courant des problèmes mais je n'y même pas pensé à faire attention à ça dans mon code, je vais donc corriger ça séance tenante. Merci beaucoup.

      J'ai vu beaucoup de charactères un peu spéciaux dans les noms de PC... Il est toujours bon de garder QUE les charactères a-z 0-9 ça permet d'éviter les injections au niveau LDAP et DNS.

      Oui j'ai une expression régulière qui me nettoie ça, normalement.

      Il faut aussi que tu ne puisses pas ré-enregistrer des entrées déjà existantes i.e. www. mail. etc...

      L'idée est quand même de faires un sous-domaine dédié aux entrées dynamiques, mais je peux rajouter une liste, dans la configuration, de noms protéger et donc inutilisable par le client.

      Merci beaucoup pour ces choses que je n'avais pas pensé.

      "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

  • # Hum

    Posté par  . Évalué à 1.

    Très intéressant.
  • # Hum

    Posté par  . Évalué à 1.

    Ceci être très intéressant.
  • # hihi

    Posté par  . Évalué à 1.

    Hum

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.