IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau Discussion :

Bind9 bloquer une zone


Sujet :

Réseau

  1. #1
    Membre expérimenté Avatar de SkyZoThreaD
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2013
    Messages
    583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 583
    Points : 1 615
    Points
    1 615
    Par défaut Bind9 bloquer une zone
    Bonjour,

    Je galère à trouver une réponse satisfaisante à ma question donc je me demande si vous ne pourriez pas m'aider.
    J'ai monté un DNS via bind9 et je veux qu'il me renvoi un "host not found" pour une zone particulière.
    La plupart des solutions que je trouve permettent de rediriger vers le localhost ou une autre ip. Je veux vraiment qu'il croit que la dns n'est pas attribuée.
    Toutes les autres zones doivent répondre normalement.

    Merci.

    ps : si vous avez compris ce que je cherche à faire au final avec ça vous gagnez 10 points.
    La liberté est à la sociologie ce que l'instant présent est à la physique relativiste.

  2. #2
    Membre régulier

    Homme Profil pro
    Community manager
    Inscrit en
    Avril 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Community manager

    Informations forums :
    Inscription : Avril 2015
    Messages : 27
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    Je suis pas sûr de bien comprendre alors je te répondrais comment moi je ferai et le résultat que ça donnerait.
    Je pars du principe que par zone tu entends tous les enregistrements DNS d'un nom de domaine.

    Il faut déposer le nom de domaine indiquer ton serveur comme serveur DNS et ne pas renseigner la zone dans bind tout simplement.
    Tu auras le message "ce site est inaccessible".

    Maintenant si tu as configuré bind car tu as besoin que quelques personnes uniquement puissent afficher ton site un firewall conviendrait mieux.

    Et si on parle d'une seule personne alors bind n'est pas nécessaire autant utiliser le fichiers hosts.
    Thomas | Community manager | ikoula Serveurs dédiés, VPS et Cloud Public
    Contactez-nous | Suivez nous sur Twitter | Likez nous sur Facebook

  3. #3
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    les directives allow-query et/ou allow-query-cache permettent de restreindre les requêtes à certains hosts, le cas échouant j'imagine qu'on doit prendre un not found, refused ou similaire, sinon la seule autre option que je vois c'est une deuxième instance de bind9, resolver interne vs externe...

  4. #4
    Membre expérimenté Avatar de SkyZoThreaD
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2013
    Messages
    583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 583
    Points : 1 615
    Points
    1 615
    Par défaut
    @Ikoula.community : Tu m'a mal compris. Le but est de passer par un relais DNS pour renvoyer une erreur "NXDOMAIN" à une application pour la tromper. Le fichier host ou le firewall ne peuvent pas m'aider pour ça. Et par défaut, bind répond à toutes les zones du serveur parent.

    @BufferBob : Ça m'a l'air intéressant, je n'avais pas encore testé cette directive. J'en ai testé d'autres qui me renvoyaient des packets "SERVFAIL" à la place et l'appli que je test ne se faisait pas avoir
    J'espère que celle-là fera l'affaire. J'avais pensé à utiliser un filtre ettercap via une attaque "man in the middle" pour modifier le packet de réponse à la volée en solution de secours...
    On verra ce que ta solution donne ce soir. Merci.
    La liberté est à la sociologie ce que l'instant présent est à la physique relativiste.

  5. #5
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par SkyZoThreaD Voir le message
    Le but est de passer par un relais DNS pour renvoyer une erreur "NXDOMAIN" à une application pour la tromper
    ah ok, ben je l'avais pas compris non plus, je pensais qu'il s'agissait uniquement de limiter l'accès à la zone, probable que ça renvoie un SERVFAIL également du coup

    pour préciser un peu le contexte, bind9 doit renvoyer nxdomain quelque soit l'origine de la demande ou certains clients doivent continuer d'avoir accès normalement à la zone ?
    dans le premier cas il sera peut-être intéressant de regarder du coté de la directive auth-nxdomain qui permet d'être autoritaire sur le renvoie d'un nxdomain, on pourra éventuellement envisager un proxy genre Unbound ou dnsmasq pour feinter la réponse de manière un peu consistante
    dans le second cas... je sais pas trop, perso je pense que coderais un proxy spécifiquement pour le besoin mais à voir si ta méthode est plus simple à mettre en place et fonctionne

  6. #6
    Membre expérimenté Avatar de SkyZoThreaD
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2013
    Messages
    583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 583
    Points : 1 615
    Points
    1 615
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    ah ok, ben je l'avais pas compris non plus, je pensais qu'il s'agissait uniquement de limiter l'accès à la zone, probable que ça renvoie un SERVFAIL également du coup
    Ah... damn ! C'est moi qui me suis mal exprimé alors

    Citation Envoyé par BufferBob Voir le message
    pour préciser un peu le contexte, bind9 doit renvoyer nxdomain quelque soit l'origine de la demande ou certains clients doivent continuer d'avoir accès normalement à la zone ?
    L'origine n'a pas d'importance, il n'y a qu'un seul client sur le serveur DNS.

    Citation Envoyé par BufferBob Voir le message
    dans le premier cas il sera peut-être intéressant de regarder du coté de la directive auth-nxdomain qui permet d'être autoritaire sur le renvoie d'un nxdomain, on pourra éventuellement envisager un proxy genre Unbound ou dnsmasq pour feinter la réponse de manière un peu consistante
    dans le second cas... je sais pas trop, perso je pense que coderais un proxy spécifiquement pour le besoin mais à voir si ta méthode est plus simple à mettre en place et fonctionne
    J'ai déjà testé cette directive et elle renvoie une réponse valide... Apparemment, elle ne sert pas à envoyer un NXDOMAIN mais juste à être autoritaire le cas échéant. (je vois pas ce que ça veut dire btw )
    Quant aux serveurs Unbound et Dnsmask, je ne connaissait pas... Dnsmask, si j'ai bien compris, utilise le /etc/hosts comme source en plus du resolv.conf. Donc on ne doit pas pouvoir renvoyer de NXDOMAIN, si? A ma conaissance on ne peut que rediriger vers une autre adresse via le Hosts...
    Je n'ai pas bien compris ton histoire de proxy... En quoi un proxy intervient avec les DNS? Pour moi c'est juste une Gateway
    La liberté est à la sociologie ce que l'instant présent est à la physique relativiste.

  7. #7
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par SkyZoThreaD Voir le message
    J'ai déjà testé cette directive et elle renvoie une réponse valide... Apparemment, elle ne sert pas à envoyer un NXDOMAIN mais juste à être autoritaire le cas échéant. (je vois pas ce que ça veut dire btw )
    ben dans ce cas, tu vires la zone (donc elle n'existe pas pour bind9, donc --> NXDOMAIN), tu interdis la récursion et tu active auth-nxdomain, le client qui s'adresse à ton dns recevra un NXDOMAIN et ce NXDOMAIN fait autorité, le client n'ira pas chercher plus loin, c'est en tous cas comme ça que je le comprends et probablement ce que je testerais en priorité

    Quant aux serveurs Unbound et Dnsmask, je ne connaissait pas... Dnsmask, si j'ai bien compris, utilise le /etc/hosts comme source en plus du resolv.conf. Donc on ne doit pas pouvoir renvoyer de NXDOMAIN, si?
    les deux disposent de directives de configuration assez puissantes de ce que j'ai pu voir, il faut investiguer

    Je n'ai pas bien compris ton histoire de proxy... En quoi un proxy intervient avec les DNS? Pour moi c'est juste une Gateway
    c'est bien compliqué tout ce jargon

    une "gateway" c'est une passerelle, la gateway IP de ton réseau par exemple c'est ton routeur
    on parle souvent de proxy sous-entendu HTTP, mais dans l'absolu un proxy c'est juste un truc qui sert de relai, une passerelle donc
    un proxy HTTP on va aussi trouver le terme de "gateway", on peut faire un proxy avec n'importe quel protocole, nginx par exemple permet la mise en place d'un proxy mail (SMTP/POP/IMAP), OpenSSH permet également de proxyfier des connexions SSH, sans parler des proxys socks dans lesquels ont fait transiter à peu près ce qu'on veut etc.

    donc un proxy DNS, c'est un bouzin qui accepte les requêtes du client sur le(s) port(s) DNS standard, les relaye à bind9 (qui est sur un autre port du coup, et il voit arriver la totalité des requêtes comme émanant du proxy), reçoit les réponses, les modifie à la volée, et les rebalance au client (la différence c'est que dans ton scénario à base de MitM à la fin tu pries pour que ton paquet forgé arrive avant le paquet légitime, quid du taux de réussite ?)

  8. #8
    Membre expérimenté Avatar de SkyZoThreaD
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2013
    Messages
    583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 583
    Points : 1 615
    Points
    1 615
    Par défaut
    Oui Bob, tu as raison. Une gateway c'est au niveau IP... Au dessus on parle bien de proxy. Et c'est bien ce que j'avais en tête mais je n'ai pas fait le rapprochement
    En quelque sorte, bind9 est aussi un proxy dns non? Et c'est d'ailleurs pour ça que j'ai commencé à chercher de ce côté là. Du coup tu me propose d'utiliser un autre proxy (unbound, dnsmask) vers mon proxy bind9 puis enfin vers le client.... Autant n'utiliser que Unbound ou Dnsmask et laisser tomber bind9 non?
    Pour ce qui est du mitm, il n'y a pas besoin de prier que le paquet arrive avant ou après car le concept est justement que tous les packets passent par le poste attaquant où ils sont modifiés. C'est du coup une sorte de proxy
    J'ai commencé à décortiquer le protocole des réponses dns et il semble plutôt facile de faire un petit filtre etterfilter pour transformer les réponses en NXDOMAIN.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if (ip.proto == UDP && tcp.src == 53)
    {
      if(DATA.data + 37 == 0x8180)
      {
        if(DATA.data + 52 == "madns.com")
        {
          DATA.data + 37 = 0x8183;
        }
      }
    }
    Les offsets de ce code ne sont pas les bons car je viens de booter sous windows et je n'ai plus les sources sous la main mais ça semble aussi simple que ça.
    Malheureusement, je n'arrive pas à attaquer ma machine virtuelle en mitm (arp spoof) à partir de l’hôte donc il me faudrait une autre VM que je n'ai pas eu le courage d'installer ce soir

    Cependant, avant d'essayer quoi que ce soit, je regarderai ce que peuvent faire tes proxy dns. Ça me semble plus propre, et plus simple

    Merci à toi.
    La liberté est à la sociologie ce que l'instant présent est à la physique relativiste.

  9. #9
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par SkyZoThreaD Voir le message
    (...) tous les packets passent par le poste attaquant où ils sont modifiés. (...) il semble plutôt facile de faire un petit filtre etterfilter (...)
    effectivement ça a l'air sympa Ettercap/Etterfilter, je crois pas avoir déjà utilisé, par contre quand tu dis que les paquets sont modifiés, d'après la description d'Ettercap il s'agit à la base d'un sniffer donc les paquets ne sont pas modifiés mais seulement dupliqués, à moins qu'il interagisse avec iptables dans la foulée

    et ça me fait penser à ce qui pourrait être une solution à moindre coût également, à savoir utiliser les nfqueues

    le principe est simple, on match une règle iptables avec target -j nfqueue et de l'autre coté on a un programme/script qui se charge de récupérer les paquets dans la queue, l'examiner et rendre un verdict à iptables

    si c'est avéré qu'Etterfilter modifie bien le paquet et non en crée un autre qui entre en concurrence ça peut être une solution pas mal du tout sinon, la syntaxe a l'air assez puissante (il est possible qu'Etterfilter utilise lui-même les nfqueues, à vérifier)

    edit: je sais pas si tu parles python, un article qui illustre bien la facilité du montage (si jamais ettercap ne fait pas suffisamment l'affaire)

  10. #10
    Membre expérimenté Avatar de SkyZoThreaD
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2013
    Messages
    583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 583
    Points : 1 615
    Points
    1 615
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    par contre quand tu dis que les paquets sont modifiés, d'après la description d'Ettercap il s'agit à la base d'un sniffer donc les paquets ne sont pas modifiés mais seulement dupliqués, à moins qu'il interagisse avec iptables dans la foulée
    Et bien oui Il y a une ligne à décommenter dans la conf pour utiliser la redirection iptables. Et ça marche super bien... sauf pour ce que je veux faire
    J'ai fait des tests en vérifiant via wireshark et il semble qu'il est impossible d'accéder au header du packet DNS via les filtres etterfilter...
    Du coup je me suis dit : il suffit de modifier la dns par une bidon qui ne marche pas pour le packet sortant et remettre la bonne adresse pour la réponse afin d'obtenir un NXDOMAIN avec la dns en question dans la réponse mais ça rend incohérent le packet... (dixit nslookup).
    Bref, à part si on peut modifier le header DNS via etterfilter (rien trouvé dans la doc), ce n'est pas une solution.
    J'ai repéré par contre que dans les sources du plugin "dns_spoof" (plugin ettercap), on a un fonction qui commence comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    static void dns_spoof(struct packet_object *po)
    {
       struct dns_header *dns;
    Et dans la structure en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct dns_header {
       u_int16 id;                /* DNS packet ID */
    #ifdef WORDS_BIGENDIAN
       u_char  qr: 1;             /* response flag */
    Ça me parait très prometteur

    Sinon je ne fais pas de python, j'ai essayé de lire le code mais j'ai du mal à comprendre
    La liberté est à la sociologie ce que l'instant présent est à la physique relativiste.

  11. #11
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par SkyZoThreaD Voir le message
    il semble qu'il est impossible d'accéder au header du packet DNS via les filtres etterfilter...
    tu vois ça à quoi ? (à quoi ressemble ton filtre aussi, dans le précédent par exemple tu mettais tcp.src == 53 au lieu de udp.port == 53 à mon avis)

    juste pour être sûr, on est d'accord qu'à ce stade il faut obligatoirement lancer etter{cap,filter} en root ?

    edit: pour le moins il doit s'agir d'un filtre de ce genre (non testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (ip.proto == UDP && udp.src == 53 && search(DATA.data, "madns.com")) {
       DATA.data + 44 = 0x8183;
    }
    mais j'ai comme un gros doute, en faisant quelques tests très rapides on se rend compte qu'une réponse NXDOMAIN est assez différente, notamment elle inclue le nom du serveur qui fait autorité pour donner la réponse, du coup le nombre d'octets du paquet n'est pas le même

    l'autre possibilité c'est de crafter un paquet de toute pièce, dans un programme externe avec un filtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (ip.proto == UDP && udp.src == 53 && search(DATA.data, "madns.com")) {
       drop();
       inject("./monscript");  # lequel script envoie sur stdout le paquet raw NXDOMAIN
    }
    (on oubliera pas de bien checker dans le paquet raw les adresses MAC et IP au minimum...)

  12. #12
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Points : 12
    Points
    12
    Par défaut
    J'aimerai bien répondre à ton problème.
    Le but est que lorsque la machine 'host' demande au serveur DNS, il lui répond que l'enregistrement n'existe pas. Cela va afficher au navigateur, cette page est inexistante.

    Le principe de DNS repose sur deux serveurs. Un résolveur et une Autorité.

    Généralement lorsqu'une requete est faites au résolveur et qu'il ne connais pas le domaine (il ne l'a pas en cache), il va demander a une liste de serveur autoritaire ou résolveur pour connaître à qui appartient le nom de domaine. Cela forme ainsi une chaîne.

    Le but est donc de cassé cette chaîne et de faire croire au serveur DNS résolveur que toutes les autorités ne connaisse pas les noms de domaines.
    On va donc crée un serveur DNS autoritaire (bind9), et un autre serveur résolveur (unbound). Le serveur résolveur va faire des demandes seulement au serveur autoritaire. Et il va répondre qu'il ne connais pas l'adresse voulu.

    Le problème ici, c'est que tu coupe absolument tout les noms de domaine, sauf ceux que tu souhaite. Mais il faut enregistrer toutes les zones dans le serveur autoritaire... Il a trop pour les lister...


    La question pour pouvoir cibler la réponse est, dans quel mesure souhaite-tu avoir un retour NXDOMAIN

  13. #13
    Membre expérimenté Avatar de SkyZoThreaD
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2013
    Messages
    583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 583
    Points : 1 615
    Points
    1 615
    Par défaut
    Merci pour ces précisions.

    Je n'avance pas trop là dessus en ce moment car j'ai de gros chantiers mais je vais pouvoir m'y remettre.
    Si j'ai bien compris ce que tu me dis, il serait plus facile de passer par du spoofing comme j'étais entrain de faire.

    Citation Envoyé par Lanxor Voir le message
    La question pour pouvoir cibler la réponse est, dans quel mesure souhaite-tu avoir un retour NXDOMAIN
    Dans l'absolu. Je dois vraiment tromper ce bout de programme et il ne se fera pas avoir sans une réponse cohérente de type nxdomain tout le reste a échoué.

    Merci.
    La liberté est à la sociologie ce que l'instant présent est à la physique relativiste.

Discussions similaires

  1. bloquer une zone numérique si
    Par rose0729 dans le forum IHM
    Réponses: 14
    Dernier message: 10/02/2012, 16h36
  2. Bloquer une zone automatique
    Par SebastienM dans le forum Excel
    Réponses: 3
    Dernier message: 05/02/2009, 00h55
  3. Réponses: 4
    Dernier message: 12/06/2007, 11h50
  4. bloquer une zone de texte en modification
    Par greg64 dans le forum Access
    Réponses: 4
    Dernier message: 17/07/2006, 17h01
  5. Comment bloquer une zone de texte à n car
    Par MonsieurAk dans le forum Windows
    Réponses: 3
    Dernier message: 10/08/2005, 16h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo