AdminII TP4 Mise en place et sécurisation du DNS public - dudleydehenau/Ephec GitHub Wiki

1. Installation et configuration de Bind en tant que serveur autoritaire sur un VPS

1.1 Préparation

Pour ce qui est de l'organisation du VPS, l'organisation de notre hiérarchie de répertoires sera comme suit :

/home/mcqueen/docker/
│-- config/
│   │-- <nom_du_conteneur>/
│   │   ├── docker-compose.yml
│   │   ├── autres fichiers de configuration...
│-- data/
│   │-- <nom_du_conteneur>/
│       ├── données persistantes du conteneur

Le repo github sera séparée en une branche par étudiant du groupe, celle de Dudley faisant autorité (puisqu'il est l'administrateur du vps ayant été assigné le nom de domaine). La structure des fichiers restera très simple au sein du repo, avec un directory par TP et les fichiers nécessaires à la réalisation du TP inclus dans le directory. Le wiki suivera de près la structure des instructions des tps.

le nom de domaine du groupe est le suivant : l2-6.ephec-ti.be.

1.2 Mise en place du serveur autoritaire

1.2.1 Premier test du container

Une fois le container lancé voici le résultat de la commande dig @localhost www.google.com : dig_first par défaut l'on peut constater que le serveur arrive à résoudre www.google.com. cela signifie que le serveur se comporte en résolveur récursif et qu'il cache les résultats. Ce n'est pas le comportement que nous chercons à atteindre

1.2.2 Configuration du mode autoritaire

Voici le named.conf que nous utilisons pour répondre aux fonctionalitées souhaitées de notre container :

options {
  directory "/var/cache/bind";
  // version statement for security to avoid hacking known weaknesses
  // if the real version number is revealed
  version "not currently available";
  allow-query { any; };
  allow-query-cache { none; };
  recursion no;
};

zone "l2-6.ephec-ti.be." {
  type master;
  file "/etc/bind/l2-6.zone.signed";
  allow-transfer {
    none;
  };
};
options {
  directory "/var/cache/bind";
  // version statement for security to avoid hacking known weaknesses
  // if the real version number is revealed
  version "not currently available";
  allow-query { any; };
  allow-query-cache { none; };
  recursion no;
};

zone "l2-6.ephec-ti.be." {
  type master;
  file "/etc/bind/l2-6.zone.signed";
  inline-signing yes;
  dnssec-policy default;
  allow-transfer {
    none;
  };
};
  • Pour l'interdiction de la recursion et du caching : recusion no; allow_query-cache { none; };
  • Pour l'acceptation de queries vanant de n'import où : allow-query { any; };
  • Pour la définition du serveur en tant que maître de la zone : zone "l2-6.ephec-ti.be." {...} type master;

La récursion est interdite car le rôle d'un serveur authoritaire est uniqement de répondre à des questions par rapport à la zone qu'il gère. On ne veut pas qu'il puisse intéroger d'autres vps.

Non, il n'est pas nécessaire de configurer une zone inverse pour le sous domaine car ce genre de choses est pour la plupart du temps géré par l'entité contrôlant le bloc IP.

Une fois le named.conf est correctement modifé ainsi que le l2-6.zone ajouté nous avons ceci comme réonse:

  • dig google: dig2-google

  • dig de la zone: dig2-vps

1.3 Délégation de la zone

Voici les ressources record que nous avons envoyés : l2-6 IN NS ns1.l2-6.ephec-ti.be. ns1.l2-6 IN A 54.36.180.56

1.4 Validation du serveur autoritaire

Screenshot zonemaster : zonemaster

2. Sécurisation DNSSEC

2.1 Génération des clés et signature de la zone

voici le named.conf modifié pour s'assurer que les RR ne sont pas modifié et bien provenant de la zone indiquée :

options {
  directory "/var/cache/bind";
  // version statement for security to avoid hacking known weaknesses
  // if the real version number is revealed
  version "not currently available";
  allow-query { any; };
  allow-query-cache { none; };
  recursion no;
};

zone "l2-6.ephec-ti.be." {
  type master;
  file "/etc/bind/l2-6.zone.signed";
  inline-signing yes;
  dnssec-policy default;
  allow-transfer {
    none;
  };
};
options {
  directory "/var/cache/bind";
  // version statement for security to avoid hacking known weaknesses
  // if the real version number is revealed
  version "not currently available";
  allow-query { any; };
  allow-query-cache { none; };
  recursion no;
};

zone "l2-6.ephec-ti.be." {
  type master;
  file "/etc/bind/l2-6.zone.signed";
  **inline-signing yes;**
  **dnssec-policy default;**
  allow-transfer {
    none;
  };
};

2.2 Validation de la clé publique via la zone parent

La commande suivante permet d'obtenir un RR DS au départ de la clé DNSSEC publique: docker exec dns dnssec-dsfromkey /etc/bind/K.ephec-ti.be.++.key

Et voici le record DS crée à partir de la clef KSK : l2-6.ephec-ti.be. IN DS 41632 13 2 E8A228D65C508DC74378E80AA6A4C57E05A64503BE2C9AD5E6843ADD93C719A4

2.3 Tester la sécurisation d'une zone DNS

Puisque le RR DS dans la zone parent n'est pas encore validé tous les checks ne sont pas vert: Verisignlabs : verisign

delv : delv

2.4 Configurer un résolveur pour valider le DNSSEC

L'instruction Bind permettant de controler la validation dans un resolveur est dnssec-validation (souvent mis en auto ou yes)

⚠️ **GitHub.com Fallback** ⚠️