PDA

Bekijk Volledige Versie : DNSSEC Centos / PowerDNS 3.1



Harland
31/10/12, 16:05
Beste lezers,

Wie kan mij helpen met het volgende:

Momenteel zijn wij bezig met het opzetten van een nieuwe DNS server zodat wij gebruik kunnen maken van DNSSEC.

Echter loop ik tegen een aantal problemen aan en wel het volgende:

Wanneer wij via de site http://www.dnssecmonitor.org/ de domein hartvanschijndel.nl op te vragen geeft deze een aantal fout meldingen terug en kan zo niet achterhalen wat ik moet aanpassen.

NSEC3 check WARNING
This check will try to find out if the given zone is using NSEC, NSEC3 or NSEC3 with OPT-OUT. For regular zones it is advised to use NSEC3, because NSEC involves zone walking and NSEC3 with opt-out gives the opportunity to deny existence of records that do exist.

This zone is using NSEC or NSEC3 with OPT-OUT or no NSEC(3) records were found. We advice you to change to NSEC3 (without OPT-OUT). Or there were no NSEC(3) records found.

TTL WARNING
advice: use a SOA expiration timer (2419200) that is between 1/4th (299380) and 1/3rd (399174) the size of the signature validity period (1197522)

Ik heb de SOA al aangepast maar geeft nog steeds een melding.

Verder is het mij niet helemaal duidelijk hoe ik de zone moet beveiligen.

Heb nu voor een test zone (hartvanschijndel.nl) het volgende uitgevoerd.

pdnssec secure-zone hartvanschijndel.nl
Zone hartvanschijndel.nl secured
Adding NSEC ordering information

pdnssec set-nsec3 hartvanschijndel.nl '1 1 1 ab'

pdnssec rectify-zone hartvanschijndel.nl
Adding NSEC3 hashed ordering information for 'hartvanschijndel.nl'

pdnssec show-zone hartvanschijndel.nl
Zone has hashed NSEC3 semantics, configuration: 1 1 1 ab
Zone is not presigned
keys:
ID = 8 (KSK), tag = 5500, algo = 8, bits = 2048 Active: 1
KSK DNSKEY = hartvanschijndel.nl IN DNSKEY 257 3 8 AwEAAa5FgkQ+fx9NrX2P1+NCvfhTX6ZJkhTVa39gpxYbsYXfXX CVBkPRNDJmtHw28X4yIhQ4Yk+2uLjqP9jzBke4Ki8hWtIV6f4u 2lFF7k90Q02HTwMjR5arIMOFcdSN/X+q0l5kTyjEnomIKtkid7POVTybBjtSnSOjLz52S5cJ3ZsszW5 66J6ovLk025nPKdY25f3uV6s1hfUm0a8N91cabv6tkxAQXuihR iOdqv/hynMAVOej+7Z0uqmv2RvmnoA5lGkp6kBOFlZ2wV4cxmkCJwHxH lDWLyzvb752ldiGAgy83A35kT2ACxXJt/5b0WpU6ZugauVOFFRaUZXV+W1rylc=
DS = hartvanschijndel.nl IN DS 5500 8 1 b3307043e316bdb81c06d86adb626f17f2f7d10e
DS = hartvanschijndel.nl IN DS 5500 8 2 22c9b7ab8e76150ed552cb8858f6247eaa56ac583fdcf65f43 e5a5f9bb10bc33

ID = 9 (ZSK), tag = 1311, algo = 8, bits = 1024 Active: 1
ID = 10 (ZSK), tag = 17026, algo = 8, bits = 1024 Active: 0

