Attention

Cette page est une ébauche de documentation, qui pour le moment N'EST PAS UN MODÈLE À SUIVRE à l'AuF.
(avant-tout du fait du non respect des standards Debian) -- JC

Introduction

Les informations présentées dans ce document ne sont pas encore retenues comme recommendations à l'AUF. D'ailleurs, toutes les manipulations servant d'illustration ici s'applique au domaine localhost. pour bien faire ressortir ce caractère non officiel .

Mise en oeuvre

Préparation du serveur

La plupart des manipulations présentées dans cette section sont des choix personnels, discutables et non standards à l'AUF.

Le fichier de définition de la zone localhost est renommée de db.local en master.localhost.

De même, le fichier db.127 représentant la zone inverse pour localhost, est renommée en localhost.rev.

Le fichier db.root contenant la liste des serveurs racines devient root-servers.net.

Le fichier bind.keys qui fait reférence à la clé DLV associé au domaine dlv.isc.org deviendra dlv.isc.org.key. L'enregistrement de type DLV est une alternative à la mise en place d'une chaîne de sécurité pour un domaine donnée. On parle de chaîne de sécurité lorsqu'une hiérarchie entière du système DNS est signée (par exemple, td.auf.org signé et reférencé dans la configuration de auf.org qui lui même signé et reférencée (éventuellement) dans la config de .org etc).

Je n'utilise pas rndc pour la gestion du serveur bind. Pour ca, j'ajoute

controls {};

dans les options et j'efface tous les autres fichiers contenues dans /etc/bind: db.0, db.255, db.empty, zones.rfc1918 et rndc.key.

Mes configs dns n'impliquant pas de nombreux domaines, je préfère tout mettre dans un seul fichier named.conf:

nacer@nacerix-lab:/etc/bind$ sudo cat named.conf.options >> named.conf.final
nacer@nacerix-lab:/etc/bind$ sudo cat named.conf.local >> named.conf.final
nacer@nacerix-lab:/etc/bind$ sudo cat named.conf.default-zones >> named.conf.final
nacer@nacerix-lab:/etc/bind$ sudo mv named.conf.final named.conf
nacer@nacerix-lab:/etc/bind$ sudo rm named.conf.options named.conf.default-zones

Ensuite, je crée un dossier keys qui contiendra les clés qui seront générés tout à l'heure:

nacer@nacerix-lab:/etc/bind$ mkdir keys

Le dossier /etc/bind ressemble à ceci:

nacer@nacerix-lab:/etc/bind$ ls -l
-rw-r--r-- 1 root root  601 2011-11-16 21:30 dlv.isc.org.key
drwxr-sr-x 2 root bind 4096 2012-01-30 17:30 keys
-rw-r--r-- 1 root root  271 2011-11-16 21:30 localhost.rev
-rw-r--r-- 1 root root  270 2011-11-16 21:30 master.localhost
-rw-r--r-- 1 root bind 1591 2012-01-30 18:15 named.conf
-rw-r--r-- 1 root bind  165 2011-11-16 21:30 named.conf.local
-rw-r--r-- 1 root root 2940 2011-11-16 21:30 root-servers.net

Dans les options, j'active dnssec et, après édition, j'obtiens à peu près ceci sans les commentaires:

nacer@nacerix-lab:/etc/bind$ cat named.conf
nacer@nacerix-lab:/etc/bind$ cat named.conf
options {
        directory "/etc/bind";

        auth-nxdomain no;    # conform to RFC1035

        listen-on-v6 { any; };

    dnssec-enable yes;
    controls {};
};

// les serveurs root - utiles pour la récursion
zone "." {
        type hint;
        file "root-servers.net"
};

zone "localhost" {
        type master;
        file "master.localhost";
};

zone "127.in-addr.arpa" {
        type master;
        file "localhost.rev";
};

Maintenant, on va générer une paire de clés (privée/publique) pour signer l'ensemble des enregistrements DNS (Resources Records ou RR) de la zone, cette clé s'appelle (Zone Signing Keys ou ZSK):

