doc:dns
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
doc:dns [2014/04/06 09:31] – bertrand.bonnefoy-claudet | doc:dns [2020/07/19 07:54] (Version actuelle) – typo fix chiahetcho | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | Le DNS (//Domain Name System//) est le nom du protocole et de la base de données permettant la traduction entre nom de domaine et addresse | + | ====== DNS ====== |
+ | |||
+ | Le DNS (//Domain Name System//) est le nom du protocole et de la base de données permettant la traduction entre nom de domaine et adresse | ||
===== Pourquoi le DNS ? ===== | ===== Pourquoi le DNS ? ===== | ||
Ligne 13: | Ligne 15: | ||
==== DNS vs hosts.txt ==== | ==== DNS vs hosts.txt ==== | ||
- | À l' | + | À l' |
Grâce au DNS, aucun serveur n'est obligé de connaître toutes les correspondances entre noms et adresses. On dit que le système est réparti. En revanche, il n'est pas décentralisé car il y a une hiérarchie entre les serveurs DNS dans laquelle quelques serveurs //racine// sont au sommet. | Grâce au DNS, aucun serveur n'est obligé de connaître toutes les correspondances entre noms et adresses. On dit que le système est réparti. En revanche, il n'est pas décentralisé car il y a une hiérarchie entre les serveurs DNS dans laquelle quelques serveurs //racine// sont au sommet. | ||
===== Comment ça marche ? ===== | ===== Comment ça marche ? ===== | ||
+ | |||
+ | ==== Protocole ==== | ||
+ | |||
+ | On a tendance à penser que le DNS envoie les données uniquement en [[UDP]] sur le port 53 mais en réalité le [[TCP]] peut également être utilisé. En effet, originellement, | ||
+ | |||
+ | [[http:// | ||
==== Fichier de zone ==== | ==== Fichier de zone ==== | ||
- | Le fichier de zone décrit une zone du DNS. Ce fichier a une syntaxe définie par la RFC 1035 (section 5) et la RFC 1034 (section 3.6.1) et ne dépend pas du serveur utilisé. | + | Sur le serveur, un fichier de zone décrit une zone du domaine. Ce fichier a une syntaxe définie par la [[http:// |
Voici un exemple de fichier de zone : | Voici un exemple de fichier de zone : | ||
Ligne 52: | Ligne 60: | ||
la définition du TTL n’est pas obligatoire. '' | la définition du TTL n’est pas obligatoire. '' | ||
- | === Enregistrements | + | === Enregistrements |
* A : renseigne une adresse IPv4. | * A : renseigne une adresse IPv4. | ||
Ligne 62: | Ligne 70: | ||
* TXT : peut contenir n’importe quel texte, entre guillemets doubles. | * TXT : peut contenir n’importe quel texte, entre guillemets doubles. | ||
- | === Enregistrements DNSSEC | + | === Sécurité |
- | DNSSEC ajoute plusieurs types d’enregistrement | + | Le système des DNS n'a pas pris en compte la sécurité lors de sa création. Une étude de ses failles a été faite dans les années 2000 (rapportée dans la [[https:// |
- | * DS : Delegation Signer. Équivalent | + | === Note sur le serial === |
+ | Le serial est un numéro qui identifie la version de votre fichier de zone. Il est important | ||
- | === Note sur le serial === | ||
- | Le serial est un numéro qui identifie la version de votre fichier de zone. Il est important de **toujours** l’augmenter à chaque modification. En effet, c’est sur ce nombre que se base les serveurs caches et //slave// pour savoir si leur cache est toujours à jour. Si vous avez un serial inférieur à celui enregistré dans l’autre serveur, celui-ci ne mettra pas à jour votre zone. Il n’est en revanche pas nécessaire que le serial soit incrémenté de 1 à chaque fois. Par exemple, vous pouvez vous baser sur la date du jour et ajouter un nombre qui identifie la modification du jour : 2014030563 serait la 63< | ||
==== Résolution ==== | ==== Résolution ==== | ||
=== Utiliser dig === | === Utiliser dig === | ||
Ligne 137: | Ligne 144: | ||
</ | </ | ||
- | On peut aussi lui demander de vérifier les zones en utilisant [[#DNSSEC|DNSSEC]]. Si la zone est validée, le flag '' | + | On peut aussi lui demander de vérifier les zones en utilisant [[DNSSEC]]. Si la zone est validée, le flag '' |
$ dig +dnssec isc.org | $ dig +dnssec isc.org | ||
; <<>> | ; <<>> | ||
Ligne 188: | Ligne 195: | ||
</ | </ | ||
- | ===== DNSSEC ===== | + | '' |
- | ==== Fonctionnement ==== | + | |
- | + | ||
- | DNSSEC (//DNS SECurity Extensions// | + | |
- | + | ||
- | Le protocole utilise deux types de clefs : | + | |
- | + | ||
- | * Une clef signataire de zone (ou ZSK pour //Zone Signing Key//) : généralement petite (1024 bit par défaut) car elle doit être utilisée de nombreuses fois pour signer chaque enregistrement. Il est aussi bon de la changer souvent, tous les quelques mois par exemple. | + | |
- | * Une clef signataire de clef (ou KSK pour //Key Signing Key//) : généralement grande car elle ne sert qu’à signer la ZSK. | + | |
- | + | ||
- | Un enregistrement DS permet de déléguer la confiance d’une zone. Il contient le hash de la KSK de la zone fille. En connaissant ce hash, il est possible de vérifier et faire confiance à la KSK de la zone fille. On peut alors se servir de cette KSK pour vérifier la ZSK et lui faire confiance. On peut alors valider les domaines de la zone fille. | + | |
- | + | ||
- | De cette manière, seule la clef de la racine est nécessaire à valider les différentes zones du DNS. | + | |
- | + | ||
- | ==== Génération des clefs ==== | + | |
- | Pour générer une clef signataire de clef (//Key Signing Key// ou KSK), utilisez la commande suivante | + | |
< | < | ||
- | dnssec-keygen | + | $ dig -x 65.155.228.160 |
+ | … | ||
+ | ;; ANSWER SECTION: | ||
+ | 65.155.228.160.in-addr.arpa. 86400 IN PTR quigon.rez-gif.supelec.fr. | ||
+ | … | ||
</ | </ | ||
- | |||
- | Cela va créer deux fichiers du type Kfederez.net.+007+049632.key et Kfederez.net.+007+049632.private. Pour plus de simplicité par la suite, renommez-les en, par exemple, federez.ksk.key et federez.ksk.private | ||
- | |||
- | |||
- | Pour générer la clef signataire de zone (//Zone Signing Key// ou ZSK), utilisez la commade suivante : | ||
- | < | ||
- | dnssec-keygen -a RSASHA256 -b 2048 federez.net | ||
- | </ | ||
- | |||
- | De même, renommez les fichiers avec un nom plus explicite. | ||
- | |||
- | ==== Signature d’une zone ==== | ||
- | |||
- | ajoutez en fin de fichier de zone : | ||
- | < | ||
- | $include / | ||
- | $include / | ||
- | </ | ||
- | |||
- | Pour signer la zone // | ||
- | < | ||
- | dnssec-signzone -e20480101000000 -p -t -g -k federez.ksk.key -o federez.net federez.net.zone federez.zsk.key | ||
- | </ | ||
- | |||
- | où 20480101000000 est au format AAAAMMJJHHMMSS. C’est la date d’expiration des signatures. Cela va créer un nouveau fichier de zone, federez.net.zone.signed, | ||
- | |||
- | Enfin, pour déléguer une zone, pensez à déléguer les signatures avec un enregistrement DS, qui n’est pas généré par la commande précédente. Il suffit alors de configurer DNSSEC avec son registrar pour que les signatures deviennent valides. | ||
- | |||
- | ==== Automatisation ==== | ||
- | |||
- | Les outils disponibles dans le paquet '' | ||
- | |||
- | Cette section est incomplète. | ||
===== Configuration de bind ===== | ===== Configuration de bind ===== | ||
Ligne 297: | Ligne 260: | ||
===== Unbound comme résolveur récursif ===== | ===== Unbound comme résolveur récursif ===== | ||
- | [[https:// | + | [[https:// |
<Exemple de configuration avec contrôle d' | <Exemple de configuration avec contrôle d' | ||
Ligne 310: | Ligne 273: | ||
===== Liens externes ===== | ===== Liens externes ===== | ||
- | * [[https:// | ||
* [[https:// | * [[https:// | ||
- | * [[https:// | + | * [[https:// |
* [[https:// | * [[https:// | ||
- | * [[https:// | + |
doc/dns.1396776668.txt.gz · Dernière modification : 2014/04/06 09:31 de bertrand.bonnefoy-claudet