Bij SIDN heb ik de volgende gegevens toegevoegd:
publickey: AwEAAa5FgkQ+fx9NrX2P1+NCvfhTX6ZJkhTVa39gpxYbsYXfXX CVBkPRNDJmtHw28X4yIhQ4Yk+2uLjqP9jzBke4Ki8hWtIV6f4u 2lFF7k90Q02HTwMjR5arIMOFcdSN/X+q0l5kTyjEnomIKtkid7POVTybBjtSnSOjLz52S5cJ3ZsszW5 66J6ovLk025nPKdY25f3uV6s1hfUm0a8N91cabv6tkxAQXuihR iOdqv/hynMAVOej+7Z0uqmv2RvmnoA5lGkp6kBOFlZ2wV4cxmkCJwHxH lDWLyzvb752ldiGAgy83A35kT2ACxXJt/5b0WpU6ZugauVOFFRaUZXV+W1rylc=
keytag:5500
vlag:257 (KSK)
algoritme:RSA/SHA-256 (8)

Wie kan mij helpen?

Alvast bedankt.

Mvg,
Harland

systemdeveloper
31/10/12, 18:33
check eerst eens of je nameserver bij de parent goed staan. Je moet eerst je nameservers op orde hebben voordat je de ksk keys gaat toevoegen.

Edit: dit lijkt me overigens een betere check: http://dnssec-debugger.verisignlabs.com/hartvanschijndel.nl

Mark17
31/10/12, 23:50
Kom anders morgen even naar ircnet (bijv. ircnet.xs4all.nl) #dns.nl (hier zijn verschillende DNS specialisten aanwezig, onder andere de makers van PowerDNS en medewerkers van SIDN en andere hosters). Dan kunnen we je hier zeker mee helpen. Als ik zo kijk ( http://check.sidnlabs.nl:8080/check/hartvanschijndel.nl ) krijg ik een melding dat er geen dnssec gerelateerde data is die hij kan krijgen.

NederHost
01/11/12, 00:47
Er vallen een paar dingen op die niet zoveel met DNSSEC te maken hebben:

- op de secundaire nameserver is de serial in het SOA-record hoger dan op de primary,
- op de secundaire nameservers staan geen NS-records op de origin.



This zone is using NSEC or NSEC3 with OPT-OUT or no NSEC(3) records were found. We advice you to change to NSEC3 (without OPT-OUT). Or there were no NSEC(3) records found.


Deze waarschuwing is 'normaal' - PowerDNS ondersteunt NSEC3 alleen in 'opt-out' mode.



TTL WARNING
advice: use a SOA expiration timer (2419200) that is between 1/4th (299380) and 1/3rd (399174) the size of the signature validity period (1197522)

Ik heb de SOA al aangepast maar geeft nog steeds een melding.


Signatures die PowerDNS genereert zijn relatief kort (2 weken) geldig. Je zou je SOA expiration timer volgens dit advies dus op 2 a 3 dagen moeten zetten, veel korter dan nu waarschijnlijk het geval is. Overigens ga je hier pas wat van merken als je secondaire nameserver gedurende langere tijd (tenminste een week) uit de pas loopt, en dan heb je waarschijnlijk sowieso al een probleem.



Verder is het mij niet helemaal duidelijk hoe ik de zone moet beveiligen.

Heb nu voor een test zone (hartvanschijndel.nl) het volgende uitgevoerd.

pdnssec secure-zone hartvanschijndel.nl
Zone hartvanschijndel.nl secured
Adding NSEC ordering information

pdnssec set-nsec3 hartvanschijndel.nl '1 1 1 ab'

pdnssec rectify-zone hartvanschijndel.nl
Adding NSEC3 hashed ordering information for 'hartvanschijndel.nl'


Hiermee is de zone beveiligd volgens het standaard PowerDNS-schema van 1 KSK en 2 ZSKs, waarvan eentje actief. Je kunt met een tool als 'drill' bevestigen dat de signatures e.d. kloppen. Een opmerking nog, je doet:

pdnssec set-nsec3 hartvanschijndel.nl '1 1 1 ab'

Dit komt uit de PowerDNS-documentatie; de 'ab' is echter een salt-waarde, het is beter om dat bij gebruikt in een productieomgeving te veranderen in een meer willekeurige (hexadecimale) waarde.

