Skip to content
ZosiscoIV edited this page Apr 18, 2025 · 1 revision

# TP4 : Mise en place et sécurisation du DNS public

Noms des auteurs : BONTEMS Antoine, SCHOONYANS Ann-Lore, LAMAND Cyril

Date de réalisation : 14/03/2025-21/03/2025

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

Pour pouvoir disposer d'un DNS public, il faut avant tout disposer d'un nom de domaine. Nous utiliserons comme domaine parent le domaine ephec-ti.be, et chacun de votre groupe disposera de son propre sous-domaine, nommé selon le pattern suivant : l[1|2]-[#groupe].ephec-ti.be. Par exemple, le groupe 2TL1-1 disposera du nom de domaine l1-1.ephec-ti.be.

1.1. Préparation

Mise en place de l'environnement de travail.

Organisation du VPS

Quelle sera votre hiérarchie de répertoires?

-> Un User nommé moiwesh, sur lequel les membres du groupe peuvent se connecter

Votre repository Github et son Wiki

Quelle structure allez-vous donner au repository et au wiki ?

Le repository contient des backups des fichiers de config et le wiki est séparé en rapport par TP

Méthode de configuration

Quelle procédure de gestion des configurations votre groupe a-t'il choisi ?

GitHub

Nom de domaine

l2-7.ephec-ti.be

1.2. Mise en place du serveur autoritaire

1.2.1 Premier test du container

Qu'observez-vous comme comportement pré-défini dans ce serveur Bind? Indiquez vos observations et vos conclusions.
image

1.2.2. Configuration du mode autoritaire

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-7.ephec-ti.be." {
  type master;
  file "/etc/bind/2tl2-7.zone";
  allow-transfer {
    none;
  };
};

Fichier de config

$ORIGIN l2-7.ephec-ti.be.
$TTL 86400
@       IN      SOA     soa.l2-7.ephec-ti.be.   hostmaster.l2-7.ephec-ti.be. (
                        2025032201 ; serial
                        21600      ; refresh after 6 hours
                        3600       ; retry after 1 hour
                        604800     ; expire after 1 week
                        86400 )    ; minimum TTL of 1 day

@       IN      NS      soa.l2-7.ephec-ti.be.

soa     IN      A       54.36.183.222
www     IN      CNAME   soa

Fichier de zone

  • Pour chacune des trois fonctionnalités listées plus haut, quelle(s) instruction(s) permet sa mise en oeuvre?

    • Interdiction de la récursion et de la mise en cache --> allow-query-cache { none; }; recursion no;
    • Requêtes acceptées depuis tout l’Internet (nous souhaitons définir une zone publique) --> allow-query { any; };
    • Définition du serveur en tant que maître de la zone, en lui indiquant le fichier de zone à utiliser. --> type master; file "/etc/bind/2tl2-7.zone";
  • Pourquoi interdit-on la récursion ? Car ça pourrait permettre des attaques par amplifications et que ce n'est pas le rôle du SOA.

  • Devez-vous configurer une zone inverse pour votre sous-domaine ? Pourquoi ? Pas obligatoirement mais cela rendrait les logs plus lisibles.

Reproduisez ici votre fichier named.conf ainsi que votre fichier de zone. Indiquez également pour chacun le lien vers la version courante sur le repository.

Faites le bilan de la validation :

  • Quelles commandes avez-vous utilisées? named-checkconf et named-checkzone
  • Quels résultats avez-vous obtenus, et quelles conclusions pouvez-vous en tirer sur le fonctionnement de votre serveur DNS ? Il fonctionne
  • Comment avez-vous configuré les logs ? Y avez-vous bien accès ?

image

1.2.3. Construction d'une image pour votre serveur autoritaire

  • Documentez votre Dockerfile.
FROM ubuntu/bind9  // image servant de base

COPY ./config/named.conf /etc/bind/named.conf 
COPY ./config/2tl2-7.zone /etc/bind/2tl2-7.zone  // pour ajouter les fichiers de config dans le docker

RUN apt-get update && apt-get -y install nano // pour chipoter grâce à nano dans le docker
RUN chown -R bind:bind /etc/bind && chmod -R 777 /etc/bind // pas utile

CMD ["/usr/sbin/named", "-g", "-c", "/etc/bind/named.conf", "-u", "bind"]  // commande pour démarrer le dns dans le docker
  • Comment avez-vous validé votre image ?

grâce à un dig @localhost www.l2-7.ephec.ti.be après l'avoir démarrée.

1.3. Délégation de la zone

  • Indiquez ici les deux Resource Records à transférer à la zone parente
l2-7       IN      NS      ns.l2-7.ephec-ti.be.

ns     IN      A       54.36.183.222
  • Montrez via des screenshots que la délégation fonctionne.

[à faire]

1.4. Validation du serveur autoritaire

  • Indiquez le screenshot avec l'état de validation Zonemaster
  • Expliquez avec vos mots ce que signifie chaque test
  • Faites le bilan de cette validation sur votre zone : quels sont les points d'amélioration ? Si vous pouvez les réalisez, documentez les changements réalisés et montrez bien les screenshots du test de validation Zonemaster avant et après les modifications.

[à faire]

1.5. Pour aller plus loin [facultatif]

[à faire]

2. Sécurisation DNSSEC

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

  • Documentez les modifications effectuées
inline-signing yes;
dnssec-policy default;
dnssec-keygen -a RSASHA256 -b 2048 -f KSK -n ZONE 2tl2-7.zone
dnssec-keygen -a RSASHA256 -b 1024 -n ZONE 2tl2-7.zone
  • Après redémarrage de votre serveur, quels changements observez-vous?

    -Un ensemble de fichiers de signatures DNSSEC (*.signed) est généré dans le répertoire de la zone.

    -La zone est automatiquement signée et mise à jour.

    -De nouveaux enregistrements de type RRSIG et NSEC/NSEC3 sont visibles.

2.2. Validation de la clé publique via la zone parente

  • Documentez la procédure de création du record DS
  • Reproduisez ici votre record DS. l2-7.ephec-ti.be. IN DS 39542 8 2 9F2A9D348F4A39F7A2D4E4A8FEC4C5F0D7F7431B0D1AB5589D0E1D00D0D3F23

2.3. Tester la sécurisation d'une zone DNS

  • Documentez et commentez ici les résultats obtenus en validant votre configuration avec les trois outils mentionnés.

image

2.4. Configurer un résolveur pour valider le DNSSEC

  • Quelle(s) instruction(s) Bind permettent de contrôler si un résolveur effectue une validation DNSSEC ou non?

Pour aller plus loin (facultatif)

Si vous avez réalisé des bonus, documentez-les ici.

Clone this wiki locally