[Pdns-users] nsec3 and empty non-terminals
Peter van Dijk
peter.van.dijk at netherlabs.nl
Mon Oct 17 14:01:33 UTC 2011
Hello Florian,
Just a note to say your email has not gone by without notice. I am working on expanding the PowerDNS tests, specifically in the DNSSEC area. I will make sure to cover the situation you are describing too. Thank you for your report :)
Kind regards,
Peter van Dijk
On Oct 3, 2011, at 17:01 , Florian Obser wrote:
> Hi,
> we are using powerdns 3 (pdns-static_3.0-1_amd64.deb on debian squeeze,
> mysql backend) as a hidden master / signer and serve the zones with nsd
> slaves (3.2.5-1.squeeze1).
>
> Signing this zone:
>
> nsec3.example.com. 86400 IN SOA a.ns.nsec3.example.com.
> hostmaster.adns2.de. 2011100204 39940 7200 604800 86400
> a.ns.nsec3.example.com. 86400 IN A 217.31.84.231
> foo.nsec3.example.com. 86400 IN A 127.0.0.1
> nsec3.example.com. 86400 IN NS a.ns.nsec3.example.com.
>
>
> results in:
>
> $ ldns-verify-zone nsec3.example.com.signed.pdns
> Checking: nsec3.example.com.
> Checking: foo.nsec3.example.com.
> Checking: ns.nsec3.example.com.
> Error: there is no NSEC(3) for ns.nsec3.example.com.
> Checking: a.ns.nsec3.example.com.
> There were errors in the zone
>
> Serving this zone with nsd and asking for ns.nsec3.example.com:
>
> -------------------------------------------------------------
> ;; Got answer:
> ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28548
> ;; flags: qr aa; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 1
>
> ;; OPT PSEUDOSECTION:
> ; EDNS: version: 0, flags:; udp: 4096
> ;; QUESTION SECTION:
> ;ns.nsec3.example.com. IN A
>
> ;; AUTHORITY SECTION:
> nsec3.example.com. 86400 IN SOA a.ns.nsec3.example.com.
> hostmaster.adns2.de. 2011100204 39940 7200 604800 86400
> nsec3.example.com. 86400 IN RRSIG SOA 8 3 86400
> 20111013000000 20110929000000 5949 nsec3.example.com.
> PQjEEpfDDO2nEcObap+lpPAxhKRHnH02MYi99fUxRwVB4V3c2ZFAuEtd
> vlfMxAx7lnogfDmdLew4wT+UW4JddhtSI0poLf7Y9W7mMdeaw4zVdZql
> 7HIAp2QB+ku9LW+bKN+O2xTMRZ2PkfcPAOvK+2OwRSrBf2Dj9MaREyh2 I3g=
> -------------------------------------------------------------
>
> Note that there are no nsec3 records in the answer.
>
> Asking powerdns directly:
>
> -------------------------------------------------------------
> ;; Got answer:
> ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 38436
> ;; flags: qr aa; QUERY: 1, ANSWER: 0, AUTHORITY: 6, ADDITIONAL: 1
>
> ;; OPT PSEUDOSECTION:
> ; EDNS: version: 0, flags: do; udp: 2800
> ;; QUESTION SECTION:
> ;ns.nsec3.example.com. IN A
>
> ;; AUTHORITY SECTION:
> nsec3.example.com. 86400 IN SOA a.ns.nsec3.example.com.
> hostmaster.adns2.de. 2011100204 39940 7200 604800 86400
> nsec3.example.com. 86400 IN RRSIG SOA 8 3 86400
> 20111013000000 20110929000000 5949 nsec3.example.com.
> PQjEEpfDDO2nEcObap+lpPAxhKRHnH02MYi99fUxRwVB4V3c2ZFAuEtd
> vlfMxAx7lnogfDmdLew4wT+UW4JddhtSI0poLf7Y9W7mMdeaw4zVdZql
> 7HIAp2QB+ku9LW+bKN+O2xTMRZ2PkfcPAOvK+2OwRSrBf2Dj9MaREyh2 I3g=
> 8sgphhqpl2lueminpbvobar8gcue7rbk.nsec3.example.com. 86400 IN NSEC3 1 1
> 10 08A80B76 BLPBV7OT65VBPSBI1QU86M3FH160VLIV NS SOA RRSIG DNSKEY NSEC3PARAM
> 8sgphhqpl2lueminpbvobar8gcue7rbk.nsec3.example.com. 86400 IN RRSIG NSEC3
> 8 4 86400 20111013000000 20110929000000 5949 nsec3.example.com.
> Ou7F28+3YuTu+BVLpPGv2oNJbTqDaxgu8KVbWEFqrp1o+xAKlOWhM0z9
> aOJYMDzBtARUWYmLRrWN2iX2zsKEMsdI7EM9E6CKVJOUY7hw2EW40DOK
> 8eeUieqIN/9lpnwQjVCRc90qgLfvgH95iXBQ5yYVqrxLonYMjBMspFN9 86Y=
> blpbv7ot65vbpsbi1qu86m3fh160vliv.nsec3.example.com. 86400 IN NSEC3 1 1
> 10 08A80B76 33IRO6M8U5MK1PIIHEDO3GJSD4QO53BR A RRSIG
> blpbv7ot65vbpsbi1qu86m3fh160vliv.nsec3.example.com. 86400 IN RRSIG NSEC3
> 8 4 86400 20111013000000 20110929000000 5949 nsec3.example.com.
> cWtYNq8TKe0GdgH1ZQRs9Kl+Y0LFZY16WS8/dCzVWi3mONP7bFbdfnqE
> UksrBxf84VW6JO81Jz85WJheFmEFLkTo8fHw3whyuQ2p7/RIg3pvNxMM
> 0+i1nAxw7ZZKLtug1BERXUNe46R9/OZuz9aagohVDnhqdYg6V5b055yN GXU=
> -------------------------------------------------------------
>
> It looks like powerdns proves the non-existence of ns.nsec3.example.com
> from foo.nsec3.example.com and a,ns.nsec3.example.com (the same as in
> the NSEC case, which works fine in nsd fwiw) while nsd needs an explicit
> NSEC3 record for this. Signing the zone with ldns you get this
> additional NSEC3 record:
>
> bc3qchshiisvurl7bleco2osgj3kdp4p.nsec3.example.com. 86400 IN
> NSEC3 1 1 10 08a80b76 blpbv7ot65vbpsbi1qu86m3fh160vliv ; flags: optout
>
> which I strongly suspect to be ns.nsec3.example.com.
>
> RFC 5155 has this to say (7.1. Zone Signing, page 16)
> o Each empty non-terminal MUST have a corresponding NSEC3 RR, unless
> the empty non-terminal is only derived from an insecure delegation
> covered by an Opt-Out NSEC3 RR.
>
> As a workaround I insert a TXT record for every empty non-terminal
> before handing the zone over to powerdns for signing - this seems to be
> working reasonably well.
>
> Thanks,
> Florian
>
> --
> I remember yesterday, but the memory is in my head now.
> Was yesterday real? Or is it only the memory that is real?
> _______________________________________________
> Pdns-users mailing list
> Pdns-users at mailman.powerdns.com
> http://mailman.powerdns.com/mailman/listinfo/pdns-users
More information about the Pdns-users
mailing list