Introduction

La dernière édition du système d’exploitation pour serveur de Microsoft, Windows Server 2008 R2, sortie en février 2009, comporte de nombreuses nouveautés.

Ainsi, cet article a pour objectif de mettre en avant l’une de ces nouvelles fonctionnalités, celle qui permet d’intégrer l’évolution du protocole DNS vers un protocole plus récent et plus sécurisé : le DNSSEC. En effet, comme nous le verrons ce protocole permet de signer cryptographiquement les enregistrements DNS.

Qu’est- ce que DNSSEC ?

1.1. Préambule : Domain Name System (DNS)

L’accès à des services internet tourne aujourd’hui le plus souvent autour du service DNS. Ce service, tel un annuaire téléphonique, associe l’adresse IP d’un poste avec son nom. Donc lorsque un poste veut se connecté à un autre poste, il envoie une requête au serveur DNS (qui contient l’annuaire) qui lui retourne l’adresse IP du destinataire.

1.2. Les limites de DNS

La conception du service DNS n’étant pas sécurisé, différentes failles ont étés découvertes :

  • Interception des paquets :
  • L’une des principales faille permet d’intercepté les paquets transmis par le serveur DNS. Le problème c’est que le serveur DNS communique avec des paquets uniques et non signés.

  • Fabrication d’une réponse :
  • Une autre faille de sécurité permet de fabriquer de faux paquets DNS, c’est-à-dire que l’hacker peut donner une mauvaise adresse au client. Par exemple au lieu d’accéder au site de sa banque, le client peut être dirigé vers un site dangereux. DNS a un problème de sécurité au niveau de l’authentification.

  • Empoisonnement du cache DNS :
  • Cette faille permet à un poste malveillant de contaminer le serveur DNS. Une fois que le serveur DNS est contaminé, les réponses aux clients seront définit par le poste malveillant.

  • Attaque par déni de service via DNS :
  • En utilisant la faille précédente, l’hacker peut faire tomber de nombreux serveur web. Par exemple, l’hacker empoisonne un serveur DNS d’un FAI qui possède un nombre énorme de client, l’hacker peut profiter de ce serveur pour diriger tous les clients de ce serveur sur un serveur web qui tombera sous la charge du nombre important de connexion.

    L’une des attaques les plus dangereuses a été réalisée contre le FAI AT&Ts. Le pirate avait empoisonné le cache des serveurs DNS de ce FAI pour redirigé toute les requêtes vers le moteur de recherche GOOGLE sur un site de phishing. (Pour plus d’informations, lire cet article : https://www.pcworld.com/businesscenter/article/149126/dns_attack_writer_a_victim_of_his_own_creation.html)

1.3. Un service DNS sécurisé avec DNSSEC

Pour garantir l’authenticité et l’intégrité du service DNS, une extension lui a été créée : DNSSEC.

Cette extension permet de garantir au client que la réponse vient bien du serveur DNS enregistrer et que celle-ci n’a pas été modifiée pendant le transport.

L’extension du protocole DNS a été créée avec une contrainte importante : être compatible avec le protocole DNS. Pour plus de précisions et de détails concernant ce protocole, il est possible de se rapporter aux RFC 4033 et suivantes.

1.4. Le fonctionnement de DNSSEC

A l’aide de DNSSEC, l’enregistrement DNS dans l’annuaire est sécurisé. Les enregistrements sont signés à l’aide d’un système cryptographique asymétrique (clé privée, clé publique). Ce qui permet de protéger le DNS en fournissant les services suivants :

  •  sécurisation des transactions DNS ;
  •  sécurisation des informations contenues dans les messages DNS
  •  stockage et distribution des clefs nécessaires au bon fonctionnement des deux premiers services cités ci-dessus.

La clé privée (ZSK : Zone Signing Key) est utilisé par le DNS pour signé les enregistrements de la zone (qui sont des délégations administrative du DNS).Les parties publiques (KSK : Key Signing Key) des clefs sont stockées dans le fichier de zone à l’aide d’enregistrements KEY. Elles pourront donc être récupérées par le biais de requêtes DNS classiques et utilisées pour la vérification des signatures

Le service DNSSEC offre également la possibilité de déléguer des signatures : ainsi un registre appartenant à un domaine de 1er niveau (.com) peut annoncer qu’un sous domaine (supinfo.com) est signé. Ainsi, une chaine de confiance (« chain of trust ») peut être établie depuis la racine du DNS.

Remarque : il est possible d’allier DNSSEC à IPSEC pour améliorer les performances de signature.

L’implémentation de DNSSEC sous Windows Server 2008 R2 (côté serveur)

2.1. Prérequis

Cet article considère qu’un certain nombre de prérequis sont déjà effectifs sur votre serveur.

Tout d’abord, il est important de noter que cette fonctionnalité est une nouveauté accompagnant Windows Server 2008 R2. Il faut donc avoir ce système d’exploitation déjà installé sur votre machine, qui doit bien évidemment respecter les prérequis matériels de cette édition.

Ensuite, nous avons considéré ici que le réseau était configuré à l’aide d’Active Directory. Ainsi, le choix a été fait de présenter les procédures à effectuer en utilisant l’interface graphique dès que cela est possible.

Enfin, cet article part d’un réseau déjà existant, ainsi il faut déjà posséder un réseau configuré avec des zones DNS. L’implémentation de DNSSEC étant essentiellement une évolution et une configuration particulière de ces zones. Pour effectuer de telle modification, il est également nécessaire de se connecter au moins sous un compte administrateur appartenant au groupe « local ».

Ainsi, une fois ces prérequis assurés, la sécurisation du service DNS peut s’effectuer en seulement 9 grandes étapes :

  • Enregistrement du fichier de zone initiale ;
  • Génération des clés ;
  • Signature du fichier de zone ;
  • Chargement du fichier de zone ;
  • Distribution des « trust anchors » ;
  • Déploiement des certificats pour les serveurs DNS ;
  • Déploiement de la politique de sécurité d’IPSEC sur le Serveur DNS ;
  • Déploiement de la politique de sécurité d’IPSEC sur un poste client.

Remarque : pour une meilleure compréhension, pour chacune des étapes l’implémentation est expliquée dans un 1

er

temps théoriquement, puis la procédure à suivre est fournie et enfin, un exemple de configuration est développé, point par point, au fur et à mesure de l’avancée de l’explication.

2.2. Enregistrer un fichier de zone

La 1

ère

étape consiste à sauvegarder la zone initiale grâce à un fichier de zone.

Cette étape est nécessaire afin de récupérer la zone ultérieurement, une fois que la machine sera sécurisée et que la préparation pour la signature de la zone sera effectuée. Ceci ne peut être fait que depuis le serveur qui héberge la copie principale de la zone.

Voici la procédure à suivre :

 Dans une fenêtre de commande, taper la commande suivante :

dnscmd /ZoneExport <nom de la zone> <nom du fichier de zone à créer>

Avec :

  • <nom de la zone> à adresse FQDN de la zone ;
  • <nom du fichier de zone à créer> à nom de fichier de zone que l’on va créer pour contenir toutes les données de la zone.

Puis récupérer ce fichier, afin de pouvoir l’utiliser ultérieurement.

Exemple d’application :

 Dans notre exemple, le nom de la zone à sauvegarder est « supinfo.com » et le fichier de zone à créer est « filesupinfo.com ».

2.3. Génération des clés

A présent, il faut générer les paires de clés : une KSK ( Key Signing Key) et une ZSK ( Zone Signing Key) afin de signer les échanges afin d’assurer la sécurité.

  • Pour générer une clé KSK, il faut utiliser la commande suivante :
  • DnsCmd /OfflineSign /GenKey /Alg rsasha1 /Flags KSK /Length <longueur de la clé en bits> /Zone <nom de la zone> /SSCert /FriendlyName KSK-<nom de la zone>

    Avec :

    • <longueur de la clé en bits> à valeur numérique, comprise entre 512 et 4096, indiquant le nombre de bits utilisé pour la clé.

      A noter, que la longueur de la clé influe sur la sécurité et les performances. Ainsi, plus une clé sera longue, plus la sécurité sera assurée mais les performances réduites à cause de traitements plus conséquents.

    • KSK-<nom de la zone> à donne un nom au certificat de la clé KSK
  • Pour générer une clé ZSK, la commande est presque identique :
  • DnsCmd /OfflineSign /GenKey /Alg rsasha1 /Length <longueur de la clé en bits> /Zone <nom de la zone> /SSCert /FriendlyName ZSK-<nom de la zone>

    Avec ZSK-<nom de la zone> donnant un nom au certificat de la clé ZSK.

Exemple d’application :

Ici, la zone reste la même et la longueur de clé choisi est 1024.

Comme on peut le voir sur cette capture, les deux clés générées par ces commandes sont stockées localement dans un certificat auto-signé parmi les certificats de la machine, dans le conteneur MS-DNSSEC.

2.4. Signature du fichier de zone

Pour signer le fichier de zone, il faut entrer cette commande précisant notamment le nom du fichier de zone sauvegardé précédemment, les clés générées et le nom du fichier de zone signé ainsi créé.

DnsCmd /OfflineSign /SignZone /input <nom du fichier de zone en entrée> /output <nom du fichier de zone signé créé en sortie> /zone <nom de la zone> /signkey /ValidTo <date de fin de validité> /ValidFrom <date de début de validité> /cert /friendlyname ksk-<nom de la zone> /signkey /cert /friendlyname zsk-<nom de la zone>

Avec :

  • <nom du fichier de zone en entrée> : fichier de zone sauvegardé précédemment ;
  • <nom du fichier de zone signé créé en sortie> : fichier signé issue de l’exécution de cette commande ;
  • <date de fin de validité> : à indiquer au format UTC suivant YYYYMMDDHHMMSS. Ce paramètre est facultatif, ainsi s’il n’est pas spécifier les valeurs par défaut sont de 30 jours pour ZSK et 13 mois pour KSK ;
  • <date de début de validité> : à indiquer au format UTC suivant YYYYMMDDHHMMSS. Ce paramètre est facultatif, ainsi s’il n’est pas spécifier la valeur par défaut est la date d’exécution de la commande.

Exemple d’application :

Voici la suite de notre exemple, ici le choix a été fait de ne pas utiliser les paramètres facultatifs.

2.5. Chargement du fichier de zone signée

Le fichier de zone signé créé à l’étape précédente doit être à présent rechargé afin de remplacer l’ancien fichier de zone non signé.

Voici les étapes à suivre :

  • Suppression de la zone initiale non signée en tapant la commande suivante :
  • dnscmd /ZoneDelete <nom de zone> /dsdel /f

  • Chargement du fichier de zone en utilisant la commande :

    dnscmd /ZoneAdd <nom de la zone à créer> <type de zone> /file <nom du fichier de zone> /load

    Avec :

    • <nom de la zone à créer> ànom à donner à la nouvelle zone qui sera créée ;
    • <type de zone> àspécifiant le type courant de la zone (ex : /primary).
  • Changement du type de la zone grâce à la commande suivante :
  • dnscmd /ZoneResetType <nom de la zone crée> /dsprimary

Remarque : l’intégration d’une zone signée sous Active Directory peut nécessiter de mettre à jour manuellement tous les enregistrements des services et des autres ressources.

Exemple d’application :

Ici, la zone initiale « supinfo.com » est supprimée et remplacée par la nouvelle zone issue du chargement du fichier de zone signée créé précédemment. Cette nouvelle zone signée s’appelant également « supinfo.com » comme l’ancienne.

2.6. Distribution des « Trust anchors »

On enregistre les zones signés dans le DNS, pour crée une chaîne de confiance.

Cette partie est facultative pour l’enregistrement d’une zone autoritaire au serveur DNS.

o Tout d’abord, entrez la commande « dnsmgmt.msc » et faites « entrée ».

o Faites un clic droit sur le nom du DNS et propriété.

o Allez à l’onglet « Trust Anchors » et faites « Add »

o Dans le champ « name » taper le nom de la zone signé

o Ne pas changer les paramètres de protocole (DNSSEC) et d’algorithme (RSA/SHA-1)

o Collez la clé publique de la zone signée dans le champ « Public Key »

o Pour une clé KSK : Sélectionnez « Zone Signing Key » et « Secure entry point »

o Pour une clé ZSK : Sélectionnez seulement « Zone Signing Key »

Description: C:\Users\fabien\Desktop\6 - Trust anchor (ZSK).png

La clé publique de la zone signée se trouve dans : dnsmgmt à Forward Lookup à nom du dns à et ouvrir les DNSKEY qui contiennent la phrase encodé en 64 bits. On peut aussi grâce à Active Directory distribué les clés en mettant le fichier KEYSET-<nom de zone> dans l’AD.

2.7. Déployer les certificats pour l’authentification du Serveur DNS

Configurer les modèles de certificats

Ce modèle sert à fournir l’authentification pour les communications protégées de DNSSEC. Tout d’abord, il faut installer ADCS (Active Directory Certificate Service), en utilisant la clé privée créée précédemment et étant configurée en « Enterprise certification authority ».

o Tout d’abord, tapez la commande « certtmpl.msc » et faites entrée

o Faite un clic droit sur « RAS and IAS Server » et cliquez sur dupliqué.

o Sélectionnez Windows Server 2003 Entreprise et faites OK.

o Donnez un nom et sélectionnez « publish certifiacte in Active Directory »

o Choisissez maintenant l’onglet « Request Handling » et sélectionnez « Allow private key to be exported »

o Choisissez maintenant l’onglet extension et cliquez sur « Application Policies »

o Cliquez sur edit, ensuite Add, choisir « Domain Name System (DNS) Server trust » et faite OK

o Cliquez sur Add, choisir « IP security IKE intermediate et faite OK.

o Maintenant on doit avoir sous application policies :

§ Client authentication

§ Domain Name System (DNS) Server Trust

§ IP security IKE intermediate

§ Server authentication

o Cliquez OK, ensuite Key usage puis edit

o Sous « signature » choisir « Digital Signature » et « Signature is proof or origin (nonrepudiation)

o Sous « encryption » sélectionnez « allow key exchange only with key encryption “key encipherment”, puis sélectionnez “allow encryption of user data” ainsi que “make this extension critical »

Ensuite allez dans l’onglet security, et supprimez « RAS end IAS Server »

o Ajoutez « Domain Controllers », et le nom du groupe où DNSSec va être déployé. Leur donner les droits Enroll et Autoenroll et faites OK.

Publier le modèle de certificat.

o Tout d’abord, entrez la commande « certtmpl.msc » et faites entrée

o A gauche de la fenêtre, faites un clic droit sur certificate template, choisir new, et cliquez « Certificate Template to Issue »

o Choisir DNSSERVER et faites OK.

L’auto déploiement de certificat 

o Tout d’abord, entrez la commande « gpme.msc » et faites entrée

o Double cliqué sur « DomainControllers. <nomdomaine> », cliqué sur « Default Domain Controllers Policy » et OK.

o Dans l’arbre à gauche, allez dans « Computer Configuration\Policies\Windows Settings\Security Settings\Public Key Policies »

o Double cliquez sur « Certificate Services Client – Auto-enrollment. »

o Ensuite, remplissez comme l’imprime écran et faites OK

2.8. Déployer la politique de sécurité d’IPSEC au Serveur DNS

Déployer la politique d’IPSEC dans le DNS SERVER

o Tout d’abord, entrez la commande « gpme.msc » et faites entrée

o Double cliquez sur « DomainControllers. <nomdomaine> », cliqué « Default Domain Controllers Policy » et OK.

o Dans l’arbre a gauche, allez dans “Computer Configuration\Policies\Windows Settings\Security Settings\Windows Firewall with Advanced Security\Windows Firewall with Advanced Security – LDAP”

o Cliquez droit sur « Connexion Security Rules » et cliqué sur « New rule ».

o Choisir avancé et customize

o Cliqué sur add dans la partie gauche et choisir « Computer Certificate from this certification authority (CA) », Cliqué sur browse et choisir le nom du CA crée précédemment (SUPINFO-CA), cliqué OK, OK et next

o Au premier point choisir le protocole UDP et le port 53 puis laisser le 2eme, ensuite next

Refaite ensuite cette procédure en remplaçant le protocole UDP par TCP.

2.9. Déployer les certificats pour l’authentification des clients DNS

Configurer les modèles de certificat

o Tout d’abord, entrez la commande « certtmpl.msc » et faites « entrée »

o Faite un clic droit sur « workstation authentication » et duplicate Template

o Choisir « Windows Server 2003 Entreprise » et faite OK

o Donner un nom et choisir « Publish certificate in Active Directory »

o Aller à l’onglet security : cliquer sur add, entrée le nom du groupe qui utilisera DNSSEC, choisir allow pour enroll et autoenroll.

Publier les modèles de certificat

Tout d’abord, entrez la commande « certsrv.msc » et faites entrée.

  • Faites un clic droit sur certificate template et new.
  • Choisir le template crée précédemment (étape 6).

Permettre l’auto déploiement de certificat

Tout d’abord entrée la commande « gpme.msc » et faites entrée.

  • Double-clic sur le nom de la GPO utilisé pour les clients de DNS.
  • À gauche aller dans “Computer
  • Configuration\Policies\Windows Settings\Security Settings\Public Key Policies” .

  • Double-clic sur certificate Service Client – Auto-enrollment.
  • Mettre Configuration Model à enabled, sélectionner « Renew expired certificates, update … » et « Update certificates … » et cliqué sur OK.

2.10. Déployer la politique de sécurité d’IPSEC au client.

Configurer la politique de sécurité IPSEC

o Tout d’abord, entrez la commande « gpme.msc » et faites entrée.

o Créez une nouvelle GPO à l’aide du bouton du milieu du groupe de 3 boutons et faites OK après avoir rentré un nom.

o Allez dans “ Computer Configuration\Policies\Windows Settings\Security Settings\Windows Firewall with Advanced Security\Windows Firewall with Advanced Security – LDAP”.

o Clic droit sur « Connection Security Rules » et new rule.

o Choisir Custom, et next.

o Pour le point 2, choisir « These IP adresses » et faire Add.

o Choisir « predefined set of computers », choisir « DNS Servers », ensuite OK et next.

o Cliquez sur next, ensuite advanced et customize.

o Cliquez sur add pour « First authentication ».

o Choisir « Computer certificate from this certification authority (CA) ». Cliqué sur browse et choisir le certificat.

o Clic sur OK, OK de nouveau et next. Choisir le protocole UDP et au point 2 mettre en port 53. Clic sur next, next, donner un nom et Finish.

Refaites la manipulation mais en indiquant le protocole TCP.

Appliquer la GPO de DNSSEC au client

o Tout d’abord, entrez la commande « gpmc.msc » et faites entrée.

o Allez dans « Forest\Domains\<domain>\Group Policy Objets » et cliqué sur le nom de la GPO crée précédemment.

o En dessous de Security Filtering, cliquez sur Add.

o Ajoutez le groupe qui va recevoir les paramètres de sécurité de DNSSEC.

o Supprimez le groupe Authenticated users et faites OK.

Mise en place sur Windows 7

3.1. Tester la bonne mise place DNSSEC

o Tout d’abord ouvrez une invite de commande

o Entrez la commande : nslookup -q=txt « adresse du serveur DNS »

o Vérifiez dans le résultat affiche plus de 1500 octets (ici 2442 octets)

o « 193.50.27.66 DNS reply size limit is at least 2442 »

Références

·https://reseau.ciril.fr/wikidoc/Services/DNS

·https://www.cybervisible.fr/dnssec-dans-la-zone-nl

·https://www.fr.ipv6tf.org/DATA/REUNIONS/DOCUMENTS/tf-ipv6-dnsv6-dnssec.pdf

·https://technet.microsoft.com/fr-fr/library/cc728328(WS.10).aspx

·https://2003.jres.org/diapo/paper.107.pdf

·https://2009.jres.org/planning_files/article/pdf/5.pdf

·https://www.cybervisible.fr/dnssec-dans-la-zone-nl

·https://www.switch.ch/export/sites/default/about/news/2009/files/DNSSEC-brochure-F.pdf

·