Comment configurer DNSSEC sur un serveur de noms NSD sous Ubuntu 14.04

À propos de DNSSEC

DNSSEC (DNS Security Extensions) est une technologie conçue pour protéger les applications et les résolveurs DNS contre l’utilisation de données DNS falsifiées ou manipulées.

  • Le problème: * + Il est possible pour un attaquant d’altérer une réponse DNS ou poison le cache DNS et d’emmener les utilisateurs sur un site malveillant portant le nom de domaine légitime. dans leur barre d’adresse.

  • La solution: * + Les serveurs DNS faisant autorité configurés par DNSSEC empêchent ce type d’attaque en signant numériquement chaque enregistrement de ressource avec une clé privée. Le résolveur DNS vérifie l’intégrité d’un enregistrement de zone à l’aide de la clé publique et de la signature numérique.

A propos de NSD

Name Server Daemon (* NSD *) est un logiciel de serveur DNS ouvert faisant autorité, développé par NLNet Labs. Il utilise des fichiers de zone de style BIND pour une configuration facile.

Un serveur DNS faisant autorité uniquement fournit des réponses aux requêtes des zones dont il est responsable. Dans cet article, nous allons configurer nos propres serveurs de noms NSD faisant autorité pour deux noms de domaine. Nous allons configurer NSD pour fournir des réponses signées DNSSEC pour les deux noms de domaine.

Conditions préalables

Cet article nécessite que le lecteur connaisse les domaines suivants:

Domain Name Nameservers

example.com

master.example.com

slave.example.com

foobar.org

master.example.com

slave.example.com

  • Les deux gouttelettes suivantes utiliseront NSD: *

Hostname IP Address

master.example.com

1.1.1.1

slave.example.com

2.2.2.2

Vous devez remplacer par l’adresse IP de votre serveur de noms maître tout au long du didacticiel, et par l’adresse IP de votre serveur de noms esclave.

L’objectif de cet article est de montrer comment configurer un serveur de noms qui, quel que soit le statut DNSSEC de son propre domaine, peut desservir des domaines qui utilisent DNSSEC. Le domaine est utilisé pour les serveurs de noms pour plus de commodité; il n’est pas nécessaire de configurer DNSSEC pour le nom de domaine du serveur de noms. Les serveurs de noms pourraient tout aussi facilement être configurés sur master.my-soa.com et slave.my-soa.com.

Vous voudrez également avoir une adresse IP en tête où vous voulez que vos domaines soient résolus. Si vous n’avez pas encore d’hôte Web configuré pour ces domaines, vous pouvez créer un autre Droplet de test qui exécutera un serveur Web. Choisissez l’image * LAMP sur Ubuntu 14.04 *.

image: https: //assets.digitalocean.com/articles/dnssec_nsdnameserver/1.png [LAMP sur Ubuntu 14.04 image]

L’adresse IP du droplet LAMP sera * 3.3.3.3 *. Cette adresse IP sera utilisée comme enregistrement A pour les deux noms de domaine afin de vérifier s’ils ont été résolus à partir d’un navigateur Web. Vous devez remplacer votre adresse IP par l’hôte Web souhaité tout au long du didacticiel.

DNSSEC Terminologie

DNSSEC travaille sur le concept de public-key cryptography et introduit de nouveaux types d’enregistrement DNS. Dans cette section, nous discuterons de certains termes qui seront utilisés dans cet article.

Keys

  • * ZSK *: Z un S allumé K ey est une paire de clés privée / publique. La clé privée crée une signature numérique pour tous les enregistrements DNS tandis que la clé publique est utilisée par le résolveur DNS pour la vérifier.

  • * KSK *: K ey S allumer K ey est une paire de clés privée / publique. La clé privée signe la ZSK pendant que la clé publique la vérifie.

Records

  • * DNSKEY *: contient les clés publiques de KSK et ZSK.

  • * RRSIG *: R esource R ecord Sig La nature existe pour chaque enregistrement et fournit la signature numérique de cet enregistrement. L’enregistrement RRSIG est basé sur l’enregistrement lui-même et sur la ZSK.

  • * DS *: L’enregistrement D elegation S igner est utilisé pour vérifier l’intégrité des enregistrements DNSKEY. Cet enregistrement est entré dans le panneau de contrôle du registraire de domaine et réside sur le serveur de noms faisant autorité du TLD.