Dutchboy
01/11/12, 20:37
Is er ook ergens een goede howto om dit op de juiste manier te configureren. Ik ben erg benieuwd.

systemdeveloper
01/11/12, 20:49
Is er ook ergens een goede howto om dit op de juiste manier te configureren. Ik ben erg benieuwd.

Als je powerdns/mysql gebruikt:

- eerst upgraden naar de laatste powerdns server en je db schema uitbreiden voor dnssec (paar veldjes toevoegen)
- gmysql-dnssec optie toevoegen aan je pdns.conf en herstarten

dan een scriptje maken zoals onderstaande waarbij 'get_domains.sql' een select statement is om de domeinen uit powerdns te selecteren die van dnssec voorzien moeten worden.

#!/bin/sh
list=`mysql -u <user> -p<password> <powerdns-db> < get_domains.sql`
for dom in $list
do
pdnssec secure-zone ${dom}
pdnssec set-nsec3 ${dom}
pdnssec rectify-zone ${dom}

done

daarna kun je eventueel nog een export maken van al je tags, algo en ksk keys:

#!/bin/sh
list=`mysql -u <user> -p<password> <powerdns-db> < get_domains.sql`
for dom in $list
do
tag=`pdnssec show-zone ${dom}|grep tag |grep KSK | awk '{print $7 $10}'`
ksk=`pdnssec show-zone ${dom}|grep DNSKEY | awk '{print $10}'`
echo ${dom},${tag}${ksk}
done

en dan de export inkloppen bij je registrar.

Klaar :)

NederHost
01/11/12, 21:37
In aanvulling daarop: om NSEC of NSEC3 goed te laten werken moet je wel de auth en order-velden op de correcte waarden houden bij het aanpassen van records. Als dit niet wordt ondersteund door de software die wordt gebruikt om de records te bewerken dan betekent dit dat je na iedere aanpassing van de zone 'pdnssec rectify-zone' (of 'pdnssec rectify-all-zones') moet draaien.

Harland
02/11/12, 08:53
Bedankt voor alle reacties,

Wij zijn alweer een stuk verder gekomen!

Kleinee vraag nog, PowerDNS werkt met een expire date van 14 dagen, is het mogelijk deze te vergroten?

NederHost
02/11/12, 11:02
Kleine vraag nog, PowerDNS werkt met een expire date van 14 dagen, is het mogelijk deze te vergroten?

Ik denk dat je dit in de source aan zou moeten passen; vraag is waarom je dat zou willen? Geldigheid van de signatures van tenminste een week is vrij ruim voor een live signing-omgeving. Denk eraan dat de records sowieso opnieuw worden opgevraagd als hun TTL is verlopen.

systemdeveloper
03/11/12, 09:56
Nog een handig scriptje om even snel te checken of je domein valid is (al bouwt elke joker dat in 2 minuten natuurlijk, maar handig voor de googlelaars):

#!/bin/bash

FILE=/tmp/trusted_key.${RANDOM}
DOM=$1
KSKID=`pdnssec show-zone ${DOM} | grep 'ID =' | grep 'KSK' | awk '{print $3}'`
pdnssec export-zone-dnskey ${DOM} ${KSKID}|grep DNSKEY > ${FILE}
dig +dnssec +sigchase +trusted-key=${FILE} -t A www.${DOM} @ns2a | grep 'Ok'
rm ${FILE}

Mark17
03/11/12, 17:17
Kleinee vraag nog, PowerDNS werkt met een expire date van 14 dagen, is het mogelijk deze te vergroten?

Dat kan, het zit in de broncode van PowerDNS verwerkt (ik weet zo niet waar precies). Ik adviseer echter dit niet aan te passen aangezien je andere keys richting een registry/registrar stuurt die standaard een onbeperkte geldigheid hebben. Afhankelijk van de situatie kan het wenselijk zijn om deze periodiek (op een zelf te bepalen moment) toch te vervangen door een key rollover. Dit laatste gaat niet 100% geautomatiseerd standaard (maar is wel te automatiseren).