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