La configuration de DNSSEC pour un domaine nécessite des enregistrements appropriés avec les serveurs de noms et le registraire.

Comment fonctionne DNSSEC

Nous allons d’abord parler de * DNSSEC * du point de vue du propriétaire du domaine (c’est vous!). Vous voulez vous assurer que tous les enregistrements DNS provenant de vos serveurs de noms sont signés. Ainsi, si quelqu’un tente d’usurper vos enregistrements DNS, il sera identifié comme étant faux et vos visiteurs pourront éviter d’accéder à un site malveillant.

Alors, comment vous y prenez-vous? Tout d’abord, pour chaque domaine, vous devez générer deux paires uniques de clés privées / publiques sur le serveur de noms. Les clés publiques du domaine sont stockées dans les enregistrements DNSKEY, qui sont répertoriés dans le fichier de zone de ce domaine. Deux autres types d’enregistrements, les enregistrements DS et les enregistrements RRSIG, sont générés à partir des enregistrements DNSKEY. Ces trois types d’enregistrements sont tous liés par cryptographie. C’est-à-dire qu’une fois que vous avez vu l’un des trois, vous pouvez savoir si les deux autres sont valides.

(Remarque: pour plus de clarté, bien qu’il existe des multiples de chaque type d’enregistrement pour chaque domaine, nous les référencerons au singulier pour le reste de cette explication.)

Ensuite, vous téléchargez l’enregistrement DS sur votre registraire, qui le publie sur les serveurs de noms TLD de votre domaine. Étant donné que le seul moyen de publier un enregistrement DS est de passer par le registraire, cela prouve que le propriétaire du domaine est celui qui a publié l’enregistrement DS, ce qui prouve la validité de cet enregistrement DS. L’enregistrement DS a pour but d’établir une chaîne authentication entre le serveur de noms TLD et les serveurs de noms que vous exécutez pour votre domaine. Cela fonctionne car l’enregistrement DS est basé sur DNSKEY. Ainsi, tout résolveur DNS peut vérifier que votre DNSKEY correspond à l’enregistrement DS et qu’il est donc correct pour le domaine.

Un enregistrement RRSIG est une signature accompagnant d’autres types d’enregistrement DNS (tels que A, MX, etc.) basée sur la valeur de l’enregistrement elle-même (telle qu’une adresse IP) et sur DNSKEY.

Avec les enregistrements DNSKEY, DS et RRSIG configurés, DNSSEC est maintenant configuré pour votre domaine.

Nous en parlerons ensuite du point de vue de l’utilisateur. Supposons qu’un utilisateur souhaite visiter votre domaine, afin qu’il interroge un résolveur DNS sur l’enregistrement A de votre domaine. Dans cet exemple, le résolveur DNS récursif a déjà vérifié la validité de DNSKEY pour ce domaine par rapport à l’enregistrement DS sur les serveurs de noms TLD, bien qu’il puisse également le vérifier facilement pour la première fois.

  • Voici une illustration du fonctionnement de cette requête: *

    1. L’utilisateur envoie une requête pour un enregistrement A, qui atteint un serveur DNS récursif prenant en charge DNSSEC.

    2. Le serveur DNS découvre que le domaine demandé prend en charge DNSSEC en découvrant ses enregistrements DS. Il envoie une requête pour l’enregistrement A avec le bit DO à vos serveurs de noms faisant autorité.

    3. Vos serveurs de noms répondent avec l’enregistrement A et l’enregistrement RRSIG correspondant.

    4. Le serveur DNS récursif calcule la valeur de l’enregistrement A + de l’enregistrement DNSKEY qu’il possède dans le fichier et le compare à l’enregistrement RRSIG déchiffré. (Il est possible de vérifier l’enregistrement DS pour valider d’abord l’enregistrement DNSKEY, s’il ne figure pas dans le fichier.) Si les hachages correspondent, le serveur DNS renvoie l’enregistrement A à l’utilisateur, qui peut désormais consulter votre site Web.

