RFC 3007
Secure Domain Name System (DNS) Dynamic Update
RFC 3007: Secure Domain Name System (DNS) Dynamic Update ๐
Okay bestie, let's talk about RFC 3007 ๐ฆ It was written by B. Wellington at Nominum, dated November 2000, and it's a Standards Track document. It updates RFC 2535 and RFC 2136 and obsoletes RFC 2137, which is the older secure dynamic update proposal. Think of it as the glow-up that replaced the old version ๐
Status of this Memo โจ
This document is an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements ๐ซถ For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). Distribution of this memo is unlimited.
Copyright Notice ๐ธ
Copyright (C) The Internet Society (2000). All Rights Reserved.
Abstract ๐ฎ
So this document proposes a way to do secure DNS dynamic updates ๐ The goal is to be flexible and useful while needing as few changes to the protocol as possible. The authentication of a dynamic update message is kept separate from the later DNSSEC validation of the data, and secure, authenticated requests and transactions are what give you authorization. Iconic separation of concerns, no cap ๐
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].
1 - Introduction ๐ฆ
So this document defines a way to secure dynamic updates of the Domain Name System (DNS), so only authorized sources can change a zone's contents. The existing unsecured dynamic update operations are the foundation for all of this ๐
Familiarity with the DNS system [RFC1034, RFC1035] and dynamic update [RFC2136] is helpful and is assumed by this document. Knowing about DNS security extensions [RFC2535], SIG(0) transaction security [RFC2535, RFC2931], and TSIG transaction security [RFC2845] is recommended, bestie ๐
This document updates portions of RFC 2535, in particular section 3.1.2, and RFC 2136. It also obsoletes RFC 2137, an alternate proposal for secure dynamic update, due to implementation experience. Growth arc ๐
1.1 - Overview of DNS Dynamic Update ๐ง
DNS dynamic update defines a new DNS opcode and a new interpretation of the DNS message when that opcode is used. An update can specify insertions or deletions of data, along with the prerequisites needed for the updates to happen. All tests and changes for a DNS update request are restricted to a single zone, and they're performed at the primary server for that zone. The primary server for a dynamic zone must increment the zone SOA serial number when an update occurs, or before the next retrieval of the SOA. โฐ
1.2 - Overview of DNS Transaction Security ๐
Exchanges of DNS messages that include TSIG [RFC2845] or SIG(0) [RFC2535, RFC2931] records let two DNS entities authenticate the DNS requests and responses they send to each other ๐ซถ A TSIG MAC (message authentication code) is derived from a shared secret, and a SIG(0) is generated from a private key whose public counterpart is stored in DNS. In both cases, a record containing the message signature or MAC is included as the final resource record in a DNS message. Keyed hashes, used in TSIG, are inexpensive to calculate and verify. Public key encryption, as used in SIG(0), is more scalable because the public keys are stored in DNS. ๐
1.3 - Comparison of data authentication and message authentication โ๏ธ
Message based authentication, using TSIG or SIG(0), protects the entire message with a single signing and a single verification. For TSIG, that's a relatively inexpensive MAC creation and check. For update requests, this signature can establish the authority to make the request, based on policy or key negotiation ๐
DNSSEC SIG records can protect the integrity of individual RRs or RRsets in a DNS message with the authority of the zone owner. However, this cannot sufficiently protect the dynamic update request ๐
Using SIG records to secure RRsets in an update request is incompatible with the design of update, as described below. It would also, in any case, need multiple expensive public key signatures and verifications. Not it ๐
SIG records do not cover the message header, which includes the record counts. So it's possible to maliciously insert or remove RRsets in an update request without causing a verification failure. That's a big oops ๐ญ
If SIG records were used to protect the prerequisite section, it would be impossible to tell whether the SIGs themselves were a prerequisite or were simply used for validation. Confusing era ๐
In the update section of an update request, signing a request to add an RRset is straightforward. This signature could be used permanently to protect the data, as specified in [RFC2535]. However, if an RRset is deleted, there's no data for a SIG to cover. Main character problems ๐ญ
1.4 - Data and message signatures ๐
As specified in [RFC3008], the DNSSEC validation process performed by a resolver MUST NOT process any non-zone keys unless local policy dictates otherwise. When performing secure dynamic update, all zone data modified in a signed zone MUST be signed by a relevant zone key. This completely disassociates authentication of an update request from authentication of the data itself. It's giving separation ๐
The main usefulness of host and user keys, with respect to DNSSEC, is to authenticate messages, including dynamic updates. So host and user keys MAY be used to generate SIG(0) records to authenticate updates, and they MAY be used in the TKEY [RFC2930] process to generate TSIG shared secrets. In both cases, no SIG records generated by non-zone keys will be used in a DNSSEC validation process unless local policy dictates it ๐๏ธ
Authentication of data, once it's present in DNS, only involves DNSSEC zone keys and the signatures generated by them. โจ
1.5 - Signatory strength ๐ช
[RFC2535, section 3.1.2] defines the signatory field of a key as the final 4 bits of the flags field, but it doesn't define its value. This proposal leaves that field undefined. Updating [RFC2535], this field SHOULD be set to 0 in KEY records, and MUST be ignored. ๐งธ
2 - Authentication ๐
TSIG or SIG(0) records MUST be included in all secure dynamic update messages. This lets the server verifiably determine who the originator of a message is. If the message has authentication in the form of a SIG(0), the identity of the sender (the principal) is the owner of the KEY RR that generated the SIG(0). If the message has a TSIG generated by a statically configured shared secret, the principal is the same as the shared secret name, or derived from it. If the message has a TSIG generated by a dynamically configured shared secret, the principal is the same as the one that authenticated the TKEY process. If the TKEY process was unauthenticated, no information is known about the principal, and the associated TSIG shared secret MUST NOT be used for secure dynamic update. Identity check ๐ต๏ธโโ๏ธ
SIG(0) signatures SHOULD NOT be generated by zone keys, since transactions are initiated by a host or user, not a zone. ๐ โโ๏ธ
DNSSEC SIG records (other than SIG(0)) MAY be included in an update message, but they MUST NOT be used to authenticate the update request. ๐ซ
If an update fails because it was signed with an unauthorized key, the server MUST indicate failure by returning a message with RCODE REFUSED. Other TSIG, SIG(0), or dynamic update errors are returned as specified in the appropriate protocol description. ๐
3 - Policy ๐
All policy is configured by the zone administrator and enforced by the zone's primary name server. Policy dictates the authorized actions an authenticated principal can take. Policy checks are based on the principal and the desired action, where the principal is derived from the message signing key and applied to dynamic update messages signed with that key. ๐
The server's policy defines the criteria that determine whether the key used to sign the update is permitted to make the requested updates. By default, a principal MUST NOT be permitted to make any changes to zone data. Any permissions MUST be enabled through configuration. Locked until you say so ๐
The policy is fully implemented in the primary zone server's configuration, for several reasons. This removes the limitations imposed by encoding policy into a fixed number of bits (like the KEY RR's signatory field). Policy is only relevant to the server applying it, so there's no reason to expose it. And finally, a change in policy or a new type of policy should not affect the DNS protocol or data format, and should not cause interoperability failures. Stable era โจ
3.1 - Standard policies ๐
Implementations SHOULD allow access control policies to use the principal as an authorization token, and they MAY also allow policies to grant permission to a signed message regardless of principal. ๐ซง
A common practice would be to restrict a principal's permissions by domain name. That is, a principal could be permitted to add, delete, or modify entries corresponding to one or more domain names. Implementations SHOULD allow per-name access control, and SHOULD provide a concise representation of the principal's own name, its subdomains, and all names in the zone. Name game ๐
Additionally, a server SHOULD allow updates to be restricted by RR type, so a principal could add, delete, or modify specific record types at certain names. Implementations SHOULD allow per-type access control, and SHOULD provide concise representations of all types and all "user" types, where a user type is defined as one that does not affect the operation of DNS itself. Type check ๐
3.1.1 - User types ๐ท
User types include all data types except SOA, NS, SIG, and NXT. SOA and NS records SHOULD NOT be modified by normal users, since these types create or modify delegation points. The addition of SIG records can lead to attacks that result in additional workload for resolvers, and deleting SIG records could cause extra work for the server if the zone SIG was deleted. Note that these records are not forbidden, but they're not recommended for normal users. ๐ง
NXT records MUST NOT be created, modified, or deleted by dynamic update, as their update may cause instability in the protocol. This is an update to RFC 2136. Absolutely not ๐ โโ๏ธ
Issues concerning updates of KEY records are discussed in the Security Considerations section. ๐
3.2 - Additional policies ๐
Users are free to implement any policies. Policies may be as specific or general as desired, and as complex as desired. They may depend on the principal or any other characteristics of the signed message. Mix and match ๐งโโ๏ธ
4 - Interaction with DNSSEC ๐ซ
Although this protocol does not change the way updates to secure zones are processed, there are a number of issues that should be clarified. Some tea to spill โ
4.1 - Adding SIGs ๐ฆ
An authorized update request MAY include SIG records with each RRset. Since SIG records (except SIG(0) records) MUST NOT be used for authentication of the update message, they are not required. ๐ซถ
If a principal is authorized to update SIG records and there are SIG records in the update, the SIG records are added without verification. The server MAY examine SIG records and drop SIGs with a temporal validity period in the past. โณ
4.2 - Deleting SIGs ๐๏ธ
If a principal is authorized to update SIG records and the update specifies the deletion of SIG records, the server MAY choose to override the authority and refuse the update. For example, the server may allow all SIG records not generated by a zone key to be deleted. Power move ๐
4.3. Non-explicit updates to SIGs ๐
okay so if the zone is secured, the RRset that got updated MUST be signed again by the time the update is done, following the zone's signing policy ๐ this usually means one or more SIG records made by one or more zone keys, and those private components MUST be online [RFC3008] ๐
when an RRset's contents change, the server MAY delete all the SIG records attached to it, since they won't be valid anymore ๐ฆ
4.4. Effects on the zone ๐ธ
if anything changed, the server MUST, if necessary, generate a new SOA record and new NXT records, and sign them with the right zone keys โจ changing NXT records through secure dynamic update is explicitly forbidden ๐ but SOA updates are allowed, since maintaining SOA parameters is outside the scope of the DNS protocol ๐
5. Security Considerations ๐จ
this part is serious, bestie, so read it slowly ๐ญ
this document requires that a zone key and possibly other cryptographic secret material be held on an online, network-connected host, most likely a name server ๐ that material is at the mercy of host security to stay secret ๐ if it leaks, DNS data is put at risk of masquerade attacks ๐ญ the data at risk is both the zones served by that machine and the zones delegated from it ๐ฑ
allowing updates of KEY records may lead to undesirable results ๐ a principal could be allowed to insert a public key without holding the matching private key, and then masquerade as the key owner ๐ป
6. Acknowledgements ๐ซถ
the author would like to thank these lovely people for their review and informative comments (in alphabetical order) ๐
- Harald Alvestrand
- Donald Eastlake
- Olafur Gudmundsson
- Andreas Gustafsson
- Bob Halley
- Stuart Kwan
- Ed Lewis
7. References ๐
[RFC1034] Mockapetris, P., "Domain Names - Concepts and Facilities",
STD 13, RFC 1034, November 1987.
[RFC1035] Mockapetris, P., "Domain Names - Implementation and
Specification", STD 13, RFC 1035, November 1987.
[RFC2136] Vixie (Ed.), P., Thomson, S., Rekhter, Y. and J. Bound,
"Dynamic Updates in the Domain Name System", RFC 2136,
April 1997.
[RFC2137] Eastlake, D., "Secure Domain Name System Dynamic Update",
RFC 2137, April 1997.
[RFC2535] Eastlake, G., "Domain Name System Security Extensions",
RFC 2535, March 1999.
[RFC2845] Vixie, P., Gudmundsson, O., Eastlake, D. and B.
Wellington, "Secret Key Transaction Signatures for DNS
(TSIG)", RFC 2845, May 2000.
[RFC2930] Eastlake, D., "Secret Key Establishment for DNS (TKEY
RR)", RFC 2930, September 2000.
[RFC2931] Eastlake, D., "DNS Request and Transaction Signatures
(SIG(0)s)", RFC 2931, September 2000.
[RFC3008] Wellington, B., "Domain Name System Security (DNSSEC)
Signing Authority", RFC 3008, November 2000.
8. Author's Address ๐๏ธ
Brian Wellington
Nominum, Inc.
950 Charter Street
Redwood City, CA 94063
Phone: +1 650 381 6022
EMail: Brian.Wellington@nominum.com
9. Full Copyright Statement โ๏ธ
Copyright (C) The Internet Society (2000). All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement ๐
Funding for the RFC Editor function is currently provided by the Internet Society. ๐
๐ฆ where this page comes from
- ietf: rfc3007 2000-11
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms