Internet DRAFT - draft-vandijk-dnsop-nsec-ttl
draft-vandijk-dnsop-nsec-ttl
dnsop P. van Dijk
Internet-Draft PowerDNS
Updates: 4034, 5155 (if approved) 23 November 2020
Intended status: Standards Track
Expires: 27 May 2021
NSEC(3) TTLs and NSEC Aggressive Use
draft-vandijk-dnsop-nsec-ttl-00
Abstract
Due to a combination of unfortunate wording in earlier documents,
aggressive use of NSEC(3) records may deny names far beyond the
intended lifetime of a denial. This document changes the definition
of the NSEC(3) TTL to correct that situation.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on 27 May 2021.
Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. Code Components
extracted from this document must include Simplified BSD License text
as described in Section 4.e of the Trust Legal Provisions and are
provided without warranty as described in the Simplified BSD License.
van Dijk Expires 27 May 2021 [Page 1]
Internet-Draft nsec-ttl November 2020
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Document work . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Conventions and Definitions . . . . . . . . . . . . . . . . . 4
4. NSEC(3) TTL changes . . . . . . . . . . . . . . . . . . . . . 4
4.1. In RFC4034 . . . . . . . . . . . . . . . . . . . . . . . 4
4.2. In RFC5155 . . . . . . . . . . . . . . . . . . . . . . . 4
4.3. Zone operator guidance . . . . . . . . . . . . . . . . . 4
5. Security Considerations . . . . . . . . . . . . . . . . . . . 5
6. Implementation Status . . . . . . . . . . . . . . . . . . . . 5
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 5
9. Normative References . . . . . . . . . . . . . . . . . . . . 5
10. Informative References . . . . . . . . . . . . . . . . . . . 6
Appendix A. Document history . . . . . . . . . . . . . . . . . . 6
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 6
1. Introduction
[RFC editor: please remove this block before publication.
Earlier notes on this:
* https://indico.dns-oarc.net/event/29/sessions/98/#20181013
(https://indico.dns-oarc.net/event/29/sessions/98/#20181013)
* https://lists.dns-oarc.net/pipermail/dns-operations/2018-April/
thread.html#17420 (https://lists.dns-oarc.net/pipermail/dns-
operations/2018-April/thread.html#17420)
* https://lists.dns-oarc.net/pipermail/dns-
operations/2018-March/017416.html (https://lists.dns-
oarc.net/pipermail/dns-operations/2018-March/017416.html)
]
[RFC2308] defines that the SOA TTL to be used in negative answers
(NXDOMAIN, NoData NOERROR) is
| the minimum of the MINIMUM field of the SOA record and the TTL of
| the SOA itself
Thus, if the TTL of the SOA in the zone is lower than the SOA MINIMUM
value (the last number in a SOA record), the negative TTL for that
zone is lower than the SOA MINIMUM value.
However, [RFC4034] section 4 has this unfortunate text:
van Dijk Expires 27 May 2021 [Page 2]
Internet-Draft nsec-ttl November 2020
| The NSEC RR SHOULD have the same TTL value as the SOA minimum TTL
| field. This is in the spirit of negative caching ([RFC2308]).
This text, while referring to RFC2308, can cause NSEC records to have
much higher TTLs than the appropriate negative TTL for a zone.
[RFC5155] contains equivalent text.
[RFC8198] section 5.4 tries to correct this:
| Section 5 of [RFC2308] also states that a negative cache entry TTL
| is taken from the minimum of the SOA.MINIMUM field and SOA's TTL.
| This can be less than the TTL of an NSEC or NSEC3 record, since
| their TTL is equal to the SOA.MINIMUM field (see [RFC4035],
| Section 2.3 and [RFC5155], Section 3).
|
| A resolver that supports aggressive use of NSEC and NSEC3 SHOULD
| reduce the TTL of NSEC and NSEC3 records to match the SOA.MINIMUM
| field in the authority section of a negative response, if
| SOA.MINIMUM is smaller.
But he NSEC(3) RRs should, per RFC4034, already be at the MINIMUM
TTL, which means this advice would never actually change the TTL used
for the NSEC(3) RRs.
As a concrete example, the ".com" SOA currently looks like this:
"com. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com.
1606158464 1800 900 604800 86400"
The SOA record has a 900 second TTL, and a 86400 MINIMUM TTL.
Negative responses from this zone have a 900 second TTL, but the
NSEC3 records in those negative responses have a 86400 TTL. If a
resolver were to use those NSEC3s aggressively, they would be
considered valid for a day, instead of the intended 15 minutes.
(Note that, because .com uses opt-out NSEC3, such aggressive use
would not in fact apply to this zone - it is merely used as a very
visible example here.)
2. Document work
This document lives on GitHub (https://github.com/PowerDNS/draft-
dnsop-nsec-ttl); proposed text and editorial changes are very much
welcomed there, but any functional changes should always first be
discussed on the IETF DNSOP WG mailing list.
van Dijk Expires 27 May 2021 [Page 3]
Internet-Draft nsec-ttl November 2020
3. Conventions and Definitions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
4. NSEC(3) TTL changes
4.1. In RFC4034
Where [RFC4034] says:
| The NSEC RR SHOULD have the same TTL value as the SOA minimum TTL
| field. This is in the spirit of negative caching ([RFC2308]).
This is updated to say:
| The NSEC RR MUST have the same TTL value as the minimum of the
| MINIMUM field of the SOA record and the TTL of the SOA itself.
| This matches the definition of the TTL for negative responses in
| [RFC2308].
4.2. In RFC5155
Where [RFC5155] says:
| The NSEC3 RR SHOULD have the same TTL value as the SOA minimum TTL
| field. This is in the spirit of negative caching [RFC2308].
This is updated to say:
| The NSEC3 RR MUST have the same TTL value as the minimum of the
| MINIMUM field of the SOA record and the TTL of the SOA itself.
| This matches the definition of the TTL for negative responses in
| [RFC2308].
4.3. Zone operator guidance
If signers & DNS servers for a zone cannot immediately be updated to
conform to this document, zone operators are encouraged to consider
setting their SOA record TTL and the SOA MINIMUM field to the same
value. That way, the TTL used for aggressive NSEC use matches the
SOA TTL for negative responses.
van Dijk Expires 27 May 2021 [Page 4]
Internet-Draft nsec-ttl November 2020
5. Security Considerations
An attacker can prevent future records from appearing in a cache by
seeding the cache with queries that cause NSEC(3) responses to be
cached, for aggressive use purposes. This document reduces the
impact of that attack in cases where the NSEC(3) TTL is higher than
the zone operator intended.
6. Implementation Status
[RFC Editor: please remove this section before publication]
Implemented in PowerDNS Authoritative Server 4.3.0
https://doc.powerdns.com/authoritative/dnssec/
operational.html?highlight=ttl#some-notes-on-ttl-usage
(https://doc.powerdns.com/authoritative/dnssec/
operational.html?highlight=ttl#some-notes-on-ttl-usage) .
7. IANA Considerations
IANA is requested to add a reference to this document in the DNS
Resource Record Types registry, for the NSEC and NSEC3 types.
8. Acknowledgements
Ralph Dolmans helpfully pointed out that fixing this in RFC8198 is
only possible for negative (NXDOMAIN/NoData NOERROR) responses, and
not for wildcard responses.
Warren Kumari gracefully acknowledged that the current behaviour of
RFC8198, in context of the NSEC TTL defined in RFC4034, is not the
intended behaviour.
9. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC2308] Andrews, M., "Negative Caching of DNS Queries (DNS
NCACHE)", RFC 2308, DOI 10.17487/RFC2308, March 1998,
<https://www.rfc-editor.org/info/rfc2308>.
[RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "Resource Records for the DNS Security Extensions",
RFC 4034, DOI 10.17487/RFC4034, March 2005,
<https://www.rfc-editor.org/info/rfc4034>.
van Dijk Expires 27 May 2021 [Page 5]
Internet-Draft nsec-ttl November 2020
[RFC5155] Laurie, B., Sisson, G., Arends, R., and D. Blacka, "DNS
Security (DNSSEC) Hashed Authenticated Denial of
Existence", RFC 5155, DOI 10.17487/RFC5155, March 2008,
<https://www.rfc-editor.org/info/rfc5155>.
[RFC8198] Fujiwara, K., Kato, A., and W. Kumari, "Aggressive Use of
DNSSEC-Validated Cache", RFC 8198, DOI 10.17487/RFC8198,
July 2017, <https://www.rfc-editor.org/info/rfc8198>.
10. Informative References
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
Appendix A. Document history
Author's Address
Peter van Dijk
PowerDNS
Den Haag
Netherlands
Email: peter.van.dijk@powerdns.com
van Dijk Expires 27 May 2021 [Page 6]