image: https: //assets.digitalocean.com/articles/dnssec_nsdnameserver/2.png [validation DNSSEC]

Pour plus d’informations sur le fonctionnement de DNSSEC, vous pouvez consulter cet article. Pour une liste plus complète de la terminologie DNSSEC, consultez this.

Étape zéro - Vérifier le support du domaine et du bureau d’enregistrement

Avant de décider de configurer DNSSEC sur vos propres serveurs de noms NSD, assurez-vous que votre extension de domaine (.com, .org, etc.) et votre registraire prennent en charge DNSSEC.

Pour vérifier si une extension de domaine est prête pour DNSSEC, recherchez son enregistrement DNSKEY à l’aide de la commande suivante:

dig DNSKEY . +short

Cela devrait renvoyer les clés publiques comme suit:

256 3 8 AQPbokupKUJ5LLAtDEs6R3nDOHxF2jQEFtJEFTiDcfbsZia4fg3EK9Wv D9ZIr+7t2n1ddqRGHnTTInHTjduaKFPqm2iKaDHdrc6095o1mzqojnd1 bTtI45XNu61QmT5IU4VPT7HDUSby+53gLAsjLPyNsNEMp7Cc52RVxCHD no9efw==
257 3 8 AQPDzldNmMvZFX4NcNJ0uEnKDg7tmv/F3MyQR0lpBmVcNcsIszxNFxsB fKNW9JYCYqpik8366LE7VbIcNRzfp2h9OO8HRl+H+E08zauK8k7evWEm u/6od+2boggPoiEfGNyvNPaSI7FOIroDsnw/taggzHRX1Z7SOiOiPWPN IwSUyWOZ79VmcQ1GLkC6NlYvG3HwYmynQv6oFwGv/KELSw7ZSdrbTQ0H XvZbqMUI7BaMskmvgm1G7oKZ1YiF7O9ioVNc0+7ASbqmZN7Z98EGU/Qh 2K/BgUe8Hs0XVcdPKrtyYnoQHd2ynKPcMMlTEih2/2HDHjRPJ2aywIpK Nnv4oPo/

L’absence de sortie indique l’absence de prise en charge de DNSSEC pour cette extension de domaine.

Il ne suffit pas que votre TLD prenne en charge DNSSEC; le registraire de domaine doit également avoir la possibilité de saisir des enregistrements DS dans son panneau de configuration. Cela peut être confirmé par Google "dnssec" ou en demandant directement à un registraire. Voici quelques bureaux d’enregistrement populaires qui prennent en charge DNSSEC:

Une fois que vous avez confirmé que votre TLD et votre registraire de domaine prennent en charge DNSSEC, vous pouvez commencer à configurer vos serveurs de noms personnalisés.

Première étape - Installer et configurer NSD sur les deux serveurs

Dans cette étape, nous allons installer et configurer NSD sur les serveurs maître et esclave. Nous allons également configurer des enregistrements DNS pour le domaine * example.com *. Cette section servira de configuration rapide pour NSD. Lisez cet article pour des instructions détaillées sur la configuration. NSD.

Serveur maître

En plus du package du serveur NSD, le serveur maître nécessite les packages suivants:

  • * ldnsutils *: Pour la génération de clé DNSSEC et la signature de zone.

  • * haveged *: Pour introduisant une entropie croissante. L’installation de ce package accélère le processus de génération de clé.

Pour éviter une erreur lors de l’installation, créez un utilisateur système nommé:

useradd -r nsd

L’option crée un utilisateur du système. Mettez à jour le référentiel et installez NSD, ldnsutils et haveged.

apt-get update
apt-get install nsd ldnsutils haveged

Le transfert de zone DNS du serveur maître au serveur esclave est sécurisé par un secret partagé. Utilisez la commande suivante pour générer le secret de manière aléatoire:

dd if=/dev/random count=1 bs=32 2> /dev/null | base64

Notez la chaîne de sortie. Nous allons l’utiliser dans le fichier de configuration des serveurs maître et esclave.

Créez un répertoire séparé pour les fichiers de zone:

