TP4 : sécurisation du DNS public - PasRP-Theo/Admin-II GitHub Wiki

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

Video de demo https://youtu.be/FweggPaBLuo

Noms des auteurs :

  • Théo Mertens
  • Baris Ozcelik
  • Akbar

Date de réalisation : 24/02/25


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

1.1. Préparation

Mise en place de l'environnement de travail

Organisation du VPS :

  • Le projet est stocké dans le home de l'utilisateur shared : ~/dns
  • Le dossier ~/dns/config_file contient les fichiers de configuration du DNS

Repository GitHub et son Wiki

  • Le dépôt GitHub contient uniquement le dossier DNS, reprenant la même structure que sur le VPS.

Méthode de configuration

  • La configuration du service DNS est gérée via named.conf et les fichiers de zone.
  • Déploiement via Docker et docker-compose.yml.

Nom de domaine

  • l2-2.ephec-ti.be

1.2. Mise en place du serveur autoritaire

1.2.1 Premier test du container

  • Observations et conclusions sur le comportement pré-défini de Bind.

1.2.2 Configuration du mode autoritaire

Instructions utilisées :

  • Interdiction de la récursion et mise en cache :
    allow-query-cache { none; };
    recursion no;
  • Accepter les requêtes depuis tout l’Internet :
    allow-query { any; };
  • Définition du serveur en tant que maître :
    type master;
    file "/etc/bind/zones/l2-2.zone";
    allow-transfer { none; };

Pourquoi interdit-on la récursion ?

  • Pour éviter que le serveur soit utilisé comme résolveur public, renforçant ainsi la sécurité.

Doit-on configurer une zone inverse ?

  • Non, OVH s’en occupe déjà.

Configuration named.conf :

options {
  directory "/var/cache/bind";
  version "not currently available";

  recursion no; // interdit la récuirsion
  allow-query-cache { none; }; // interdit la mise en cache
  allow-query { any; }; // Permet les requêtes depuis n'importe où

};

zone "l2-2.ephec-ti.be." { // Définition du serveur en tant que maître de la zone
  type master;
  file "/etc/bind/l2-2.zone";
  allow-transfer {
    none;
  };
};

Configuration l2-2.zone :

$ORIGIN l2-2.ephec-ti.be.
$TTL 3600
@       IN      SOA     ns.l2-2.ephec-ti.be. hostmaster.l2-2.ephec-ti.be. (
                2025040801 ; Serial
                21600      ; Refresh
                3600       ; Retry
                604800     ; Expire
                86400    ; Minimum TTL
)
@       IN      NS      ns.l2-2.ephec-ti.be.
ns      IN      A       54.36.180.92
www     IN      CNAME   ns

docker run :

docker run \
    -d \
    --name=dns \
    -p 53:53/udp \
    -p 53:53/tcp \
    --mount type=bind,source=/home/groupe_admin/dns/configFile/named.conf,target=/etc/bind/named.conf \
    --mount type=bind,source=/home/groupe_admin/dns/configFile/l2-2.zone,target=/etc/bind/l2-2.zone \
    internetsystemsconsortium/bind9:9.18

Validation :

  • Commandes utilisées : dig @localhost www.l2-2.ephec-ti.be
  • Logs accessibles via : docker logs dns

1.2.3 Construction d'une image pour le serveur autoritaire

Dockerfile :

FROM internetsystemsconsortium/bind9:9.18

ADD configFile/named.conf /etc/bind/named.conf
ADD configFile/l2-2.zone /etc/bind/l2-2.zone

RUN chown -R bind:bind /etc/bind/

CMD ["/usr/sbin/named", "-g", "-c", "/etc/bind/named.conf", "-u", "bind"]

Créez votre Dockerfile Testez-le pour en valider le bon fonctionnement.

Capture d'écran 2025-04-13 203824

  • Validation de l’image : via zonemaster

1.3. Délégation de la zone

Resource Records à transférer à la zone parente :

l2-2    IN    NS    ns1.l2-2.ephec-ti.be.
ns1.l2-2 IN    A     54.36.181.95

1.4. Validation du serveur autoritaire

Lien vers la validation Zonemaster :
[Zonemaster Report]

Analyse des résultats

  • Explication des tests effectués.
  • Points d’amélioration et captures d’écran des tests avant/après modifications.

Capture d'écran 2025-04-14 002220

2. Sécurisation DNSSEC

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

  • Documentation des modifications effectuées.
  • Observation des changements après redémarrage du serveur.

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

Commande de génération du record DS :

dnssec-dsfromkey -2 <zonekey>.key

Record DS généré :

l2-2.ephec-ti.be. IN DS 64472 13 2 14CD84D0889884FC57941D1B96F4DFA50009ABF34CE64A2B09C2D6DD2CB40C37

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

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?

dnssec-validation yes;


3. Pour aller plus loin (facultatif)

Si des fonctionnalités bonus ont été mises en place, elles sont documentées ici.

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