DNSSEC-ondertekening en sleutelbeheer volledig geautomatiseerd

BIND named 9.16 brengt nieuwe DNSSEC Policy functionaliteit

De ontwikkelaars van BIND named hebben de laatste stap in de automatisering van DNSSEC (-ondertekening) gezet. Vanaf versie 9.15.6 kunnen policies voor sleutelbeheer en de ondertekening van zones in het configuratiebestand named.conf worden gespecificeerd. De software zorgt dan zelf dat handtekeningen (RRSIG records) en ZSK/KSK-sleutelparen steeds up-to-date zijn. Daarmee verdwijnt de noodzaak om scripts en cron jobs in te zetten om je ondertekende zones actueel te houden.

BIND versie 9.14 vereist IPv6 en DNSSEC DNSSEC-ondertekening op BIND named

Vanaf BIND named versie 9.15.6 kun je in named.conf een 'dnssec-policy' speciferen. Dat doe je door een statement als volgt in de zone-configuratie op te nemen:

  zone "example.nl." {
      type master;
      file "db.example.nl";
      dnssec-policy "dnssec-policy-1";
  };

Die DNSSEC policy verwijst vervolgens naar een definitie in de globale configuratie:

  dnssec-policy "dnssec-policy-1" {
    ...
    }

Op pagina 136 van de BIND 9 Administrator Reference Manual (ARM) voor versie 9.15.7 en hier op de BIND wiki vind je voorbeelden van hoe een policy (KASP Configuration) er uit kan zien. Ondertekening en roll-overs kunnen op deze manier volledig geautomatiseerd plaatsvinden, en nieuwe ZSK- en KSK-sleutelparen worden automatisch gegenereerd wanneer nodig.

BIND versie 9.16 ESV

De implementatie van DNSSEC Policy is onderdeel van het 'DNSSEC Made Easy'-initiatief van BIND-ontwikkelaar Matthijs Mekking. De nieuwe functionaliteit is geïntroduceerd in (development) versie 9.15.6, en wordt daarmee onderdeel van BIND (stabile) versie 9.16.0 die een dezer weken moet verschijnen. BIND versie 9.16 wordt ook de opvolger van de huidige 9.11 Extended Support Version (ESV), die eind 2020 afloopt. Daarna zal versie 9.11 alleen nog maar (een jaar lang) van security patches worden voorzien.

Geautomatiseerd sleutelbeheer

De huidige vorm van sleutelbeheer werd in BIND named geïntroduceerd over de versies 9.7 tot en met 9.11, en beschrijven we uitgebreid in dit hands-on artikel. Dat begon met de automatische (her)ondertekening van zones in versies 9.7/9.8 ('auto-dnssec maintain'), welke in de versies 9.9/9.10 verder in de code base geïntegreerd werd (Inline-Signing). Vanaf versie 9.11 werd ook het sleutelbeheer geautomatiseerd met behulp van het 'dnssec-keymgr'-commando en bijbehorende policy file. Daarmee werd de hele set-up van DNSSEC teruggebracht tot de configuratiebestanden van BIND, met alleen nog een laatste cron job voor het genereren van nieuwe sleutelparen (indien nodig) met behulp van het 'dnssec-keymgr'-commando.

Verademing

Het gebruik van DNSSEC met BIND versie 9.11 (en verder) was al een verademing vergeleken met de pre-9.7 versies waarbij DNSSEC wel ondersteund werd maar niets was geautomatiseerd. Dat betekende zelf scripts schrijven en cron jobs installeren, of de hele ondertekening bij BIND weghouden en de ondertekende zone files door OpenDNSSEC laten generen. In dat laatste geval hoefde BIND named deze ondertekende zones alleen (regelmatig) in te lezen en uit te serveren. Volgens Mekking zullen beide methodes nog wel even naast elkaar blijven bestaan, maar is het de bedoeling om het 'dnssec-keymgr'-commando uiteindelijk uit te faseren. Ook Auto-DNSSEC en Inline-Signing zullen tezijnertijd verdwijnen. De bijbehorende opties 'auto-dnssec maintain;' en 'inline-signing yes;' die de meesten nu in hun configuratiebestand zullen hebben staan, zijn dan ook niet verenigbaar met een 'dnssec-policy'-configuratie (named-checkconf zal een foutmelding geven). "Het idee achter DNSSEC Policy is dat alle DNSSEC (signing) opties bij elkaar in één statement staan, en dat de configuratie daarmee eenvoudiger wordt," aldus Mekking. "De DNSSEC Policy functionaliteit is nog niet compleet – zo ontbreekt bijvoorbeeld nog NSEC3 – maar deze missing features zullen in de loop van dit jaar nog aan versie 9.16 worden toegevoegd."