mkdir /etc/nsd/zones

Editer le fichier de configuration de NSD:

nano /etc/nsd/nsd.conf

La première est la section qui spécifie les emplacements des fichiers de zone, des journaux et des fichiers PID (ID de processus):

server:
   username: nsd
   hide-version: yes
   zonesdir: "/etc/nsd/zones"
   logfile: "/var/log/nsd.log"
   pidfile: "/run/nsd/nsd.pid"

La directive empêche NSD de retourner sa version lorsque la requête de classe CHAOS est terminée.

Dans la section, nous définissons une clé nommée * mykey * et introduisons le secret généré précédemment.

key:
   name: "mykey"
   algorithm: hmac-sha256
   secret: ""

Chaque section contiendra le nom de domaine, le nom de fichier de la zone et les détails de son serveur esclave:

zone:
   name:
   zonefile: .zone
   notify:  mykey
   provide-xfr:  mykey
zone:
   name:
   zonefile: .zone
   notify:  mykey
   provide-xfr:  mykey

Les lignes et doivent avoir * l’adresse IP du serveur esclave *. Enregistrez le fichier et créez un fichier de zone pour * exemple.com *.

nano /etc/nsd/zones/.zone

Nous allons ajouter les données suivantes dans le fichier de zone. Les variables ne sont pas marquées, car vous devrez personnaliser toutes les entrées:

$ORIGIN example.com.
$TTL 1800
@       IN      SOA     master.example.com.    email.example.com. (
                       2014080301
                       3600
                       900
                       1209600
                       1800
                       )
@       IN      NS      master.example.com.
@       IN      NS      slave.example.com.
master  IN      A       1.1.1.1
slave   IN      A       2.2.2.2
@       IN      A       3.3.3.3
www     IN      CNAME   example.com.
@       IN      MX      10 aspmx.l.google.com.
@       IN      MX      20 alt1.aspmx.l.google.com.
@       IN      MX      20 alt2.aspmx.l.google.com.
@       IN      MX      30 aspmx2.googlemail.com.
@       IN      MX      30 aspmx3.googlemail.com.

Enregistrez ce fichier et créez un fichier de zone pour * foobar.org *.

nano /etc/nsd/zones/.zone

Le deuxième fichier de zone:

$ORIGIN foobar.org.
$TTL 1800
@       IN      SOA     master.example.com.    email.example.com. (
                       2014080301
                       3600
                       900
                       1209600
                       1800
                       )
@       IN      NS      master.example.com.
@       IN      NS      slave.example.com.
@       IN      A       3.3.3.3
www     IN      CNAME   foobar.org.
@       IN      MX      0 mx.sendgrid.com.

Enregistrez le fichier et vérifiez les erreurs de configuration à l’aide de la commande suivante:

nsd-checkconf /etc/nsd/nsd.conf

Une configuration valide ne doit rien sortir. Redémarrez le serveur NSD:

service nsd restart

Vérifiez si les enregistrements DNS sont en vigueur pour les domaines à l’aide de la commande.

dig ANY . @localhost +norec +short

Un exemple de sortie de cette commande:

master.example.com. email.example.com. 2014080301 3600 900 1209600 1800
master.example.com.
slave.example.com.
3.3.3.3
10 aspmx.l.google.com.
20 alt1.aspmx.l.google.com.
20 alt2.aspmx.l.google.com.
30 aspmx2.googlemail.com.
30 aspmx3.googlemail.com.

Répétez la commande pour le deuxième domaine:

dig ANY . @localhost +norec +short

Nous avons correctement installé et configuré NSD sur le serveur maître et avons également créé deux zones.

Serveur Esclave

Le serveur esclave n’a besoin que du package NSD, aucune génération de clé ni signature n’étant effectuée dessus.

Créez un utilisateur système nommé:

useradd -r nsd

Mettez à jour le référentiel et installez NSD:

apt-get update
apt-get install nsd

Créez un répertoire pour les fichiers de zone:

mkdir /etc/nsd/zones

Editez le fichier de configuration NSD:

nano /etc/nsd/nsd.conf

Ajouter des directives de configuration:

