Forum Linux.général Etranges résolutions DNS venant du Vietnam

Posté par (page perso) . Licence CC by-sa
Tags : aucun
7
20
août
2013

Bonsoir,

si je fais un "host 222.254.1.100", j'obtiens ceci :

100.1.254.222.in-addr.arpa domain name pointer localhost.

J'ai d'abord pensé à un problème de mon serveur DNS, mais apparemment cela remonte de plus haut : http://www.ip-adress.com/reverse_ip/222.254.1.100

This IP address resolves to localhost[Whois] [Trace]

Le whois indique lui que ces IP viennent du Vietnam :

$ whois 222.254.2.162
% [whois.apnic.net]
% Whois data copyright terms    http://www.apnic.net/db/dbcopyright.html

% Information related to '222.254.0.0 - 222.254.63.255'

inetnum:        222.254.0.0 - 222.254.63.255
netname:        HNPT-NET
country:        vn
descr:          Ha Noi Post and Telecom Company
admin-c:        VD25-AP
tech-c:         LQ306-AP
status:         ALLOCATED NON-PORTABLE
changed:        hm-changed@vnnic.net.vn 20070511
mnt-by:         MAINT-VN-VNPT
source:         APNIC

Cette "bourde" m'a fait sourire, mais est-ce vraiment une erreur de configuration du serveur DNS ?

La question que je me pose, c'est que si un service réseau, par exemple un serveur Apache, protège des contenus sensibles par un "Allow All from localhost" (plutôt que par un "Allow All from 127.0.0.1"), est-ce que ces adresses IP pourraient y accéder ?

Auquel cas, ce genre de configuration de serveur DNS n'est plus une bourde, mais une incitation à des actions louches, non ? (accès à distance sur un contenu qui est supposé être réservé à usage local)

J'imagine que qu'avec les configuration suivantes:

# cat /etc/nsswitch.conf
hosts:          files dns
# cat /etc/hosts
127.0.0.1       localhost

les serveurs (Apache, …) sont supposés donner la priorité aux résolutions de noms locales, non ? Et ainsi éviter ce type "d'attaque" ?

  • # Pas sûr mais

    Posté par (page perso) . Évalué à 2.

    Mais à moins de forcer la résolution via DNS, par défaut la libc utilise le fichier hosts en premier lieu, si je ne m'abuse ?

    À tester en tout cas, ça devrait être intéressant.

    Love – bépo

    • [^] # Re: Pas sûr mais

      Posté par . Évalué à 4.

      C'est dangereux si le service fait simplement une recherche du reverse de l'IP pour vérifier qu'il correspond au hostname autorisé, et ne faisait pas de résolution du nom pour voir s'il correspond à l'IP.

      Pour Apache, d'après la doc, il fait les deux :

      Il effectue tout d'abord une recherche DNS inverse sur l'adresse IP afin de déterminer le nom d'hôte associé, puis une
      recherche directe sur le nom d'hôte pour vérifier s'il correspond bien à l'adresse IP originale. L'accès ne sera accordé
      que si le nom d'hôte correspond à la chaîne spécifiée et si les recherches DNS inverse et directe produisent un résultat
      cohérent.

      http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html#allow

      Ce qui permet de définir des autorisations pour tout un domaine, en se protégeant d'un simple reverse qui correspondrait.

      Mais je me demande si d'autres services ne seraient pas vulnérables ainsi, ou si ce n'est pas qu'un élément d'une attaque plus complexe.

      • [^] # Re: Pas sûr mais

        Posté par . Évalué à 4.

        Mais je me demande si d'autres services ne seraient pas vulnérables ainsi, ou si ce n'est pas qu'un élément d'une attaque plus complexe.

        Il me semble que rsyslog pourrai être affecté, puisqu'il ne se fie qu'au résolutions DNS inverses.
        Utiliser TCP en localhost est pas courant, mais ça se fait lorsqu'on veut passer du syslog dans un forwarder TCP qui fait passer ça dans un tunnel sécurisé…

  • # Je pense pas

    Posté par (page perso) . Évalué à 3.

    À mon avis, ça ne posera pas de problème (du moins directement), d'après la doc d'Apache en tout cas (cf. la doc sur la directive Allow)

    Allow from example.org
    Allow from .net example.edu

    Hosts whose names match, or end in, this string are allowed access. Only complete components are matched, so the above example will match foo.example.org but it will not match fooexample.org. This configuration will cause Apache httpd to perform a double DNS lookup on the client IP address, regardless of the setting of the HostnameLookups directive. It will do a reverse DNS lookup on the IP address to find the associated hostname, and then do a forward lookup on the hostname to assure that it matches the original IP address. Only if the forward and reverse DNS are consistent and the hostname matches will access be allowed.

    Ça veut dire que pour un

    Allow from localhost

    Apache va faire un lookup sur l'ip qui arrive (qui va donner localhost dans ton cas) et va ensuite faire un lookup sur localhost (ils précisent DNS, mais je ne sais pas si c'est via la libc) qui devrait donner 127.0.0.1 d'après hosts. Vu que 127.0.0.1 ne matche pas l'ip source, il ne devrait pas autoriser l'accès.

    Par contre il reste un problème je pense si le hosts est tout pourri (mais bon là faut chercher les coups :P) ou si le DNS en face est tout pourri et qu'il répond que localhost est l'ip entrante et que nsswitch donne la priorité au DNS…

Suivre le flux des commentaires

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