DNSSEC HOWTO

Obsah | Zpět | Dále

I. Zabezpečení dat DNS

2. Zabezpečení zóny DNS

2.3 Vytváření párů klíčů

2.3.1 Zásady údržby klíčů

Před vygenerováním klíčů se budete muset zamyslet nad zásadami údržby klíčů. Tyto zásady by měly řešit

  • Jaký bude rozměr vašich klíčů?
  • Rozdělíte funkční závislost klíčů podepisujících klíče a klíčů podepisujících zóny?
  • Jak často budete rotovat klíče?
  • Jak dostanou systémoví administrátoři, kteří zamýšlí využívat vaši zónu jako trust anchor, správný veřejný klíč a jaký mechanismus jim nabídnete pro povolení ověřování autenticity vašeho veřejného klíče?
  • Jak upozorníte na rotaci klíče nebo jak se ujistíte, že všechny zúčastněné strany jsou si vědomy rotace?

Některé z těchto problémů mohou být vyřešeny snadno. Například, vaše organizace může vytvořit mechanizmus na distribuci veřejných klíčů, kde mohou být jasné způsoby publikace nadcházející rotace jako je možnost publikovat událost v novinách organizace. Nebo je možné upozornit všechny zúčastněné strany e-mailem, pokud je hierarchie organizace X.509 dostupná pro ověřování e-mailů.

2.3.1.1 Klíče podepisující klíče a klíče podepisující zóny

Autor se domnívá, že používání klíčů podepisujících zóny a klíčů podepisujících klíče je osvědčenou metodou (viz také Kapitola 4, „Rotace klíčů“). Klíče podepisující klíče jsou obvykle prvními klíči z vaší zóny, které se využívají při sestavování řetězu pravomocí pro data, která je potřeba ověřit. Proto jsou tyto klíče často nazývány klíče důvěryhodného přístupového bodu (nebo klíč SEP). Tyto klíče SEP jsou těmi, které byste si měli vyměňovat s vaší nadřazenou zónou, nebo těmi, které konfigurují ověřovací resolvery jako jejich trust anchors.

V tomto dokumentu předpokládáme, že používáte oddělené klíče podepisující klíče a klíče podpisující zóny, a že klíče podpisující klíče jsou vyhrazeny pro použijí jako klíče důvěryhodných přístupových bodů a mohou být identifikovány bitem SEP[10] v příznakovém poli, které se odlišuje.

2.3.2 Vytváření klíčů

Usage:
    dnssec-keygen -a alg -b bits -n type [options] name

Version: 9.3.2
Required options:
    -a algorithm: RSA | RSAMD5 | DH | DSA | RSASHA1 | HMAC-MD5
    -b key size, in bits:
        RSAMD5: [512..4096]
        RSASHA1: [512..4096]
        DH: [128..4096]
        DSA: [512..1024] and divisible by 64
        HMAC-MD5: [1..512]
    -n nametype: ZONE | HOST | ENTITY | USER | OTHER
    name: owner of the key
Other options:
    -c <class> (default: IN)
    -e use large exponent (RSAMD5/RSASHA1 only)
    -f keyflag: KSK
    -g <generator> use specified generator (DH only)
    -t <type>: AUTHCONF | NOAUTHCONF | NOAUTH | NOCONF (default: AUTHCONF)
    -p <protocol>: default: 3 [dnssec]
    -s <strength> strength value this key signs DNS records with (default: 0)
    -r <randomdev>: a file containing random data
    -v <verbose level>
    -k : generate a TYPE=KEY key
Output:        K<name>+<alg>+<id>.key, K<name>+<alg>+<id>.private

Obrázek 6: argumenty dnssec-keygen

dnssec-keygen je nástroj, který používáme ke generování párů klíčů. Argumenty, které musíme do dnssec-keygen zadat ukazuje obrázek 6.

Výstup nalezneme ve dvou souborech. Jména souborů obsahují příslušné informace:

Kdomain_name+algorithm_id+key_id.extension

domain_name je jméno zadané do příkazové řádky. Využívají jej ostatní nástroje BIND DNSSEC. Pokud použijete jiné jméno než je jméno domény, může to být pro tyto nástroje zavádějící. algorithm_id identifikuje použitý algoritmus: 1 pro RSAMD5, 3 pro DSA, 5 pro RSASHA1 a 54 pro HMAC-MD5 (pouze TSIG). key_id je identifikátor materiálu klíče. key_id je využíváno zdrojovým záznamem RRSIG. Rozšířením je key nebo private; první je veřejný klíč a druhý je soukromý klíč.

Pomocí algoritmu RSASHA1 vytvoříme pár klíčů podepisujících zóny pro example.net:

# dnssec-keygen -r/dev/random  -a RSASHA1 -b 1024 -n ZONE example.net
Kexample.net.+005+17000

Podle pokynů z oddílu 2.3.1 budete muset vytvořit také klíče SEP. Pomocí dnssec-keygen vytvořte s nastavením bitu SEP určeným příznakem KSK –f klíče.

# dnssec-keygen -r/dev/random  -f KSK -a RSASHA1 -b 1280  -n ZONE example.net
Kexample.net.+005+49656

Podívejme se na obsah těchto souborů.

cat Kexample.net.+005+17000.key
example.net. IN DNSKEY 256 3 5 (
            AQPI4+0M1V055RS2Hqv+8w8V20Dh+SQmFzHQtZMuzLH3UxWE0GmG5Gfj
            ijandJeAZTKLpERXB6RfHTHGG8lD3IO1azWN6DiVFEVzgr0otAdDonfY
             +oEsRw== )

Veřejný klíč (rozšíření .key) je přesně takový, jak se objevuje ve vašem zónovém souboru. Nezapomeňte, že hodnota TTL není určena. Klíč má „příznakovou“ hodnotu 256. Jelikož je tato hodnota celým číslem, nemůže být klíč označen jako klíč SEP a měl by být použit k podepsání zóny.

Soukromý klíč (rozšíření .private) obsahuje všechny parametry, které tvoří soukromý klíč vytvořený algoritmem RSASHA1. Soukromý klíč klíče RSA obsahuje odlišné parametry než DSA. Zde je soukromý klíč (se zkráceným base64 materiálem):

cat Kexample.net.+005+17000.private
Private-key-format: v1.2
Algorithm: 5 (RSASHA1)
Modulus: yOPtDNVdOeUUth6r/vMPFdtA4fkkJhcx0LWTLsyx91MVhNBphu...
PublicExponent: Aw==
PrivateExponent: he1Iszjo0UNjJBRyqfdfY+eAlqYYGWTL4HkMyd3L+j...
Prime1: +X0kNW1JrepBnVw5o9fDUyWAT5zqxKt0YR4vJZ19991tLZAmdO4...
Prime2: ziIX5qfpZGBuzfd847TqtDfYcwv5UfUrPAIa/11g3leUUNERmsB...
Exponent1: plNtePOGc/GBE5LRF+Us4hkANRNHLcei62l0w75T+pOeHmAZ...
Exponent2: iWwP7xqbmEBJ3qT97SNHIs/logf7i/jHfVa8qj5AlDpi4Ith...
Coefficient: rmmgD9P7/ywQJ4F0epdGqOUoQZmqrPQsraDTD8vkU1wLju...

Tento soukromý klíč by měl zůstat důvěrný, tj. přístupová oprávnění k souboru by měla být natavena tak, že k nim bude mít administrátor zóny přístup v případě, že bude třeba zónu podepsat. Nástroje BIND budou implicitně vyhledávat klíče v adresáři, kde se provádí podepisování (viz oddíl 2.4), což nemusí být nejbezpečnější místo vašeho OS.

Obsah | Zpět | Dále