server:
   username: nsd
   hide-version: yes
   zonesdir: "/etc/nsd/zones"
   logfile: "/var/log/nsd.log"
   pidfile: "/run/nsd/nsd.pid"

key:
   name: "mykey"
   algorithm: hmac-sha256
   secret: ""

zone:
   name:
   zonefile: .zone
   allow-notify:  mykey
   request-xfr:  mykey
zone:
   name:
   zonefile: .zone
   allow-notify:  mykey
   request-xfr:  mykey

Le for * mykey * doit être exactement le même que celui saisi dans le serveur maître. Utilisez l’adresse * du serveur maître * dans les lignes et.

Recherchez les erreurs de configuration:

nsd-checkconf /etc/nsd/nsd.conf

Redémarrez le service NSD:

service nsd restart

Forcer un transfert de zone pour les deux domaines avec la commande:

nsd-control force_transfer
nsd-control force_transfer

Maintenant, vérifiez si ce serveur peut répondre aux requêtes du domaine * exemple.com *.

dig ANY . @localhost +norec +short

Si cela renvoie le même résultat que le maître, cette zone est configurée correctement. Répétez la commande pour le domaine * foorbar.org * pour vérifier si sa zone est correctement configurée. Nous avons maintenant une paire de serveurs DNS NSD qui font autorité pour les domaines * example.com * et * foobar.org *.

À ce stade, vous devriez pouvoir visiter vos domaines dans votre navigateur Web. Ils seront résolus sur le serveur LAMP par défaut que nous avons configuré ou sur l’hôte que vous avez spécifié.

Deuxième étape - générer les clés et signer la zone

Dans cette étape, nous allons générer une paire (privée et publique) de clés de signature de zone (ZSK) et de clés de signature de clé (KSK) pour chaque domaine. Les commandes de la section doivent être exécutées sur le serveur maître, sauf indication contraire.

Remplacez le répertoire actuel par le répertoire de zone de NSD:

cd /etc/nsd/zones

La commande génère des fichiers de clés et affiche leurs noms au format + K <domaine> + <algorithme> + <id-clé> +. Au lieu de noter ce nom, nous l’attribuerons à une variable afin de pouvoir le référencer facilement par la suite.

Générez la ZSK dans l’algorithme:

export ZSK=`ldns-keygen -a RSASHA1-NSEC3-SHA1 -b 1024 `

Générez ensuite une KSK en ajoutant l’option à la même commande:

export KSK=`ldns-keygen -k -a RSASHA1-NSEC3-SHA1 -b 2048 `

Ce répertoire aura maintenant les six fichiers supplémentaires suivants:

  • 2 clés privées avec une extension.

  • 2 clés publiques avec une extension.

  • 2 enregistrements DS avec une extension.

Dans la * Troisième étape *, nous allons générer des enregistrements DS d’un * type de résumé différent *. Pour éviter toute confusion, supprimez ces fichiers d’enregistrement DS.

rm $ZSK.ds $KSK.ds

Répétez les commandes pour le domaine * foobar.org *:

export ZSK2=`ldns-keygen -a RSASHA1-NSEC3-SHA1 -b 1024 `
export KSK2=`ldns-keygen -k -a RSASHA1-NSEC3-SHA1 -b 2048 `
rm $ZSK2.ds $KSK2.ds

La commande est utilisée pour signer la zone DNS. L’option de cette commande prend une valeur salt. Nous générons des caractères aléatoires, calculons un hachage SHA1 et transmettons cette valeur en tant que sel.

ldns-signzone -n -p -s $(head -n 1000 /dev/random | sha1sum | cut -b 1-16) .zone $ZSK $KSK

Un nouveau fichier nommé * exemple.com.zone.signed * est créé.

Exécutez la commande pour le domaine * foobar.org *:

ldns-signzone -n -p -s $(head -n 1000 /dev/random | sha1sum | cut -b 1-16) .zone $ZSK2 $KSK2

NSD doit être configuré pour utiliser les fichiers de zone. Editez le fichier de configuration:

nano /etc/nsd/nsd.conf

Modifiez l’option sous la section pour les deux domaines.