nacer@nacerix-lab:/etc/bind$ sudo dnssec-keygen -a rsasha1 -b 512 -n zone localhost
; aller, j'utilise 512 octets à cause de ma vieille machine.
; on obtient deux fichiers:
; l'enregistrement DNSKEY correspondant à la partie publique de la ZSK:
Klocalhost.+005+14058.key

Et dont le contenu ressemble à:

nacer@nacerix-lab:/etc/bind$ cat Klocalhost.+005+14058.key
; This is a zone-signing key, keyid 14058, for localhost.
; Created: Mon Jan 30 17:26:32 2012
; Publish: Mon Jan 30 17:26:32 2012
; Activate: Mon Jan 30 17:26:32 2012
localhost. IN DNSKEY 256 3 5 AwEAAcFICEMvLIItggaAqR1TyDEsQzH4QlC6X/7MQ6PBcR0M/SEpN2uD D24Ui9NIPsKLBBpzZ3DJ1EgRa4SKNnA4BE0=

Puis, on a la partie privée dont le contenu n'est pas franchement intéressant ;-)(sauf si vous aimer jouer avec la théorie des codes hein), mais qu'il est important de bien sécuriser:

nacer@nacerix-lab:/etc/bind$ ls -l keys/
total 8
-rw-r--r-- 1 root bind 290 2012-01-30 17:30 Klocalhost.+005+14058.key
-rw------- 1 root bind 622 2012-01-30 17:30 Klocalhost.+005+14058.private

Ensuite, c'est au tour de la Key Signing Keys (KSK) d'être créer:

nacer@nacerix-lab:/etc/bind$ sudo dnssec-keygen -a rsasha1 -b 512 -f KSK -n zone localhost

