Comment mettre en place le DNSSec ?

fingerprint sécurité

Les grands principes et l’implémentation du DNSsec en exemple

 

DNSec, quesako ?

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.port rj45 réseau

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 (MONDOMAINE.com) est signé. Ainsi, une chaine de confiance (« chain of trust ») peut être établie depuis la racine du DNS.

DNSSEC vous garantit la possibilité de vérifier que votre résolveur n’a pas été trompé par un

intermédiaire. Les données sont bien comme à l’origine.

 

Prérequis

  • 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.
  • Enregistrer un fichier de zone

 

1) Sauvegarde de la zone initiale via fichier de zone

Nécessaire afin de récupérer la zone plus tard, quand la machine sera sécurisée et préparation pour la signature de la zone faites. Ne peut être fait que depuis le serveur qui héberge la copie principale de la zone.

 

Voici la procédure

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

dnscmd /ZoneExport

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.

 

Démonstration

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

 

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 /Zone /SSCert /FriendlyName KSK-

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 /Zone /SSCert /FriendlyName ZSK-

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

Démonstration

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.

 

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 /output /zone /signkey /ValidTo /ValidFrom /cert /friendlyname ksk- /signkey /cert /friendlyname zsk-

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.

Démonstration

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

 

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 /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.

Démonstration

Ici, la zone initiale « test.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 « sutestpinfo.com » comme l’ancienne.

 

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- dans l’AD.

 

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 ».

  1. Démarrez la console de gestion « certtmpl.msc »
  2. Faite un clic droit sur « RAS and IAS Server » et cliquez sur dupliqué.
  3. Sélectionnez Windows Server 2003 Entreprise puis OK.
  4. Donnez un nom et sélectionnez « publish certifiacte in Active Directory »
  5. Choisissez maintenant l’onglet « Request Handling » et sélectionnez « Allow private key to be exported »
  6. Choisissez maintenant l’onglet extension et cliquez sur « Application Policies »
  7. Cliquez sur edit, ensuite Add, choisir « Domain Name System (DNS) Server trust » puis OK
  8. Cliquez sur Add, choisir « IP security IKE intermediate puis OK.
  9. Maintenant on doit avoir sous application policies :
Client authentication
Domain Name System (DNS) Server Trust
IP security IKE intermediate
Server authentication
  1. Cliquez OK, ensuite Key usage puis edit
  2. Sous « signature » choisir « Digital Signature » et « Signature is proof or origin (nonrepudiation)
  3. 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 »
  4. Ensuite allez dans l’onglet security, et supprimez « RAS end IAS Server »
  5. Ajoutez « Domain Controllers », et le nom du groupe où DNSSec va être déployé. Leur donner les droits Enroll et Autoenroll puis OK.

 

Publier le modèle de certificat.

  • Lancer la console de gestion des certificats « certtmpl.msc »

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

 

L’auto déploiement de certificat :

  1. Lancez la console de gestion « gpmc.msc »
  2. Double cliqué sur « DomainControllers.< nomdomaine> », cliqué sur « Default Domain Controllers Policy » puis OK.
  3. Dans l’arbre à gauche, allez dans « Computer Configuration\Policies\Windows Settings\Security Settings\Public Key Policies »
  4. Double cliquez sur « Certificate Services Client –Auto-enrollment. »
  5. Ensuite, remplissez comme l’imprime écran puis OK
  6. Déployer la politique de sécurité d’IPSEC au Serveur DNS

 

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

  1. Lancez la console de gestion« gpmc.msc »
  2. Double cliquez sur « DomainControllers. <nomdomaine> »,puis « Default Domain Controllers Policy » et choisir OK.
  3. 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”
  4. Cliquez droit sur « Connexion Security Rules » puis cliqué sur « New rule ».
  5. Choisir avancé et customize
  6. 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 (MONDOMAINE-CA), cliqué OK, puis  OK puis next
  7. Au premier point choisir le protocole UDP et le port 53 puis laisser le 2eme, puis next
  8. Refaite ensuite cette procédure en remplaçant le protocole UDP par TCP.

LSA AD sécurité

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

Configurer les modèles de certificat

  1. Lancez la console de gestion « certtmpl.msc »
  2. Faite un clic droit sur « workstation authentication »et duplicate Template
  3. Choisir « Windows Server 2003 Entreprise » puis OK
  4. Donner un nom et choisir « Publish certificate in Active Directory »
  5. 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 » puis entrée.
    1. Faites un clic droit sur certificate template et new.
    2. Choisir le template crée précédemment.

Permettre l’auto déploiement de certificat

  • Lancer la console des gestion des GPO « gpmc.msc »
  • 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 OK pour terminer.

coffre fort sécurité

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

Configurer la politique de sécurité IPSEC

  1. Lancer la console des gestion des GPO « gpmc.msc » des GPO « gpmc.msc »
  2. 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.
  3. Allez dans “Computer Configuration\Policies\Windows Settings\Security Settings\Windows Firewall with Advanced Security\Windows Firewall with Advanced Security – LDAP”.
  4. Clic droit sur « Connection Security Rules » et new rule.
  5. Choisir Custom, et next.
  6. Pour le point 2, choisir « These IP adresses » et faire Add.
  7. Choisir « predefined set of computers », choisir « DNS Servers », ensuite OK puis next.
  8. Cliquez sur next, ensuite advanced et customize.
  9. Cliquez sur add pour « First authentication ».
  10. Choisir « Computer certificate from this certification authority (CA) ». Cliqué sur « browse » et choisir le certificat.
  11. Clic sur OK, OK de nouveau et next. Choisir le protocole UDP et au point 2 mettre en port 53. Clicé sur « next », encore « next », donner un nom et choisir « Finish ».
  12. Refaites la même manipulation mais cette fois en indiquant le protocole « TCP ».

 

Appliquer la GPO de DNSSEC au client

  1. Lancer la console de gestion des GPO « gpmc.msc »
  2. Parcourir pour Aller dans « Forest\Domains\\Group Policy Objets » puis cliquez sur le nom de la GPO crée précédemment.
  3. En dessous de Security Filtering, cliquez sur « Add ».
  4. Y ajouter le groupe pour les paramètres de sécurité de DNSSEC.
  5. Supprimez le groupe Authenticated users puis OK.

poste de travail

Mise en place sur Windows 7

Vérifier en testant le fonctionnement de DNSSEC

  • Ouvrez une invite de commande cmd
    • Entrez la commande : nslookup -q=txt « adresse du serveur DNS »
  • Vérifiez dans le résultat affiche plus de 1500 octets (ici 2442 octets)
    • « 183.5.7.6 DNS reply size limit is at least 2442 »

 

 

 

logo1 ITconsult

 

 

Laisser un commentaire