zone:
   name: example.com
   zonefile: example.com.zone
   notify: 2.2.2.2 mykey
   provide-xfr: 2.2.2.2 mykey
zone:
   name: foobar.org
   zonefile: foobar.org.zone
   notify: 2.2.2.2 mykey
   provide-xfr: 2.2.2.2 mykey

Pour appliquer les modifications et recharger le fichier de zone, exécutez les commandes suivantes:

nsd-control reconfig
nsd-control reload
nsd-control reload

Recherchez les enregistrements DNSKEY en effectuant une requête DNS:

dig DNSKEY . @localhost +multiline +norec

Cela devrait imprimer les clés publiques de ZSK et KSK comme suit:

; <<>> DiG 9.9.5-3-Ubuntu <<>> DNSKEY example.com. @localhost +norec +multiline
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14231
;; flags: qr aa; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.                IN DNSKEY

;; ANSWER SECTION:
example.com.            1800 IN DNSKEY 256 3 7 (
                               AwEAAbUfMzOJWWWniRSwDb2/2Q6bVpVoEPltPj0h5Qu6
                               hzBdYA4HJYlVXTJ6veNENI/5lV1y84Dhc47j4VAoA66F
                               j7xuTTZjzcuu0KAkQg8Jr2uCmmOuI/rZR7sWZMooHFZ1
                               JPPJZak8HKSNGvHXlMJiz9JPOA3ebJ/liG6lCGJshPah
                               ) ; ZSK; alg = NSEC3RSASHA1; key id = 2870
example.com.            1800 IN DNSKEY 257 3 7 (
                               AwEAAeMDpaVQJixHg1deUDBRRwVldJadgyRZPlieSoVf
                               ps3tYPvTD0nVBOQxenf+m4N/ALpnC5TH4GpxZLYS9IFc
                               rujudQrqA0UuTXBvIWP+XvuJ1yoyZCxO9PHV+GsefjI7
                               kvnmBD1V9UJlGVlHlB3YXHa3f/J5E0RujMnE4a19KG7b
                               HkYebK/2zjzhqXan9442VAG6jhw0lUUJZrCpZjMDEi9n
                               LhJOUSymxglQv1BftALmYnYcuHId9NCwZbvZMb7bS239
                               bm6ONjwqSHqW2slNhBnDVnng2tDfNwjR+eDz5oUbtw4b
                               LMtVACx1WzJEKbIN4rHY7aRe7Ao+4jvSJ8ozVrM=
                               ) ; KSK; alg = NSEC3RSASHA1; key id = 17385

;; Query time: 5 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Sep 04 01:37:18 IST 2014
;; MSG SIZE  rcvd: 467

Répétez la commande pour le deuxième domaine et vérifiez la réponse:

dig DNSKEY . @localhost +multiline +norec

Le serveur maître fournit maintenant des réponses DNS * signées *.

Esclave

Cette zone doit maintenant être transférée sur le serveur esclave. Connectez-vous au serveur esclave et forcez le transfert des deux zones.

nsd-control force_transfer
nsd-control force_transfer

Requête pour les enregistrements DNSKEY sur ce serveur:

dig DNSKEY . @localhost +multiline +norec

Cela devrait retourner le même DNSKEY que nous avons vu sur le serveur maître. Les deux serveurs DNS ont été configurés pour fournir * des réponses DNS signées *.

Troisième étape - Générer des enregistrements DS

Dans cette étape, nous allons générer deux enregistrements DS que vous entrerez dans la prochaine étape dans le panneau de contrôle du registraire de domaine. Les enregistrements DS auront les spécifications suivantes:

Algorithm Digest Type

DS record 1

RSASHA1-NSEC3-SHA1

SHA1

DS record 2

RSASHA1-NSEC3-SHA1

SHA256

  • Les commandes suivantes doivent être exécutées sur le serveur maître. *

La commande génère des enregistrements DS à partir du fichier de zone signé. Basculez vers le répertoire des fichiers de zone et exécutez les commandes:

cd /etc/nsd/zones
ldns-key2ds -n -1 .zone.signed && ldns-key2ds -n -2 .zone.signed