Là encore, on obtient deux clés, une publique et une privée. La clé privée est utilisée pour signer tous les enregistrements de type DNSKEY (d'où son nom de clé signant les clés). Bien sûr, les enregistrements de type DNSKEY sont à la fois signée par le ZSK et le KSK. Voici, à titre d'illustration, le contenu de Klocalhost.+005+19396.key:

nacer@nacerix-lab:/etc/bind/keys$ cat Klocalhost.+005+19396.key
; This is a key-signing key, keyid 19396, for localhost.
; Created: Mon Jan 30 19:35:11 2012
; Publish: Mon Jan 30 19:35:11 2012
; Activate: Mon Jan 30 19:35:11 2012
localhost. IN DNSKEY 257 3 5 AwEAAcDW/bYLI36kvviwi4afvAzNwieUxMcYqoc1hEsRCXHC2RLy4uZX wMQEbLwx6GFEO/2sTnppfAhbRKD4IL0d0PU=

La KSK est reconnaissable au nombre 257 suivant DNSKEY, et le ZSK par le 256 à la même position.

L'étape suivante consiste à associer ZSK et KSK au fichier de zone:

nacer@nacerix-lab:/etc/bind$ sudo cat master.localhost
;
; BIND data file for local loopback interface
;
$TTL    604800
@   IN  SOA localhost. root.localhost. (
                  2     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@   IN  NS  localhost.
@   IN  A   127.0.0.1
@   IN  AAAA    ::1

; ZSK
$include "keys/Klocalhost.+005+14058.key";
; KSK
$include "keys/Klocalhost.+005+19396.key";

Et

nacer@nacerix-lab:/etc/bind$ sudo cat localhost.rev
;
; BIND reverse data file for local loopback interface
;
$TTL    604800
@   IN  SOA localhost. root.localhost. (
                  1     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@   IN  NS  localhost.
1.0.0   IN  PTR localhost.

; ZSK
$include "keys/Klocalhost.+005+14058.key";
; KSK
$include "keys/Klocalhost.+005+19396.key";

Il ne nous reste plus qu'à signer ces deux fichiers et le tour est joué:

nacer@nacerix-lab:/etc/bind$ sudo dnssec-signzone -o localhost -t -k keys/Klocalhost.+005+19396 master.localhost keys/Klocalhost.+005+14058
Verifying the zone using the following algorithms: RSASHA1.
Zone signing complete:
Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked
                    ZSKs: 1 active, 0 stand-by, 0 revoked
master.localhost.signed
Signatures generated:                        7
Signatures retained:                         0
Signatures dropped:                          0
Signatures successfully verified:            0
Signatures unsuccessfully verified:          0
Runtime in seconds:                      0.164
Signatures per second:                  42.497

Et le fichier résultant, master.localhost.signed:

nacer@nacerix-lab:/etc/bind$ cat master.localhost.signed
; File written on Mon Jan 30 20:04:39 2012
; dnssec_signzone version 9.7.0-P1
localhost.              604800  IN SOA  localhost. root.localhost. (
                                        2          ; serial
                                        604800     ; refresh (1 week)
                                        86400      ; retry (1 day)
                                        2419200    ; expire (4 weeks)
                                        604800     ; minimum (1 week)
                                        )
                        604800  RRSIG   SOA 5 1 604800 20120229180439 (
                                        20120130180439 14058 localhost.
                                        pe+xZHJyYRaKtb+Tc22gmCBBJBWPIxcrQ6Qi
                                        pX7Uq+bTAvISZm2oJ/AKxwFwDf0vWu2ulWz/
                                        xqwtnF7WkC64Pw== )
                        604800  NS      localhost.
                        604800  RRSIG   NS 5 1 604800 20120229180439 (
                                        20120130180439 14058 localhost.
                                        gx7b09+c+t0WHgd0Uy6hjQe593MphKU4u7r+
                                        iqjW+dCMST7YZrGIYnrvlhIehauL8jhbaWDX
                                        dJayzJ67lNmnDg== )
                        604800  A       127.0.0.1
                        604800  RRSIG   A 5 1 604800 20120229180439 (
                                        20120130180439 14058 localhost.
                                        SyM2yNCJ8lBNA4s7qSnPZTi+rwEvVt+HdFui
                                        RmSkfn5ijD+9Q2hsuRnPfYzGOJLY9D2wW2hp
                                        6JYHpQ3BTY3W9A== )
                        604800  AAAA    ::1
                        604800  RRSIG   AAAA 5 1 604800 20120229180439 (
                                        20120130180439 14058 localhost.
                                        EgnaOMGXWjB+c1FpJUZr3M16wu1QkynACZsY
                                        ftgC8jFFSTchlcrB3nP3D15X7zCO7IN/lsEw
                                        4YGuAJEjCRVZmg== )
                        604800  NSEC    localhost. A NS SOA AAAA RRSIG NSEC DNSKEY
                        604800  RRSIG   NSEC 5 1 604800 20120229180439 (
                                        20120130180439 14058 localhost.
                                        mU0xFwhJiVXkGl8dPZQfHdlOYNz5F0LJySF/
                                        m//sogxonT6jiQHvNxcRCq20cTUXVAyVQ1IK
                                        e6jkEDw3kjgtqg== )
                        604800  DNSKEY  256 3 5 (
                                        AwEAAcFICEMvLIItggaAqR1TyDEsQzH4QlC6
                                        X/7MQ6PBcR0M/SEpN2uDD24Ui9NIPsKLBBpz
                                        Z3DJ1EgRa4SKNnA4BE0=
                                        ) ; key id = 14058 - ZSK
                        604800  DNSKEY  257 3 5 (
                                        AwEAAcDW/bYLI36kvviwi4afvAzNwieUxMcY
                                        qoc1hEsRCXHC2RLy4uZXwMQEbLwx6GFEO/2s
                                        TnppfAhbRKD4IL0d0PU=
                                        ) ; key id = 19396 - KSK
                        604800  RRSIG   DNSKEY 5 1 604800 20120229180439 (
                                        20120130180439 14058 localhost.
                                        nsKNmlcM6DGx/L4goK0W9dmFFiF/0pHkqaz1
                                        3haTR4YaFh/AtvIFZnH0Urxx2hgY7NUz1aK0
                                        DRf3KSJbdxNOTw== )
                        604800  RRSIG   DNSKEY 5 1 604800 20120229180439 (
                                        20120130180439 19396 localhost.
                                        ea82+hqXgoFqaVFHvQtU/vTnz+0rDXvpBOBx
                                        jP6AEiiOWgXBrrZt7hlkDmdWEc9063DkfJAy
                                        lvg23API5Ylhqw== )

Je sais, il y a peu de détails, mais ce sera ajouté au fur et à mesure, tout doucement -- To be continued