diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc9103.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc9103.txt')
-rw-r--r-- | doc/rfc/rfc9103.txt | 1696 |
1 files changed, 1696 insertions, 0 deletions
diff --git a/doc/rfc/rfc9103.txt b/doc/rfc/rfc9103.txt new file mode 100644 index 0000000..18a3f9c --- /dev/null +++ b/doc/rfc/rfc9103.txt @@ -0,0 +1,1696 @@ + + + + +Internet Engineering Task Force (IETF) W. Toorop +Request for Comments: 9103 NLnet Labs +Updates: 1995, 5936, 7766 S. Dickinson +Category: Standards Track Sinodun IT +ISSN: 2070-1721 S. Sahib + Brave Software + P. Aras + A. Mankin + Salesforce + August 2021 + + + DNS Zone Transfer over TLS + +Abstract + + DNS zone transfers are transmitted in cleartext, which gives + attackers the opportunity to collect the content of a zone by + eavesdropping on network connections. The DNS Transaction Signature + (TSIG) mechanism is specified to restrict direct zone transfer to + authorized clients only, but it does not add confidentiality. This + document specifies the use of TLS, rather than cleartext, to prevent + zone content collection via passive monitoring of zone transfers: XFR + over TLS (XoT). Additionally, this specification updates RFC 1995 + and RFC 5936 with respect to efficient use of TCP connections and RFC + 7766 with respect to the recommended number of connections between a + client and server for each transport. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc9103. + +Copyright Notice + + Copyright (c) 2021 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. + +Table of Contents + + 1. Introduction + 2. Terminology + 3. Threat Model + 4. Design Considerations for XoT + 5. Connection and Data Flows in Existing XFR Mechanisms + 5.1. AXFR Mechanism + 5.2. IXFR Mechanism + 5.3. Data Leakage of NOTIFY and SOA Message Exchanges + 5.3.1. NOTIFY + 5.3.2. SOA + 6. Updates to Existing Specifications + 6.1. Update to RFC 1995 for IXFR over TCP + 6.2. Update to RFC 5936 for AXFR over TCP + 6.3. Updates to RFCs 1995 and 5936 for XFR over TCP + 6.3.1. Connection Reuse + 6.3.2. AXFRs and IXFRs on the Same Connection + 6.3.3. XFR Limits + 6.3.4. The edns-tcp-keepalive EDNS(0) Option + 6.3.5. Backwards Compatibility + 6.4. Update to RFC 7766 + 7. XoT Specification + 7.1. Connection Establishment + 7.2. TLS Versions + 7.3. Port Selection + 7.4. High-Level XoT Descriptions + 7.5. XoT Transfers + 7.6. XoT Connections + 7.7. XoT vs. ADoT + 7.8. Response RCODES + 7.9. AXoT Specifics + 7.9.1. Padding AXoT Responses + 7.10. IXoT Specifics + 7.10.1. Condensation of Responses + 7.10.2. Fallback to AXFR + 7.10.3. Padding of IXoT Responses + 7.11. Name Compression and Maximum Payload Sizes + 8. Multi-primary Configurations + 9. Authentication Mechanisms + 9.1. TSIG + 9.2. SIG(0) + 9.3. TLS + 9.3.1. Opportunistic TLS + 9.3.2. Strict TLS + 9.3.3. Mutual TLS + 9.4. IP-Based ACL on the Primary + 9.5. ZONEMD + 10. XoT Authentication + 11. Policies for Both AXoT and IXoT + 12. Implementation Considerations + 13. Operational Considerations + 14. IANA Considerations + 15. Security Considerations + 16. References + 16.1. Normative References + 16.2. Informative References + Appendix A. XoT Server Connection Handling + A.1. Listening Only on a Specific IP Address for TLS + A.2. Client-Specific TLS Acceptance + A.3. SNI-Based TLS Acceptance + A.4. Transport-Specific Response Policies + A.4.1. SNI-Based Response Policies + Acknowledgements + Contributors + Authors' Addresses + +1. Introduction + + DNS has a number of privacy vulnerabilities, as discussed in detail + in [RFC9076]. Query privacy between stub resolvers and recursive + resolvers has received the most attention to date, with Standards + Track documents for both DNS over TLS (DoT) [RFC7858] and DNS over + HTTPS (DoH) [RFC8484] and a proposal for DNS over QUIC + [DPRIVE-DNSOQUIC]. There is ongoing work on DNS privacy requirements + for exchanges between recursive resolvers and authoritative servers + and some suggestions for how signaling of DoT support by + authoritative name servers might work. However, there is currently + no RFC that specifically defines recursive-to-authoritative DNS over + TLS (ADoT). + + [RFC9076] establishes that a stub resolver's DNS query transactions + are not public and that they need protection, but, on zone transfer + [RFC1995] [RFC5936], it says only: + + | Privacy risks for the holder of a zone (the risk that someone gets + | the data) are discussed in [RFC5155] and [RFC5936]. + + In what way is exposing the full contents of a zone a privacy risk? + The contents of the zone could include information such as names of + persons used in names of hosts. Best practice is not to use personal + information for domain names, but many such domain names exist. The + contents of the zone could also include references to locations that + allow inference about location information of the individuals + associated with the zone's organization. It could also include + references to other organizations. Examples of this could be: + + * Person-laptop.example.org + + * MX-for-Location.example.org + + * Service-tenant-from-another-org.example.org + + Additionally, the full zone contents expose all the IP addresses of + endpoints held in the DNS records, which can make reconnaissance and + attack targeting easier, particularly for IPv6 addresses or private + networks. There may also be regulatory, policy, or other reasons why + the zone contents in full must be treated as private. + + Neither of the RFCs mentioned in [RFC9076] contemplate the risk that + someone gets the data through eavesdropping on network connections, + only via enumeration or unauthorized transfer, as described in the + following paragraphs. + + Zone enumeration is trivially possible for DNSSEC zones that use + NSEC, i.e., queries for the authenticated denial-of-existence records + allow a client to walk through the entire zone contents. [RFC5155] + specifies NSEC3, a mechanism to provide measures against zone + enumeration for DNSSEC-signed zones (a goal was to make it as hard to + enumerate a DNSSEC-signed zone as an unsigned zone). Whilst this is + widely used, it has been demonstrated that zone walking is possible + for precomputed NSEC3 using attacks, such as those described in + [NSEC3-attacks]. This prompted further work on an alternative + mechanism for DNSSEC-authenticated denial of existence (NSEC5 + [NSEC5]); however, questions remain over the practicality of this + mechanism. + + [RFC5155] does not address data obtained outside zone enumeration + (nor does [NSEC5]). Preventing eavesdropping of zone transfers (as + described in this document) is orthogonal to preventing zone + enumeration, though they aim to protect the same information. + + [RFC5936] specifies using TSIG [RFC8945] for authorization of the + clients of a zone transfer and for data integrity but does not + express any need for confidentiality, and TSIG does not offer + encryption. + + Section 8 of the NIST document "Secure Domain Name System (DNS) + Deployment Guide" [NIST-GUIDE] discusses restricting access for zone + transfers using Access Control Lists (ACLs) and TSIG in more detail. + It also discusses the possibility that specific deployments might + choose to use a lower-level network layer to protect zone transfers, + e.g., IPsec. + + It is noted that in all the common open-source implementations such + ACLs are applied on a per-query basis (at the time of writing). + Since requests typically occur on TCP connections, authoritative + servers must therefore accept any TCP connection and then handle the + authentication of each zone transfer (XFR) request individually. + + Because both AXFR (authoritative transfer) and IXFR (incremental zone + transfer) are typically carried out over TCP from authoritative DNS + protocol implementations, encrypting zone transfers using TLS + [RFC8499] -- based closely on DoT [RFC7858] -- seems like a simple + step forward. This document specifies how to use TLS (1.3 or later) + as a transport to prevent zone collection from zone transfers. + + This document also updates the previous specifications for zone + transfers to clarify and extend them, mainly with respect to TCP + usage: + + * [RFC1995] (IXFR) and [RFC5936] (AXFR) are both updated to add + further specification on efficient use of TCP connections. + + * Section 6.2.2 of [RFC7766] ("DNS Transport over TCP - + Implementation Requirements") is updated with a new recommendation + about the number of connections between a client and server for + each transport. + +2. Terminology + + 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. + + Privacy terminology is as described in Section 3 of [RFC6973]. + + DNS terminology is as described in [RFC8499]. Note that, as in + [RFC8499], the terms 'primary' and 'secondary' are used for two + servers engaged in zone transfers. + + DoT: DNS over TLS, as specified in [RFC7858] + + XFR over TCP: Used to mean both IXFR over TCP [RFC1995] and AXFR + over TCP [RFC5936] + + XoT: XFR-over-TLS mechanisms, as specified in this document, which + apply to both AXFR over TLS and IXFR over TLS (XoT is + pronounced 'zot' since X here stands for 'zone transfer') + + AXoT: AXFR over TLS + + IXoT: IXFR over TLS + +3. Threat Model + + The threat model considered here is one where the current contents + and size of the zone are considered sensitive and should be protected + during transfer. + + The threat model does not, however, consider the existence of a zone, + the act of zone transfer between two entities, nor the identities of + the name servers hosting a zone (including both those acting as + hidden primaries/secondaries or directly serving the zone) as + sensitive information. The proposed mechanism does not attempt to + obscure such information. The reasons for this include: + + * much of this information can be obtained by various methods, + including active scanning of the DNS, and + + * an attacker who can monitor network traffic can rather easily + infer relations between name servers simply from traffic patterns, + even when some or all of the traffic is encrypted (in terms of + current deployments). + + The model does not consider attacks on the mechanisms that trigger a + zone transfer, e.g., NOTIFY messages. + + It is noted that simply using XoT will indicate a desire by the zone + owner that the contents of the zone remain confidential and so could + be subject to blocking (e.g., via blocking of port 853) if an + attacker had such capabilities. However, this threat is likely true + of any such mechanism that attempts to encrypt data passed between + name servers, e.g., IPsec. + +4. Design Considerations for XoT + + The following principles were considered in the design for XoT: + + Confidentiality: Clearly using an encrypted transport for zone + transfers will defeat zone content leakage that can occur via + passive surveillance. + + Authentication: Use of single or mutual TLS (mTLS) authentication + (in combination with ACLs) can complement and potentially be an + alternative to TSIG. + + Performance: + * Existing AXFR and IXFR mechanisms have the burden of backwards + compatibility with older implementations based on the original + specifications in [RFC1034] and [RFC1035]. For example, some + older AXFR servers don't support using a TCP connection for + multiple AXFR sessions or XFRs of different zones because they + have not been updated to follow the guidance in [RFC5936]. Any + implementation of XoT would obviously be required to implement + optimized and interoperable transfers, as described in + [RFC5936], e.g., transfer of multiple zones over one + connection. + + * Current usage of TCP for IXFR is suboptimal in some cases, + i.e., connections are frequently closed after a single IXFR. + +5. Connection and Data Flows in Existing XFR Mechanisms + + The original specification for zone transfers in [RFC1034] and + [RFC1035] was based on a polling mechanism: a secondary performed a + periodic query for the SOA (start of zone authority) record (based on + the refresh timer) to determine if an AXFR was required. + + [RFC1995] and [RFC1996] introduced the concepts of IXFR and NOTIFY, + respectively, to provide for prompt propagation of zone updates. + This has largely replaced AXFR where possible, particularly for + dynamically updated zones. + + [RFC5936] subsequently redefined the specification of AXFR to improve + performance and interoperability. + + In this document, the term 'XFR mechanism' is used to describe the + entire set of message exchanges between a secondary and a primary + that concludes with a successful AXFR or IXFR request/response. This + set may or may not include: + + * NOTIFY messages + + * SOA queries + + * Fallback from IXFR to AXFR + + * Fallback from IXFR over UDP to IXFR over TCP + + The term is used to encompass the range of permutations that are + possible and is useful to distinguish the 'XFR mechanism' from a + single XFR request/response exchange. + +5.1. AXFR Mechanism + + The figure below provides an outline of an AXFR mechanism including + NOTIFYs. + + Secondary Primary + + | NOTIFY | + | <-------------------------------- | UDP + | --------------------------------> | + | NOTIFY Response | + | | + | | + | SOA Request | + | --------------------------------> | UDP (or part of + | <-------------------------------- | a TCP session) + | SOA Response | + | | + | | + | | + | AXFR Request | --- + | --------------------------------> | | + | <-------------------------------- | | + | AXFR Response 1 | | + | (Zone data) | | + | | | + | <-------------------------------- | | TCP + | AXFR Response 2 | | Session + | (Zone data) | | + | | | + | <-------------------------------- | | + | AXFR Response 3 | | + | (Zone data) | --- + | | + + Figure 1: AXFR Mechanism + + 1. An AXFR is often (but not always) preceded by a NOTIFY (over UDP) + from the primary to the secondary. A secondary may also initiate + an AXFR based on a refresh timer or scheduled/triggered zone + maintenance. + + 2. The secondary will normally (but not always) make an SOA query to + the primary to obtain the serial number of the zone held by the + primary. + + 3. If the primary serial is higher than the secondary's serial + (using Serial Number Arithmetic [RFC1982]), the secondary makes + an AXFR request (over TCP) to the primary, after which the AXFR + data flows in one or more AXFR responses on the TCP connection. + [RFC5936] defines this specific step as an 'AXFR session', i.e., + as an AXFR query message and the sequence of AXFR response + messages returned for it. + + [RFC5936] re-specified AXFR, providing additional guidance beyond + that provided in [RFC1034] and [RFC1035] and importantly specified + that AXFR must use TCP as the transport protocol. + + Additionally, Sections 4.1, 4.1.1, and 4.1.2 of [RFC5936] provide + improved guidance for AXFR clients and servers with regard to reuse + of TCP connections for multiple AXFRs and AXFRs of different zones. + However, [RFC5936] was constrained by having to be backwards + compatible with some very early basic implementations of AXFR. For + example, it outlines that the SOA query can also happen on this + connection. However, this can cause interoperability problems with + older implementations that support only the trivial case of one AXFR + per connection. + +5.2. IXFR Mechanism + + The figure below provides an outline of the IXFR mechanism including + NOTIFYs. + + Secondary Primary + + | NOTIFY | + | <-------------------------------- | UDP + | --------------------------------> | + | NOTIFY Response | + | | + | | + | SOA Request | + | --------------------------------> | UDP or TCP + | <-------------------------------- | + | SOA Response | + | | + | | + | | + | IXFR Request | + | --------------------------------> | UDP or TCP + | <-------------------------------- | + | IXFR Response | + | (Zone data) | + | | + | | --- + | IXFR Request | | + | --------------------------------> | | Retry over + | <-------------------------------- | | TCP if + | IXFR Response | | required + | (Zone data) | --- + + Figure 2: IXFR Mechanism + + 1. An IXFR is normally (but not always) preceded by a NOTIFY (over + UDP) from the primary to the secondary. A secondary may also + initiate an IXFR based on a refresh timer or scheduled/triggered + zone maintenance. + + 2. The secondary will normally (but not always) make an SOA query to + the primary to obtain the serial number of the zone held by the + primary. + + 3. If the primary serial is higher than the secondary's serial + (using Serial Number Arithmetic [RFC1982]), the secondary makes + an IXFR request to the primary, after which the primary sends an + IXFR response. + + [RFC1995] specifies that IXFR may use UDP if the entire IXFR response + can be contained in a single DNS packet, otherwise, TCP is used. In + fact, it says: + + | Thus, a client should first make an IXFR query using UDP. + + So there may be a fourth step above where the client falls back to + IXFR over TCP. There may also be an additional step where the + secondary must fall back to AXFR because, e.g., the primary does not + support IXFR. + + However, it is noted that most of the widely used open-source + implementations of authoritative name servers (including both [BIND] + and [NSD]) do IXFR using TCP by default in their latest releases. + For BIND, TCP connections are sometimes used for SOA queries, but, in + general, they are not used persistently and are closed after an IXFR + is completed. + +5.3. Data Leakage of NOTIFY and SOA Message Exchanges + + This section presents a rationale for considering the encryption of + the other messages in the XFR mechanism. + + Since the SOA of the published zone can be trivially discovered by + simply querying the publicly available authoritative servers, leakage + of this resource record (RR) via such a direct query is not discussed + in the following sections. + +5.3.1. NOTIFY + + Unencrypted NOTIFY messages identify configured secondaries on the + primary. + + [RFC1996] also states: + + | If ANCOUNT>0, then the answer section represents an unsecure hint + | at the new RRset for this <QNAME,QCLASS,QTYPE>. + + But since the only query type (QTYPE) for NOTIFY defined at the time + of this writing is SOA, this does not pose a potential leak. + +5.3.2. SOA + + For hidden XFR servers (either primaries or secondaries), an SOA + response directly from that server only additionally leaks the degree + of SOA serial number lag of any downstream secondary of that server. + +6. Updates to Existing Specifications + + For convenience, the term 'XFR over TCP' is used in this document to + mean both IXFR over TCP and AXFR over TCP; therefore, statements that + use that term update both [RFC1995] and [RFC5936] and implicitly also + apply to XoT. Differences in behavior specific to XoT are discussed + in Section 7. + + Both [RFC1995] and [RFC5936] were published sometime before TCP + became a widely supported transport for DNS. [RFC1995], in fact, + says nothing with respect to optimizing IXFRs over TCP or reusing + already open TCP connections to perform IXFRs or other queries. + Therefore, there arguably is an implicit assumption that a TCP + connection is used for one and only one IXFR request. Indeed, many + major open-source implementations take this approach (at the time of + this writing). And whilst [RFC5936] gives guidance on connection + reuse for AXFR, it predates more recent specifications describing + persistent TCP connections (e.g., [RFC7766], [RFC7828]), and AXFR + implementations again often make less-than-optimal use of open + connections. + + Given this, new implementations of XoT will clearly benefit from + specific guidance on TCP/TLS connection usage for XFR, because this + will: + + * result in more consistent XoT implementations with better + interoperability and + + * remove any need for XoT implementations to support legacy behavior + for XoT connections that XFR-over-TCP implementations have + historically often supported. + + Therefore, this document updates both the previous specifications for + XFR over TCP ([RFC1995] and [RFC5936]) to clarify that: + + * Implementations MUST use [RFC7766] ("DNS Transport over TCP - + Implementation Requirements") to optimize the use of TCP + connections. + + * Whilst [RFC7766] states that "DNS clients SHOULD pipeline their + queries" on TCP connections, it did not distinguish between XFRs + and other queries for this behavior. It is now recognized that + XFRs are not as latency sensitive as other queries and can be + significantly more complex for clients to handle, both because of + the large amount of state that must be kept and because there may + be multiple messages in the responses. For these reasons, it is + clarified here that a valid reason for not pipelining queries is + when they are all XFR queries, i.e., clients sending multiple XFRs + MAY choose not to pipeline those queries. Clients that do not + pipeline XFR queries therefore have no additional requirements to + handle out-of-order or intermingled responses (as described + later), since they will never receive them. + + * Implementations SHOULD use the edns-tcp-keepalive EDNS(0) option + [RFC7828] to manage persistent connections. This is more flexible + than the alternative of simply using fixed timeouts. + + The following sections include detailed clarifications on the updates + to XFR behavior implied in [RFC7766] and how the use of [RFC7828] + applies specifically to XFR exchanges. They also discuss how IXFR + and AXFR can reuse the same TCP connection. + + For completeness, the recent specification of extended DNS error + (EDE) codes [RFC8914] is also mentioned here. For zone transfers, + when returning REFUSED to a zone transfer request from an + 'unauthorized' client (e.g., where the client is not listed in an ACL + for zone transfers or does not sign the request with a valid TSIG + key), the extended DNS error code 18 - Prohibited can also be sent. + +6.1. Update to RFC 1995 for IXFR over TCP + + For clarity, an IXFR-over-TCP server compliant with this + specification MUST be able to handle multiple concurrent IXoT + requests on a single TCP connection (for the same and different + zones) and SHOULD send the responses as soon as they are available, + which might be out of order compared to the requests. + +6.2. Update to RFC 5936 for AXFR over TCP + + For clarity, an AXFR-over-TCP server compliant with this + specification MUST be able to handle multiple concurrent AXoT + sessions on a single TCP connection (for the same and different + zones). The response streams for concurrent AXFRs MAY be + intermingled, and AXFR-over-TCP clients compliant with this + specification, which pipeline AXFR requests, MUST be able to handle + this. + +6.3. Updates to RFCs 1995 and 5936 for XFR over TCP + +6.3.1. Connection Reuse + + As specified, XFR-over-TCP clients SHOULD reuse any existing open TCP + connection when starting any new XFR request to the same primary, and + for issuing SOA queries, instead of opening a new connection. The + number of TCP connections between a secondary and primary SHOULD be + minimized (also see Section 6.4). + + Valid reasons for not reusing existing connections might include: + + * As already noted in [RFC7766], separate connections for different + zones might be preferred for operational reasons. In this case, + the number of concurrent connections for zone transfers SHOULD be + limited to the total number of zones transferred between the + client and server. + + * A configured limit for the number of outstanding queries or XFR + requests allowed on a single TCP connection has been reached. + + * The message ID pool has already been exhausted on an open + connection. + + * A large number of timeouts or slow responses have occurred on an + open connection. + + * An edns-tcp-keepalive EDNS(0) option with a timeout of 0 has been + received from the server, and the client is in the process of + closing the connection (see Section 6.3.4). + + If no TCP connections are currently open, XFR clients MAY send SOA + queries over UDP or a new TCP connection. + +6.3.2. AXFRs and IXFRs on the Same Connection + + Neither [RFC1995] nor [RFC5936] explicitly discuss the use of a + single TCP connection for both IXFR and AXFR requests. [RFC5936] + does make the general statement: + + | Non-AXFR session traffic can also use an open connection. + + In this document, the above is clarified to indicate that + implementations capable of both AXFR and IXFR and compliant with this + specification SHOULD: + + * use the same TCP connection for both AXFR and IXFR requests to the + same primary, + + * pipeline such requests (if they pipeline XFR requests in general) + and MAY intermingle them, and + + * send the response(s) for each request as soon as they are + available, i.e., responses MAY be sent intermingled. + + For some current implementations, adding all the above functionality + would introduce significant code complexity. In such a case, there + will need to be an assessment of the trade-off between that and the + performance benefits of the above for XFR. + +6.3.3. XFR Limits + + The server MAY limit the number of concurrent IXFRs, AXFRs, or total + XFR transfers in progress (or from a given secondary) to protect + server resources. Servers SHOULD return SERVFAIL if this limit is + hit, since it is a transient error and a retry at a later time might + succeed (there is no previous specification for this behavior). + +6.3.4. The edns-tcp-keepalive EDNS(0) Option + + XFR clients that send the edns-tcp-keepalive EDNS(0) option on every + XFR request provide the server with maximum opportunity to update the + edns-tcp-keepalive timeout. The XFR server may use the frequency of + recent XFRs to calculate an average update rate as input to the + decision of what edns-tcp-keepalive timeout to use. If the server + does not support edns-tcp-keepalive, the client MAY keep the + connection open for a few seconds ([RFC7766] recommends that servers + use timeouts of at least a few seconds). + + Whilst the specification for EDNS(0) [RFC6891] does not specifically + mention AXFRs, it does say: + + | If an OPT record is present in a received request, compliant + | responders MUST include an OPT record in their respective + | responses. + + In this document, the above is clarified to indicate that if an OPT + record is present in a received AXFR request, compliant responders + MUST include an OPT record in each of the subsequent AXFR responses. + Note that this requirement, combined with the use of edns-tcp- + keepalive, enables AXFR servers to signal the desire to close a + connection (when existing transactions have competed) due to low + resources by sending an edns-tcp-keepalive EDNS(0) option with a + timeout of 0 on any AXFR response. This does not signal that the + AXFR is aborted, just that the server wishes to close the connection + as soon as possible. + +6.3.5. Backwards Compatibility + + Certain legacy behaviors were noted in [RFC5936], with provisions + that implementations may want to offer options to fallback to legacy + behavior when interoperating with servers known to not support + [RFC5936]. For purposes of interoperability, IXFR and AXFR + implementations may want to continue offering such configuration + options, as well as supporting some behaviors that were + underspecified prior to this work (e.g., performing IXFR and AXFRs on + separate connections). However, XoT connections should have no need + to do so. + +6.4. Update to RFC 7766 + + [RFC7766] made general implementation recommendations with regard to + TCP/TLS connection handling: + + | To mitigate the risk of unintentional server overload, DNS clients + | MUST take care to minimize the number of concurrent TCP + | connections made to any individual server. It is RECOMMENDED that + | for any given client/server interaction there SHOULD be no more + | than one connection for regular queries, one for zone transfers, + | and one for each protocol that is being used on top of TCP (for + | example, if the resolver was using TLS). However, it is noted + | that certain primary/ secondary configurations with many busy + | zones might need to use more than one TCP connection for zone + | transfers for operational reasons (for example, to support + | concurrent transfers of multiple zones). + + Whilst this recommends a particular behavior for the clients using + TCP, it does not relax the requirement for servers to handle 'mixed' + traffic (regular queries and zone transfers) on any open TCP/TLS + connection. It also overlooks the potential that other transports + might want to take the same approach with regard to using separate + connections for different purposes. + + This specification updates the above general guidance in [RFC7766] to + provide the same separation of connection purpose (regular queries + and zone transfers) for all transports being used on top of TCP. + + Therefore, it is RECOMMENDED that for each protocol used on top of + TCP in any given client/server interaction there SHOULD be no more + than one connection for regular queries and one for zone transfers. + + As an illustration, it could be imagined that in the future such an + interaction could hypothetically include one or all of the following: + + * one TCP connection for regular queries + + * one TCP connection for zone transfers + + * one TLS connection for regular queries + + * one TLS connection for zone transfers + + * one DoH connection for regular queries + + * one DoH connection for zone transfers + + Section 6.3.1 provides specific details of the reasons why more than + one connection for a given transport might be required for zone + transfers from a particular client. + +7. XoT Specification + +7.1. Connection Establishment + + During connection establishment, the Application-Layer Protocol + Negotiation (ALPN) token "dot" [DoT-ALPN] MUST be selected in the TLS + handshake. + +7.2. TLS Versions + + All implementations of this specification MUST use only TLS 1.3 + [RFC8446] or later. + +7.3. Port Selection + + The connection for XoT SHOULD be established using port 853, as + specified in [RFC7858], unless there is mutual agreement between the + primary and secondary to use a port other than port 853 for XoT. + There MAY be agreement to use different ports for AXoT and IXoT or + for different zones. + +7.4. High-Level XoT Descriptions + + It is useful to note that in XoT it is the secondary that initiates + the TLS connection to the primary for an XFR request so that, in + terms of connectivity, the secondary is the TLS client and the + primary is the TLS server. + + The figure below provides an outline of the AXoT mechanism including + NOTIFYs. + + Secondary Primary + + | NOTIFY | + | <-------------------------------- | UDP + | --------------------------------> | + | NOTIFY Response | + | | + | | + | SOA Request | + | --------------------------------> | UDP (or part of + | <-------------------------------- | a TCP/TLS session) + | SOA Response | + | | + | | + | | + | AXFR Request | --- + | --------------------------------> | | + | <-------------------------------- | | + | AXFR Response 1 | | + | (Zone data) | | + | | | + | <-------------------------------- | | TLS + | AXFR Response 2 | | Session + | (Zone data) | | + | | | + | <-------------------------------- | | + | AXFR Response 3 | | + | (Zone data) | --- + | | + + Figure 3: AXoT Mechanism + + The figure below provides an outline of the IXoT mechanism including + NOTIFYs. + + Secondary Primary + + | NOTIFY | + | <-------------------------------- | UDP + | --------------------------------> | + | NOTIFY Response | + | | + | | + | SOA Request | + | --------------------------------> | UDP (or part of + | <-------------------------------- | a TCP/TLS session) + | SOA Response | + | | + | | + | | + | IXFR Request | --- + | --------------------------------> | | + | <-------------------------------- | | + | IXFR Response | | + | (Zone data) | | + | | | TLS + | | | session + | IXFR Request | | + | --------------------------------> | | + | <-------------------------------- | | + | IXFR Response | | + | (Zone data) | --- + + Figure 4: IXoT Mechanism + +7.5. XoT Transfers + + For a zone transfer between two endpoints to be considered protected + with XoT, all XFR requests and responses for that zone MUST be sent + over TLS connections, where at a minimum: + + * The client MUST authenticate the server by use of an + authentication domain name using a Strict Privacy profile, as + described in [RFC8310]. + + * The server MUST validate the client is authorized to request or + proxy a zone transfer by using one or both of the following + methods: + + - mutual TLS (mTLS) + + - an IP-based ACL (which can be either per message or per + connection) combined with a valid TSIG/SIG(0) signature on the + XFR request + + If only one method is selected, then mTLS is preferred because it + provides strong cryptographic protection at both endpoints. + + Authentication mechanisms are discussed in full in Section 9, and the + rationale for the above requirement is discussed in Section 10. + Transfer group policies are discussed in Section 11. + +7.6. XoT Connections + + The details in Section 6 about, e.g., persistent connections and XFR + message handling, are fully applicable to XoT connections as well. + However, any behavior specified here takes precedence for XoT. + + If no TLS connections are currently open, XoT clients MAY send SOA + queries over UDP, TCP, or TLS. + +7.7. XoT vs. ADoT + + As noted earlier, there is currently no specification for encryption + of connections from recursive resolvers to authoritative servers. + Some authoritative servers are experimenting with ADoT, and + opportunistic encryption has also been raised as a possibility; + therefore, it is highly likely that use of encryption by + authoritative servers will evolve in the coming years. + + This raises questions in the short term with regard to TLS connection + and message handling for authoritative servers. In particular, there + is likely to be a class of authoritative servers that wish to use XoT + in the near future with a small number of configured secondaries but + that do not wish to support DoT for regular queries from recursives + in that same time frame. These servers have to potentially cope with + probing and direct queries from recursives and from test servers and + also potential attacks that might wish to make use of TLS to overload + the server. + + [RFC5936] clearly states that non-AXFR session traffic can use an + open connection; however, this requirement needs to be reevaluated + when considering the application of the same model to XoT. Proposing + that a server should also start responding to all queries received + over TLS just because it has enabled XoT would be equivalent to + defining a form of authoritative DoT. This specification does not + propose that, but it also does not prohibit servers from answering + queries unrelated to XFR exchanges over TLS. Rather, this + specification simply outlines in later sections: + + * the utilization of EDE codes by XoT servers in response to queries + on TLS connections that they are not willing to answer (see + Section 7.8) + + * the operational and policy options that an operator of a XoT + server has with regard to managing TLS connections and messages + (see Appendix A) + +7.8. Response RCODES + + XoT clients and servers MUST implement EDE codes. If a XoT server + receives non-XoT traffic it is not willing to answer on a TLS + connection, it SHOULD respond with REFUSED and the extended DNS error + code 21 - Not Supported [RFC8914]. XoT clients should not send any + further queries of this type to the server for a reasonable period of + time (for example, one hour), i.e., long enough that the server + configuration or policy might be updated. + + Historically, servers have used the REFUSED RCODE for many + situations; therefore, clients often had no detailed information on + which to base an error or fallback path when queries were refused. + As a result, the client behavior could vary significantly. XoT + servers that refuse queries must cater to the fact that client + behavior might vary from continually retrying queries regardless of + receiving REFUSED to every query or, at the other extreme, clients + may decide to stop using the server over any transport. This might + be because those clients are either non-XoT clients or do not + implement EDE codes. + +7.9. AXoT Specifics + +7.9.1. Padding AXoT Responses + + The goal of padding AXoT responses is two fold: + + * to obfuscate the actual size of the transferred zone to minimize + information leakage about the entire contents of the zone + + * to obfuscate the incremental changes to the zone between SOA + updates to minimize information leakage about zone update activity + and growth + + Note that the reuse of XoT connections for transfers of multiple + different zones slightly complicates any attempt to analyze the + traffic size and timing to extract information. Also, effective + padding may require the state to be kept because zones may grow and/ + or shrink over time. + + It is noted here that, depending on the padding policies eventually + developed for XoT, the requirement to obfuscate the total zone size + might require a server to create 'empty' AXoT responses, that is, + AXoT responses that contain no RRs apart from an OPT RR containing + the EDNS(0) option for padding. For example, without this + capability, the maximum size that a tiny zone could be padded to + would theoretically be limited if there had to be a minimum of 1 RR + per packet. + + However, as with existing AXFR, the last AXoT response message sent + MUST contain the same SOA that was in the first message of the AXoT + response series in order to signal the conclusion of the zone + transfer. + + [RFC5936] says: + + | Each AXFR response message SHOULD contain a sufficient number of + | RRs to reasonably amortize the per-message overhead, up to the + | largest number that will fit within a DNS message (taking the + | required content of the other sections into account, as described + | below). + + 'Empty' AXoT responses generated in order to meet a padding + requirement will be exceptions to the above statement. For + flexibility, for future proofing, and in order to guarantee support + for future padding policies, it is stated here that secondary + implementations MUST be resilient to receiving padded AXoT responses, + including 'empty' AXoT responses that contain only an OPT RR + containing the EDNS(0) option for padding. + + Recommendations of specific policies for padding AXoT responses are + out of scope for this specification. Detailed considerations of such + policies and the trade-offs involved are expected to be the subject + of future work. + +7.10. IXoT Specifics + +7.10.1. Condensation of Responses + + [RFC1995] says that condensation of responses is optional and MAY be + done. Whilst it does add complexity to generating responses, it can + significantly reduce the size of responses. However, any such + reduction might be offset by increased message size due to padding. + This specification does not update the optionality of condensation + for XoT responses. + +7.10.2. Fallback to AXFR + + Fallback to AXFR can happen, for example, if the server is not able + to provide an IXFR for the requested SOA. Implementations differ in + how long they store zone deltas and how many may be stored at any one + time. + + Just as with IXFR over TCP, after a failed IXFR, an IXoT client + SHOULD request the AXFR on the already open XoT connection. + +7.10.3. Padding of IXoT Responses + + The goal of padding IXoT responses is to obfuscate the incremental + changes to the zone between SOA updates to minimize information + leakage about zone update activity and growth. Both the size and + timing of the IXoT responses could reveal information. + + IXFR responses can vary greatly in size from the order of 100 bytes + for one or two record updates to tens of thousands of bytes for + large, dynamic DNSSEC-signed zones. The frequency of IXFR responses + can also depend greatly on if and how the zone is DNSSEC signed. + + In order to guarantee support for future padding policies, it is + stated here that secondary implementations MUST be resilient to + receiving padded IXoT responses. + + Recommendation of specific policies for padding IXoT responses are + out of scope for this specification. Detailed considerations of such + padding policies, the use of traffic obfuscation techniques (such as + generating fake XFR traffic), and the trade-offs involved are + expected to be the subject of future work. + +7.11. Name Compression and Maximum Payload Sizes + + It is noted here that name compression [RFC1035] can be used in XFR + responses to reduce the size of the payload; however, the maximum + value of the offset that can be used in the name compression pointer + structure is 16384. For some DNS implementations, this limits the + size of an individual XFR response used in practice to something + around the order of 16 KB. In principle, larger payload sizes can be + supported for some responses with more sophisticated approaches + (e.g., by precalculating the maximum offset required). + + Implementations may wish to offer options to disable name compression + for XoT responses to enable larger payloads. This might be + particularly helpful when padding is used, since minimizing the + payload size is not necessarily a useful optimization in this case + and disabling name compression will reduce the resources required to + construct the payload. + +8. Multi-primary Configurations + + This model can provide flexibility and redundancy, particularly for + IXFR. A secondary will receive one or more NOTIFY messages and can + send an SOA to all of the configured primaries. It can then choose + to send an XFR request to the primary with the highest SOA (or based + on other criteria, e.g., RTT). + + When using persistent connections, the secondary may have a XoT + connection already open to one or more primaries. Should a secondary + preferentially request an XFR from a primary to which it already has + an open XoT connection or the one with the highest SOA (assuming it + doesn't have a connection open to it already)? + + Two extremes can be envisaged here. The first one can be considered + a 'preferred primary connection' model. In this case, the secondary + continues to use one persistent connection to a single primary until + it has reason not to. Reasons not to might include the primary + repeatedly closing the connection, long query/response RTTs on + transfers, or the SOA of the primary being an unacceptable lag behind + the SOA of an alternative primary. + + The other extreme can be considered a 'parallel primary connection' + model. Here, a secondary could keep multiple persistent connections + open to all available primaries and only request XFRs from the + primary with the highest serial number. Since normally the number of + secondaries and primaries in direct contact in a transfer group is + reasonably low, this might be feasible if latency is the most + significant concern. + + Recommendation of a particular scheme is out of scope of this + document, but implementations are encouraged to provide configuration + options that allow operators to make choices about this behavior. + +9. Authentication Mechanisms + + To provide context to the requirements in Section 7.5, this section + provides a brief summary of some of the existing authentication and + validation mechanisms (both transport independent and TLS specific) + that are available when performing zone transfers. Section 10 then + discusses in more detail specifically how a combination of TLS + authentication, TSIG, and IP-based ACLs interact for XoT. + + In this document, the mechanisms are classified based on the + following properties: + + Data Origin Authentication (DO): + Authentication 1) of the fact that the DNS message originated from + the party with whom credentials were shared and 2) of the data + integrity of the message contents (the originating party may or + may not be the party operating the far end of a TCP/TLS connection + in a 'proxy' scenario). + + Channel Confidentiality (CC): + Confidentiality of the communication channel between the client + and server (i.e., the two endpoints of a TCP/TLS connection) from + passive surveillance. + + Channel Authentication (CA): + Authentication of the identity of the party to whom a TCP/TLS + connection is made (this might not be a direct connection between + the primary and secondary in a proxy scenario). + +9.1. TSIG + + TSIG [RFC8945] provides a mechanism for two or more parties to use + shared secret keys that can then be used to create a message digest + to protect individual DNS messages. This allows each party to + authenticate that a request or response (and the data in it) came + from the other party, even if it was transmitted over an unsecured + channel or via a proxy. + + Properties: Data origin authentication. + +9.2. SIG(0) + + SIG(0) [RFC2931] similarly provides a mechanism to digitally sign a + DNS message but uses public key authentication, where the public keys + are stored in DNS as KEY RRs and a private key is stored at the + signer. + + Properties: Data origin authentication. + +9.3. TLS + +9.3.1. Opportunistic TLS + + Opportunistic TLS for DoT is defined in [RFC8310] and can provide a + defense against passive surveillance, providing on-the-wire + confidentiality. Essentially: + + * if clients know authentication information for a server, they + SHOULD try to authenticate the server, + + * if this fails or clients do not know the information, they MAY + fallback to using TLS without authentication, or + + * clients MAY fallback to using cleartext if TLS is not available. + + As such, it does not offer a defense against active attacks (e.g., an + on-path active attacker on the connection from client to server) and + is not considered as useful for XoT. + + Properties: None guaranteed. + +9.3.2. Strict TLS + + Strict TLS for DoT [RFC8310] requires that a client is configured + with an authentication domain name (and/or Subject Public Key Info + (SPKI) pin set) that MUST be used to authenticate the TLS handshake + with the server. If authentication of the server fails, the client + will not proceed with the connection. This provides a defense for + the client against active surveillance, providing client-to-server + authentication and end-to-end channel confidentiality. + + Properties: Channel confidentiality and channel authentication (of + the server). + +9.3.3. Mutual TLS + + This is an extension to Strict TLS [RFC8310] that requires that a + client is configured with an authentication domain name (and/or SPKI + pin set) and a client certificate. The client offers the certificate + for authentication by the server, and the client can authenticate the + server the same way as in Strict TLS. This provides a defense for + both parties against active surveillance, providing bidirectional + authentication and end-to-end channel confidentiality. + + Properties: Channel confidentiality and mutual channel + authentication. + +9.4. IP-Based ACL on the Primary + + Most DNS server implementations offer an option to configure an IP- + based ACL, which is often used in combination with TSIG-based ACLs to + restrict access to zone transfers on primary servers on a per-query + basis. + + This is also possible with XoT, but it must be noted that, as with + TCP, the implementation of such an ACL cannot be enforced on the + primary until an XFR request is received on an established + connection. + + As discussed in Appendix A, an IP-based per-connection ACL could also + be implemented where only TLS connections from recognized secondaries + are accepted. + + Properties: Channel authentication of the client. + +9.5. ZONEMD + + For completeness, ZONEMD [RFC8976] ("Message Digest for DNS Zones") + is described here. The ZONEMD message digest is a mechanism that can + be used to verify the content of a standalone zone. It is designed + to be independent of the transmission channel or mechanism, allowing + a general consumer of a zone to do origin authentication of the + entire zone contents. Note that the current version of [RFC8976] + states: + + | As specified herein, ZONEMD is impractical for large, dynamic + | zones due to the time and resources required for digest + | calculation. However, the ZONEMD record is extensible so that new + | digest schemes may be added in the future to support large, + | dynamic zones. + + It is complementary but orthogonal to the above mechanisms and can be + used in conjunction with XoT but is not considered further here. + +10. XoT Authentication + + It is noted that zone transfer scenarios can vary from a simple + single primary/secondary relationship where both servers are under + the control of a single operator to a complex hierarchical structure + that includes proxies and multiple operators. Each deployment + scenario will require specific analysis to determine which + combination of authentication methods are best suited to the + deployment model in question. + + The XoT authentication requirement specified in Section 7.5 addresses + the issue of ensuring that the transfers are encrypted between the + two endpoints directly involved in the current transfers. The + following table summarizes the properties of a selection of the + mechanisms discussed in Section 9. The two-letter abbreviations for + the properties are used below: (S) indicates the secondary and (P) + indicates the primary. + + +================+=======+=======+=======+=======+=======+=======+ + | Method | DO(S) | CC(S) | CA(S) | DO(P) | CC(P) | CA(P) | + +================+=======+=======+=======+=======+=======+=======+ + | Strict TLS | | Y | Y | | Y | | + +----------------+-------+-------+-------+-------+-------+-------+ + | Mutual TLS | | Y | Y | | Y | Y | + +----------------+-------+-------+-------+-------+-------+-------+ + | ACL on primary | | | | | | Y | + +----------------+-------+-------+-------+-------+-------+-------+ + | TSIG | Y | | | Y | | | + +----------------+-------+-------+-------+-------+-------+-------+ + + Table 1: Properties of Authentication Methods for XoT + + Based on this analysis, it can be seen that: + + * Using just mutual TLS can be considered a standalone solution + since both endpoints are cryptographically authenticated. + + * Using secondary-side Strict TLS with a primary-side IP-based ACL + and TSIG/SIG(0) combination provides sufficient protection to be + acceptable. + + Using just an IP-based ACL could be susceptible to attacks that can + spoof TCP IP addresses; using TSIG/SIG(0) alone could be susceptible + to attacks that were able to capture such messages should they be + accidentally sent in cleartext by any server with the key. + +11. Policies for Both AXoT and IXoT + + Whilst the protection of the zone contents in a transfer between two + endpoints can be provided by the XoT protocol, the protection of all + the transfers of a given zone requires operational administration and + policy management. + + The entire group of servers involved in XFR for a particular set of + zones (all the primaries and all the secondaries) is called the + 'transfer group'. + + In order to assure the confidentiality of the zone information, the + entire transfer group MUST have a consistent policy of using XoT. If + any do not, this is a weak link for attackers to exploit. For + clarification, this means that within any transfer group both AXFRs + and IXFRs for a zone MUST all use XoT. + + An individual zone transfer is not considered protected by XoT unless + both the client and server are configured to use only XoT, and the + overall zone transfer is not considered protected until all members + of the transfer group are configured to use only XoT with all other + transfers servers (see Section 12). + + A XoT policy MUST specify if: + + * mutual TLS is used and/or + + * an IP-based ACL and TSIG/SIG(0) combination is used. + + Since this may require configuration of a number of servers who may + be under the control of different operators, the desired consistency + could be hard to enforce and audit in practice. + + Certain aspects of the policies can be relatively easy to test + independently, e.g., by requesting zone transfers without TSIG, from + unauthorized IP addresses or over cleartext DNS. Other aspects, such + as if a secondary will accept data without a TSIG digest or if + secondaries are using Strict as opposed to Opportunistic TLS, are + more challenging. + + The mechanics of coordinating or enforcing such policies are out of + the scope of this document but may be the subject of future + operational guidance. + +12. Implementation Considerations + + Server implementations may want to also offer options that allow ACLs + on a zone to specify that a specific client can use either XoT or + TCP. This would allow for flexibility while clients are migrating to + XoT. + + Client implementations may similarly want to offer options to cater + to the multi-primary case where the primaries are migrating to XoT. + +13. Operational Considerations + + If the options described in Section 12 are available, such + configuration options MUST only be used in a 'migration mode' and + therefore should be used with great care. + + It is noted that use of a TLS proxy in front of the primary server is + a simple deployment solution that can enable server-side XoT. + +14. IANA Considerations + + This document has no IANA actions. + +15. Security Considerations + + This document specifies a security measure against a DNS risk: the + risk that an attacker collects entire DNS zones through eavesdropping + on cleartext DNS zone transfers. + + This does not mitigate: + + * the risk that some level of zone activity might be inferred by + observing zone transfer sizes and timing on encrypted connections + (even with padding applied), in combination with obtaining SOA + records by directly querying authoritative servers, + + * the risk that hidden primaries might be inferred or identified via + observation of encrypted connections, or + + * the risk of zone contents being obtained via zone enumeration + techniques. + + Security concerns of DoT are outlined in [RFC7858] and [RFC8310]. + +16. References + +16.1. Normative References + + [DoT-ALPN] IANA, "TLS Application-Layer Protocol Negotiation (ALPN) + Protocol IDs", <https://www.iana.org/assignments/tls- + extensiontype-values/>. + + [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", + STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, + <https://www.rfc-editor.org/info/rfc1034>. + + [RFC1035] Mockapetris, P., "Domain names - implementation and + specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, + November 1987, <https://www.rfc-editor.org/info/rfc1035>. + + [RFC1995] Ohta, M., "Incremental Zone Transfer in DNS", RFC 1995, + DOI 10.17487/RFC1995, August 1996, + <https://www.rfc-editor.org/info/rfc1995>. + + [RFC1996] Vixie, P., "A Mechanism for Prompt Notification of Zone + Changes (DNS NOTIFY)", RFC 1996, DOI 10.17487/RFC1996, + August 1996, <https://www.rfc-editor.org/info/rfc1996>. + + [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>. + + [RFC2931] Eastlake 3rd, D., "DNS Request and Transaction Signatures + ( SIG(0)s )", RFC 2931, DOI 10.17487/RFC2931, September + 2000, <https://www.rfc-editor.org/info/rfc2931>. + + [RFC5936] Lewis, E. and A. Hoenes, Ed., "DNS Zone Transfer Protocol + (AXFR)", RFC 5936, DOI 10.17487/RFC5936, June 2010, + <https://www.rfc-editor.org/info/rfc5936>. + + [RFC6973] Cooper, A., Tschofenig, H., Aboba, B., Peterson, J., + Morris, J., Hansen, M., and R. Smith, "Privacy + Considerations for Internet Protocols", RFC 6973, + DOI 10.17487/RFC6973, July 2013, + <https://www.rfc-editor.org/info/rfc6973>. + + [RFC7766] Dickinson, J., Dickinson, S., Bellis, R., Mankin, A., and + D. Wessels, "DNS Transport over TCP - Implementation + Requirements", RFC 7766, DOI 10.17487/RFC7766, March 2016, + <https://www.rfc-editor.org/info/rfc7766>. + + [RFC7828] Wouters, P., Abley, J., Dickinson, S., and R. Bellis, "The + edns-tcp-keepalive EDNS0 Option", RFC 7828, + DOI 10.17487/RFC7828, April 2016, + <https://www.rfc-editor.org/info/rfc7828>. + + [RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D., + and P. Hoffman, "Specification for DNS over Transport + Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May + 2016, <https://www.rfc-editor.org/info/rfc7858>. + + [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>. + + [RFC8310] Dickinson, S., Gillmor, D., and T. Reddy, "Usage Profiles + for DNS over TLS and DNS over DTLS", RFC 8310, + DOI 10.17487/RFC8310, March 2018, + <https://www.rfc-editor.org/info/rfc8310>. + + [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol + Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, + <https://www.rfc-editor.org/info/rfc8446>. + + [RFC8499] Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS + Terminology", BCP 219, RFC 8499, DOI 10.17487/RFC8499, + January 2019, <https://www.rfc-editor.org/info/rfc8499>. + + [RFC8914] Kumari, W., Hunt, E., Arends, R., Hardaker, W., and D. + Lawrence, "Extended DNS Errors", RFC 8914, + DOI 10.17487/RFC8914, October 2020, + <https://www.rfc-editor.org/info/rfc8914>. + + [RFC8945] Dupont, F., Morris, S., Vixie, P., Eastlake 3rd, D., + Gudmundsson, O., and B. Wellington, "Secret Key + Transaction Authentication for DNS (TSIG)", STD 93, + RFC 8945, DOI 10.17487/RFC8945, November 2020, + <https://www.rfc-editor.org/info/rfc8945>. + +16.2. Informative References + + [BIND] ISC, "BIND 9.16.16", <https://www.isc.org/bind/>. + + [DPRIVE-DNSOQUIC] + Huitema, C., Dickinson, S., and A. Mankin, "Specification + of DNS over Dedicated QUIC Connections", Work in Progress, + Internet-Draft, draft-ietf-dprive-dnsoquic-03, 12 July + 2021, <https://datatracker.ietf.org/doc/html/draft-ietf- + dprive-dnsoquic-03>. + + [NIST-GUIDE] + Chandramouli, R. and S. Rose, "Secure Domain Name System + (DNS) Deployment Guide", September 2013, + <https://nvlpubs.nist.gov/nistpubs/SpecialPublications/ + NIST.SP.800-81-2.pdf>. + + [NSD] NLnet Labs, "NSD 4.3.6", + <https://www.nlnetlabs.nl/projects/nsd/about/>. + + [NSEC3-attacks] + Goldberg, S., Naor, N., Papadopoulos, D., Reyzin, L., + Vasant, S., and A. Ziv, "Stretching NSEC3 to the Limit: + Efficient Zone Enumeration Attacks on NSEC3 Variants", + February 2015, + <https://www.cs.bu.edu/~goldbe/papers/nsec3attacks.pdf>. + + [NSEC5] Vcelak, J., Goldberg, S., Papadopoulos, D., Huque, S., and + D. Lawrence, "NSEC5, DNSSEC Authenticated Denial of + Existence", Work in Progress, Internet-Draft, draft- + vcelak-nsec5-08, 29 December 2018, + <https://datatracker.ietf.org/doc/html/draft-vcelak- + nsec5-08>. + + [RFC1982] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982, + DOI 10.17487/RFC1982, August 1996, + <https://www.rfc-editor.org/info/rfc1982>. + + [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>. + + [RFC6891] Damas, J., Graff, M., and P. Vixie, "Extension Mechanisms + for DNS (EDNS(0))", STD 75, RFC 6891, + DOI 10.17487/RFC6891, April 2013, + <https://www.rfc-editor.org/info/rfc6891>. + + [RFC8484] Hoffman, P. and P. McManus, "DNS Queries over HTTPS + (DoH)", RFC 8484, DOI 10.17487/RFC8484, October 2018, + <https://www.rfc-editor.org/info/rfc8484>. + + [RFC8976] Wessels, D., Barber, P., Weinberg, M., Kumari, W., and W. + Hardaker, "Message Digest for DNS Zones", RFC 8976, + DOI 10.17487/RFC8976, February 2021, + <https://www.rfc-editor.org/info/rfc8976>. + + [RFC9076] Wicinski, T., Ed., "DNS Privacy Considerations", RFC 9076, + DOI 10.17487/RFC9076, July 2021, + <https://www.rfc-editor.org/info/rfc9076>. + + [TLS-ESNI] Rescorla, E., Oku, K., Sullivan, N., and C. A. Wood, "TLS + Encrypted Client Hello", Work in Progress, Internet-Draft, + draft-ietf-tls-esni-13, 12 August 2021, + <https://datatracker.ietf.org/doc/html/draft-ietf-tls- + esni-13>. + +Appendix A. XoT Server Connection Handling + + This appendix provides a non-normative outline of the pros and cons + of XoT server connection-handling options. + + For completeness, it is noted that an earlier draft version of this + document suggested using a XoT-specific ALPN to negotiate TLS + connections that supported only a limited set of queries (SOA, XFRs); + however, this did not gain support. Reasons given included + additional code complexity and the fact that XoT and ADoT are both + DNS wire format and so should share the "dot" ALPN. + +A.1. Listening Only on a Specific IP Address for TLS + + Obviously, a name server that hosts a zone and services queries for + the zone on an IP address published in an NS record may wish to use a + separate IP address for XoT to listen for TLS, only publishing that + address to its secondaries. + + Pros: Probing of the public IP address will show no support for TLS. + ACLs will prevent zone transfer on all transports on a per-query + basis. + + Cons: Attackers passively observing traffic will still be able to + observe TLS connections to the separate address. + +A.2. Client-Specific TLS Acceptance + + Primaries that include IP-based ACLs and/or mutual TLS in their + authentication models have the option of only accepting TLS + connections from authorized clients. This could be implemented + either using a proxy or directly in the DNS implementation. + + Pros: Connection management happens at setup time. The maximum + number of TLS connections a server will have to support can be + easily assessed. Once the connection is accepted, the server + might well be willing to answer any query on that connection since + it is coming from a configured secondary, and a specific response + policy on the connection may not be needed (see below). + + Cons: Currently, none of the major open-source implementations of a + DNS authoritative server support such an option. + +A.3. SNI-Based TLS Acceptance + + Primaries could also choose to only accept TLS connections based on a + Server Name Indication (SNI) that was published only to their + secondaries. + + Pros: Reduces the number of accepted connections. + + Cons: As above. Also, this is not a recommended use of SNI. For + SNIs sent in the clear, this would still allow attackers passively + observing traffic to potentially abuse this mechanism. The use of + Encrypted Client Hello [TLS-ESNI] may be of use here. + +A.4. Transport-Specific Response Policies + + Some primaries might rely on TSIG/SIG(0) combined with per-query, IP- + based ACLs to authenticate secondaries. In this case, the primary + must accept all incoming TLS/TCP connections and then apply a + transport-specific response policy on a per-query basis. + + As an aside, whilst [RFC7766] makes a general purpose distinction in + the advice to clients about their usage of connections (between + regular queries and zone transfers), this is not strict, and nothing + in the DNS protocol prevents using the same connection for both types + of traffic. Hence, a server cannot know the intention of any client + that connects to it; it can only inspect the messages it receives on + such a connection and make per-query decisions about whether or not + to answer those queries. + + Example policies a XoT server might implement are: + + strict: REFUSE all queries on TLS connections, except SOA and + authorized XFR requests + + moderate: REFUSE all queries on TLS connections until one is + received that is signed by a recognized TSIG/SIG(0) key, + then answer all queries on the connection after that + + complex: apply a heuristic to determine which queries on a TLS + connections to REFUSE + + relaxed: answer all non-XoT queries on all TLS connections with + the same policy applied to TCP queries + + Pros: Allows for flexible behavior by the server that could be + changed over time. + + Cons: The server must handle the burden of accepting all TLS + connections just to perform XFRs with a small number of + secondaries. Client behavior to a REFUSED response is not clearly + defined (see Section 7.8). Currently, none of the major open- + source implementations of a DNS authoritative server offer an + option for different response policies in different transports + (but such functionality could potentially be implemented using a + proxy). + +A.4.1. SNI-Based Response Policies + + In a similar fashion, XoT servers might use the presence of an SNI in + the Client Hello to determine which response policy to initially + apply to the TLS connections. + + Pros: This has the potential to allow a clean distinction between a + XoT service and any future DoT-based service for answering + recursive queries. + + Cons: As above. + +Acknowledgements + + The authors thank Tony Finch, Benno Overeinder, Shumon Huque, Tim + Wicinski, and many other members of DPRIVE for review and + discussions. + + The authors particularly thank Peter van Dijk, Ondrej Sury, Brian + Dickson, and several other open-source DNS implementers for valuable + discussion and clarification on the issue associated with pipelining + XFR queries and handling out-of-order/intermingled responses. + +Contributors + + Significant contributions to the document were made by: + + Han Zhang + Salesforce + San Francisco, CA + United States of America + + Email: hzhang@salesforce.com + + +Authors' Addresses + + Willem Toorop + NLnet Labs + Science Park 400 + 1098 XH Amsterdam + Netherlands + + Email: willem@nlnetlabs.nl + + + Sara Dickinson + Sinodun IT + Magdalen Centre + Oxford Science Park + Oxford + OX4 4GA + United Kingdom + + Email: sara@sinodun.com + + + Shivan Sahib + Brave Software + Vancouver BC + Canada + + Email: shivankaulsahib@gmail.com + + + Pallavi Aras + Salesforce + Herndon, VA + United States of America + + Email: paras@salesforce.com + + + Allison Mankin + Salesforce + Herndon, VA + United States of America + + Email: allison.mankin@gmail.com |