L’option utilise SHA1 comme fonction de hachage et SHA256 pour la même chose. L’option écrit l’enregistrement de résultat DS sur stdout au lieu d’un fichier.

Ceci retourne deux lignes de sortie:

example.com. 1800    IN      DS      17385 7 1 c1b9f7f1425bc44976dc19165e48c60032e7820d
example.com. 1800    IN      DS      17385 7 2 98216f4d66d24dbb752c46523a747a97bbad49d5846bbaa6256b6950b4a40995

Le tableau suivant montre chaque champ de ces enregistrements DS:

Key tag Algorithm Digest type Digest

DS record #1

17385

7

1

c1b9f7f1[…]

DS record #2

17385

7

2

98216f4d[..]

Générez des enregistrements DS pour le * foobar.org *:

cd /etc/nsd/zones
ldns-key2ds -n -1 .zone.signed && ldns-key2ds -n -2 .zone.signed

Notez toutes les pièces des quatre enregistrements DS (deux par domaine), comme indiqué dans le tableau ci-dessus. Nous aurons besoin d’eux dans la prochaine étape.

Quatrième étape - Configurer les enregistrements DS avec le registraire

Dans cette section, nous ajouterons les enregistrements DS dans le panneau de configuration du registraire de domaine. Ceci publie les enregistrements DS sur les serveurs de noms du domaine de premier niveau (TLD). Cette étape utilisera le panneau de configuration de GoDaddy comme exemple.

Connectez-vous à GoDaddy et choisissez votre nom de domaine.

  • Installation du serveur de noms pour la première fois uniquement: *

La section * Host Names * doit être effectuée une fois pour configurer les serveurs de noms pour la première fois. Si votre domaine de serveur de noms est différent de * my-soa.com *, vous devez suivre cette étape pour le domaine de serveur de noms * only *.

Cliquez sur * Gérer * dans la section * Noms d’hôtes *.

image: https: //assets.digitalocean.com/articles/dnssec_nsdnameserver/3.png [Noms d’hôte GoDaddy]

Certains registraires peuvent parler de «serveurs de noms enfants». Cliquez sur * Ajouter un nom d’hôte * et créez un nom d’hôte * maître. * Pointant vers l’adresse IP du premier droplet.

image: https: //assets.digitalocean.com/articles/dnssec_nsdnameserver/4.png [Ajout de noms d’hôte]

Cliquez sur * Ajouter *. Répétez cette étape une fois de plus et créez un nom d’hôte * slave. * Pointant vers l’IP du second Droplet.

  • Tous les domaines: *

Ces deux noms d’hôte doivent être définis en tant que serveurs de noms pour ce domaine. Cliquez sur * Gérer * dans la section * Serveurs de noms * et ajoutez les deux.

image: https: //assets.digitalocean.com/articles/dnssec_nsdnameserver/5.png [Ajout de serveurs de noms]

Cliquez sur * Gérer * dans la section * Enregistrements DS *.

image: https: //assets.digitalocean.com/articles/dnssec_nsdnameserver/6.png [GoDaddy gère les enregistrements DS]

Remplissez les détails dans les champs appropriés. Référencez le graphique à l’étape précédente si nécessaire.

image: https: //assets.digitalocean.com/articles/dnssec_nsdnameserver/7.png [Entrez la balise clé, l’algorithme, le type de résumé et le résumé pour le premier enregistrement DS.]

image: https: //assets.digitalocean.com/articles/dnssec_nsdnameserver/8.png [Entrez la balise clé, l’algorithme, le type de résumé et le résumé pour le deuxième enregistrement DS.]

Enregistrez les deux enregistrements.

image: https: //assets.digitalocean.com/articles/dnssec_nsdnameserver/9.png [image]

Après quelques minutes, recherchez les enregistrements DS.

dig DS . +trace +short | egrep '^DS'

La sortie doit contenir les deux enregistrements DS.

DS 17385 7 2 98216F4D66D24DBB752C46523A747A97BBAD49D5846BBAA6256B6950 B4A40995 from server 192.55.83.30 in 1 ms.
DS 17385 7 1 C1B9F7F1425BC44976DC19165E48C60032E7820D from server 192.55.83.30 in 1 ms.

