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

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

Noms des auteurs :

  • Théo Mertens
  • Baris Ozcelik

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-3.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.181.144
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

Vérification avec dig :

![Capture d'écran 2025-04-13 235801](https://github.com/user-attachments/assets/00d51566-9565-4d5e-b373-1f2630bdd9f7)

1.4. Validation du serveur autoritaire

Lien vers la validation Zonemaster :
[Zonemaster Report](https://www.zonemaster.net/fr/result/d33de3071e6159e1)

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-3.ephec-ti.be. IN DS 64472 13 2 14CD84D0889884FC57941D1B96F4DFA50009ABF34CE64A2B09C2D6DD2CB40C37

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

  • Validation avec les outils recommandés.
  • Analyse des résultats.

2.4. Configurer un résolveur pour valider le DNSSEC

  • Explication des options Bind permettant de contrôler la validation DNSSEC.

3. Pour aller plus loin (facultatif)

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

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