Lorsque vous suivez ces étapes pour le deuxième domaine, assurez-vous de définir les serveurs de noms sur le domaine de serveur de noms approprié.

image: https: //assets.digitalocean.com/articles/dnssec_nsdnameserver/10.png [Deuxième serveur de noms de domaine]

Aucun nom d’hôte ne doit être créé pour ce domaine.

Cinquième étape - Vérifier le fonctionnement de DNSSEC

DNSSEC peut être vérifié sur les sites suivants:

Un test réussi du premier site Web affiche le résultat suivant:

image: https: //assets.digitalocean.com/articles/dnssec_nsdnameserver/11.png [Test DNSSEC]

Prenez note des lignes marquées. En termes simples, ils lisent:

  1. L’enregistrement DS n ° 2 (type de résumé SHA256) vérifie la KSK (code d’identification 17385)

  2. KSK (clé ID 17385) vérifie l’autre DNSKEY (ZSK)

  3. ZSK (clé ID 2870) vérifie la signature de l’enregistrement A

Les serveurs maître et esclave fournissent désormais des réponses DNSSEC.

Vous devriez également pouvoir afficher les deux domaines dans votre navigateur Web. Ils doivent pointer vers la page Apache / Ubuntu par défaut sur le serveur Web de test que nous avons configuré sur 3.3.3.3, ou sur les hôtes Web que vous avez spécifiés dans les entrées * @ * des domaines.

Modification des enregistrements de zone

Pour modifier un enregistrement de zone, le fichier non signé (* .zone *) doit être modifié. Une fois modifié, le numéro de série SOA doit être incrémenté et la zone doit être à nouveau signée pour que les modifications prennent effet.

La série SOA est au format suivant.

YYYYMMDD

Lorsque vous modifiez les fichiers de zone, réglez-les sur la date actuelle. Ainsi, lors de la première modification le 22 septembre 2014, la série serait:

20140922

Les deux premiers chiffres doivent être incrémentés lors des modifications ultérieures effectuées le même jour. Si vous oubliez d’incrémenter la série SOA, les modifications apportées au fichier de zone ne seront pas transférées au serveur esclave.

  • Remarque: Toute modification apportée au fichier + .signed + directement invalidera la signature et entraînera un échec de validation. *

Au lieu d’entrer de longues commandes à chaque fois pour signer la zone, nous allons créer un script shell. Créez un fichier * sur le serveur DNS maître * et modifiez-le.

nano /usr/local/bin/dnszonesigner

Collez le code suivant:

#!/bin/bash
PDIR=`pwd`
ZONEDIR="/etc/nsd/zones" #location of your zone files
DOMAIN=$1
cd $ZONEDIR
KSK=$(basename $(grep -r "`grep '(ksk)' $DOMAIN.zone.signed | cut -f3-10`" K$DOMAIN.*.key | cut -d':' -f1) .key)
ZSK=$(basename $(grep -r "`grep '(zsk)' $DOMAIN.zone.signed | cut -f3-10`" K$DOMAIN.*.key | cut -d':' -f1) .key)
/usr/bin/ldns-signzone -n -p -s $(head -n 1000 /dev/random | sha1sum | cut -b 1-16) -f $ZONEDIR/$DOMAIN.zone.signed $DOMAIN.zone $ZSK $KSK
/usr/sbin/nsd-control reload $DOMAIN
/usr/sbin/nsd-control notify $DOMAIN
cd $PDIR

Vous devriez reconnaître la plupart de ces lignes dans les étapes précédentes du didacticiel, où nous les avons exécutées manuellement.

Rendre ce fichier exécutable:

chmod +x /usr/local/bin/dnszonesigner

Maintenant, après avoir ajouté, supprimé ou modifié des enregistrements DNS, veillez à * incrémenter la série SOA * et à exécuter ce script.

dnszonesigner

Ce script shell fonctionne à partir de n’importe quel répertoire, comme nous l’avons placé dans un répertoire défini dans la variable.

Lecture supplémentaire

Copie supplémentaire par Sharon Campbell