idnits 2.17.1 draft-ietf-ipsecme-split-dns-03.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (November 12, 2017) is 2350 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'TBD IANA' is mentioned on line 309, but not defined == Missing Reference: 'TBD' is mentioned on line 439, but not defined Summary: 0 errors (**), 0 flaws (~~), 3 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network T. Pauly 3 Internet-Draft Apple Inc. 4 Intended status: Standards Track P. Wouters 5 Expires: May 16, 2018 Red Hat 6 November 12, 2017 8 Split DNS Configuration for IKEv2 9 draft-ietf-ipsecme-split-dns-03 11 Abstract 13 This document defines two Configuration Payload Attribute Types for 14 the IKEv2 protocol that add support for private DNS domains. These 15 domains should be resolved using DNS servers reachable through an 16 IPsec connection, while leaving all other DNS resolution unchanged. 17 This approach of resolving a subset of domains using non-public DNS 18 servers is referred to as "Split DNS". 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at http://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on May 16, 2018. 37 Copyright Notice 39 Copyright (c) 2017 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (http://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 55 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 56 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 3 57 3. Protocol Exchange . . . . . . . . . . . . . . . . . . . . . . 3 58 3.1. Configuration Request . . . . . . . . . . . . . . . . . . 4 59 3.2. Configuration Reply . . . . . . . . . . . . . . . . . . . 4 60 3.3. Mapping DNS Servers to Domains . . . . . . . . . . . . . 5 61 3.4. Example Exchanges . . . . . . . . . . . . . . . . . . . . 5 62 3.4.1. Simple Case . . . . . . . . . . . . . . . . . . . . . 5 63 3.4.2. Requesting Domains and DNSSEC trust anchors . . . . . 6 64 4. Payload Formats . . . . . . . . . . . . . . . . . . . . . . . 6 65 4.1. INTERNAL_DNS_DOMAIN Configuration Attribute Type . . . . 6 66 4.2. INTERNAL_DNSSEC_TA Configuration Attribute . . . . . . . 7 67 5. Split DNS Usage Guidelines . . . . . . . . . . . . . . . . . 7 68 6. Security Considerations . . . . . . . . . . . . . . . . . . . 9 69 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 70 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 71 8.1. Normative References . . . . . . . . . . . . . . . . . . 10 72 8.2. Informative References . . . . . . . . . . . . . . . . . 10 73 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 75 1. Introduction 77 Split DNS is a common configuration for secure tunnels, such as 78 Virtual Private Networks in which host machines private to an 79 organization can only be resolved using internal DNS resolvers 80 [RFC2775]. In such configurations, it is often desirable to only 81 resolve hosts within a set of private domains using the tunnel, while 82 letting resolutions for public hosts be handled by a device's default 83 DNS configuration. 85 The Internet Key Exchange protocol version 2 [RFC7296] negotiates 86 configuration parameters using Configuration Payload Attribute Types. 87 This document defines two Configuration Payload Attribute Types that 88 add support for trusted Split DNS domains. 90 The INTERNAL_DNS_DOMAIN attribute type is used to convey one or more 91 DNS domains that should be resolved only using the provided DNS 92 nameserver IP addresses, causing these requests to use the IPsec 93 connection. 95 The INTERNAL_DNSSEC_TA attribute type is used to convey DNSSEC trust 96 anchors for those domains. 98 When only a subset of traffic is routed into a private network using 99 an IPsec SA, these Configuration Payload options can be used to 100 define which private domains should be resolved through the IPsec 101 connection without affecting the client's global DNS resolution. 103 For the purposes of this document, DNS resolution servers accessible 104 through an IPsec connection will be referred to as "internal DNS 105 servers", and other DNS servers will be referred to as "external DNS 106 servers". 108 A client using these configuration payloads will be able to request 109 and receive Split DNS configurations using the INTERNAL_DNS_DOMAIN 110 and INTERNAL_DNSSEC_TA configuration attributes. The client device 111 can use the internal DNS server(s) for any DNS queries within the 112 assigned domains. DNS queries for other domains should be send to 113 regular external DNS server. 115 1.1. Requirements Language 117 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 118 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 119 document are to be interpreted as described in RFC 2119 [RFC2119]. 121 2. Background 123 Split DNS is a common configuration for enterprise VPN deployments, 124 in which only one or a few private DNS domains are accessible and 125 resolvable via an IPsec based VPN connection. 127 Other tunnel-establishment protocols already support the assignment 128 of Split DNS domains. For example, there are proprietary extensions 129 to IKEv1 that allow a server to assign Split DNS domains to a client. 130 However, the IKEv2 standard does not include a method to configure 131 this option. This document defines a standard way to negotiate this 132 option for IKEv2. 134 3. Protocol Exchange 136 In order to negotiate which domains are considered internal to an 137 IKEv2 tunnel, initiators indicate support for Split DNS in their 138 CFG_REQUEST payloads, and responders assign internal domains (and 139 DNSSEC trust anchors) in their CFG_REPLY payloads. When Split DNS 140 has been negotiated, the existing DNS server configuration attributes 141 will be interpreted as internal DNS servers that can resolve 142 hostnames within the internal domains. 144 3.1. Configuration Request 146 To indicate support for Split DNS, an initiator includes one more 147 INTERNAL_DNS_DOMAIN attributes as defined in Section 4 as part of the 148 CFG_REQUEST payload. If an INTERNAL_DNS_DOMAIN attribute is included 149 in the CFG_REQUEST, the initiator SHOULD also include one or more 150 INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes in the CFG_REQUEST. 152 The INTERNAL_DNS_DOMAIN attribute sent by the initiator is usually 153 empty but MAY contain a suggested domain name. 155 The absence of INTERNAL_DNS_DOMAIN attributes in the CFG_REQUEST 156 payload indicates that the initiator does not support or is unwilling 157 to accept Split DNS configuration. 159 To indicate support for DNSSEC, an initiator includes one or more 160 INTERNAL_DNSSEC_TA attributes as defined in Section 4 as part of the 161 CFG_REQUEST payload. If an INTERNAL_DNSSEC_TA attriute is included 162 in the CFG_REQUEST, the initiator SHOULD also include one or more 163 INTERNAL_DNS_DOMAIN attributes in the CFG_REQUEST. 165 An initiator MAY convey its current DNSSEC trust anchors for the 166 domain specified in the INTERNAL_DNS_DOMAIN attribute. If it does 167 not wish to convey this information, it MUST use a length of 0. 169 The absence of INTERNAL_DNSSEC_TA attributes in the CFG_REQUEST 170 payload indicates that the initiator does not support or is unwilling 171 to accept DNSSEC trust anchor configuration. 173 3.2. Configuration Reply 175 Responders MAY send one or more INTERNAL_DNS_DOMAIN attributes in 176 their CFG_REPLY payload. If an INTERNAL_DNS_DOMAIN attribute is 177 included in the CFG_REPLY, the responder MUST also include one or 178 both of the INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes in the 179 CFG_REPLY. These DNS server configurations are necessary to define 180 which servers should receive queries for hostnames in internal 181 domains. If the CFG_REQUEST included an INTERNAL_DNS_DOMAIN 182 attribute, but the CFG_REPLY does not include an INTERNAL_DNS_DOMAIN 183 attribute, the initiator should behave as if Split DNS configurations 184 are not supported by the server. 186 Each INTERNAL_DNS_DOMAIN represents a domain that the DNS servers 187 address listed in INTERNAL_IP4_DNS and INTERNAL_IP6_DNS can resolve. 189 If the CFG_REQUEST included INTERNAL_DNS_DOMAIN attributes with non- 190 zero lengths, the content MAY be ignored or be interpreted as a 191 suggestion by the responder. 193 For each DNS domain specified in an INTERNAL_DNS_DOMAIN attribute, 194 one or more INTERNAL_DNSSEC_TA attributes MAY be included by the 195 responder. This attribute lists the corresponding internal DNSSEC 196 trust anchor in the DNS presentation format of a DS record as 197 specified in [RFC4034]. The INTERNAL_DNSSEC_TA attribute MUST 198 immediately follow the INTERNAL_DNS_DOMAIN attribute that it applies 199 to. 201 3.3. Mapping DNS Servers to Domains 203 All DNS servers provided in the CFG_REPLY MUST support resolving 204 hostnames within all INTERNAL_DNS_DOMAIN domains. In other words, 205 the INTERNAL_DNS_DOMAIN attributes in a CFG_REPLY payload form a 206 single list of Split DNS domains that applies to the entire list of 207 INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes. 209 3.4. Example Exchanges 211 3.4.1. Simple Case 213 In this example exchange, the initiator requests INTERNAL_IP4_DNS and 214 INTERNAL_DNS_DOMAIN attributes in the CFG_REQUEST, but does not 215 specify any value for either. This indicates that it supports Split 216 DNS, but has no preference for which DNS requests should be routed 217 through the tunnel. 219 The responder replies with two DNS server addresses, and two internal 220 domains, "example.com" and "city.other.com". 222 Any subsequent DNS queries from the initiator for domains such as 223 "www.example.com" should use 198.51.100.2 or 198.51.100.4 to resolve. 225 CP(CFG_REQUEST) = 226 INTERNAL_IP4_ADDRESS() 227 INTERNAL_IP4_DNS() 228 INTERNAL_DNS_DOMAIN() 230 CP(CFG_REPLY) = 231 INTERNAL_IP4_ADDRESS(198.51.100.234) 232 INTERNAL_IP4_DNS(198.51.100.2) 233 INTERNAL_IP4_DNS(198.51.100.4) 234 INTERNAL_DNS_DOMAIN(example.com) 235 INTERNAL_DNS_DOMAIN(city.other.com) 237 3.4.2. Requesting Domains and DNSSEC trust anchors 239 In this example exchange, the initiator requests INTERNAL_IP4_DNS, 240 INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA attributess in the 241 CFG_REQUEST 243 Any subsequent DNS queries from the initiator for domains such as 244 "www.example.com" or "city.other.com" would be DNSSEC validated using 245 the DNSSEC trust anchor received in the CFG_REPLY 247 In this example, the initiator has no existing DNSSEC trust anchors 248 would the requested domain. the "example.com" dommain has DNSSEC 249 trust anchors that are returned, while the "other.com" domain has no 250 DNSSEC trust anchors 252 CP(CFG_REQUEST) = 253 INTERNAL_IP4_ADDRESS() 254 INTERNAL_IP4_DNS() 255 INTERNAL_DNS_DOMAIN() 256 INTERNAL_DNSSEC_TA() 258 CP(CFG_REPLY) = 259 INTERNAL_IP4_ADDRESS(198.51.100.234) 260 INTERNAL_IP4_DNS(198.51.100.2) 261 INTERNAL_IP4_DNS(198.51.100.4) 262 INTERNAL_DNS_DOMAIN(example.com) 263 INTERNAL_DNSSEC_TA(43547,8,1,B6225AB2CC613E0DCA7962BDC2342EA4F1B56083) 264 INTERNAL_DNSSEC_TA(31406,8,2,F78CF3344F72137235098ECBBD08947C2C90....) 265 INTERNAL_DNS_DOMAIN(city.other.com) 267 4. Payload Formats 269 4.1. INTERNAL_DNS_DOMAIN Configuration Attribute Type 271 1 2 3 272 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 273 +-+-----------------------------+-------------------------------+ 274 |R| Attribute Type | Length | 275 +-+-----------------------------+-------------------------------+ 276 | | 277 ~ Domain Name in DNS presentation format ~ 278 | | 279 +---------------------------------------------------------------+ 281 o Reserved (1 bit) - Defined in IKEv2 RFC [RFC7296]. 283 o Attribute Type (15 bits) 25 - INTERNAL_DNS_DOMAIN. 285 o Length (2 octets, unsigned integer) - Length of domain name. 287 o Domain Name (0 or more octets) - A Fully Qualified Domain Name 288 used for Split DNS rules, such as example.com, in DNS presentation 289 format and optionally using IDNA [RFC5890] for Internationalized 290 Domain Names. Implementors need to be careful that this value is 291 not null-terminated. 293 4.2. INTERNAL_DNSSEC_TA Configuration Attribute 295 1 2 3 296 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 297 +-+-----------------------------+-------------------------------+ 298 |R| Attribute Type | Length | 299 +-+-----------------------------+---------------+---------------+ 300 | Key Tag | Algorithm | Digest Type | 301 +-------------------------------+---------------+---------------+ 302 | | 303 ~ Digest ~ 304 | | 305 +---------------------------------------------------------------+ 307 o Reserved (1 bit) - Defined in IKEv2 RFC [RFC7296]. 309 o Attribute Type (15 bits) [TBD IANA] - INTERNAL_DNSSEC_TA. 311 o Length (2 octets, unsigned integer) - Length of DNSSEC Trust 312 Anchor data. 314 o Key Tag value (0 or 2 octets, unsigned integer) - Key Tag as 315 specified in [RFC4034] Section 5.1 317 o Algorithm (0 or 1 octet) - DNSKEY algorithm value from the IANA 318 DNS Security Algorithm Numbers Registry 320 o DS algorithm (0 or 1 octet) - DS algorithm value from the IANA 321 Delegation Signer (DS) Resource Record (RR) Type Digest Algorithms 322 Registry 324 o Digest (0 or more octets) - The DNSKEY digest as specified in 325 [RFC4034] Section 5.1 in presentation format. 327 5. Split DNS Usage Guidelines 329 If a CFG_REPLY payload contains no INTERNAL_DNS_DOMAIN attributes, 330 the client MAY use the provided INTERNAL_IP4_DNS or INTERNAL_IP6_DNS 331 servers as the default DNS server(s) for all queries. 333 If a client is configured by local policy to only accept a limited 334 number of INTERNAL_DNS_DOMAIN values, the client MUST ignore any 335 other INTERNAL_DNS_DOMAIN values. 337 For each INTERNAL_DNS_DOMAIN entry in a CFG_REPLY payload that is not 338 prohibited by local policy, the client MUST use the provided 339 INTERNAL_IP4_DNS or INTERNAL_IP6_DNS DNS servers as the only 340 resolvers for the listed domains and its sub-domains and it MUST NOT 341 attempt to resolve the provided DNS domains using its external DNS 342 servers. 344 If the initiator host is configured to block DNS answers containing 345 IP addresses from special IP address ranges such as those of 346 [RFC1918], the initiator SHOULD allow the DNS domains listed in the 347 INTERNAL_DNS_DOMAIN attributes to contain those Special IP addresses. 349 If a CFG_REPLY contains one or more INTERNAL_DNS_DOMAIN attributes 350 and its local policy does not forbid these values, the client MUST 351 configure its DNS resolver to resolve those domains and all their 352 subdomains using only the DNS resolver(s) listed in that CFG_REPLY 353 message. If those resolvers fail, those names MUST NOT be resolved 354 using any other DNS resolvers. Other domain names SHOULD be resolved 355 using some other external DNS resolver(s), configured independently 356 from IKE. Queries for these other domains MAY be sent to the 357 internal DNS resolver(s) listed in that CFG_REPLY message, but have 358 no guarantee of being answered. For example, if the 359 INTERNAL_DNS_DOMAIN attribute specifies "example.com", then 360 "example.com", "www.example.com" and "mail.eng.example.com" MUST be 361 resolved using the internal DNS resolver(s), but "anotherexample.com" 362 and "ample.com" SHOULD NOT be resolved using the internal resolver 363 and SHOULD use the system's external DNS resolver(s). 365 An initiator SHOULD ignore INTERNAL_DNS_DOMAIN attributes containing 366 domains that are designated Special Use Domain Names in [RFC6761], 367 such as "local", "localhost", "invalid", etc. Although it may 368 explicitly wish to support some Special Use Domain Names. 370 When an IKE SA is terminated, the DNS forwarding must be 371 unconfigured. The DNS forwarding itself MUST be be deleted. All 372 cached data of the INTERNAL_DNS_DOMAIN provided DNS domainis MUST be 373 flushed. This includes negative cache entries. Obtained DNSSEC 374 trust anchors MUST be removed from the list of trust anchors. The 375 outstanding DNS request queue MUST be cleared. 377 INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA attributes SHOULD only be 378 used on split tunnel configurations where only a subset of traffic is 379 routed into a private remote network using the IPsec connection. If 380 all traffic is routed over the IPsec connection, the existing global 381 INTERNAL_IP4_DNS and INTERNAL_IP6_DNS can be used without creating 382 specific DNS exemptions. 384 6. Security Considerations 386 The use of Split DNS configurations assigned by an IKEv2 responder is 387 predicated on the trust established during IKE SA authentication. 388 However, if IKEv2 is being negotiated with an anonymous or unknown 389 endpoint (such as for Opportunistic Security [RFC7435]), the 390 initiator MUST ignore Split DNS configurations assigned by the 391 responder. 393 If a host connected to an authenticated IKE peer is connecting to 394 another IKE peer that attempts to claim the same domain via the 395 INTERNAL_DNS_DOMAIN attribute, the IKE connection should only process 396 the DNS information if the two connections are part of the same 397 logical entity. Otherwise, the client should refuse the DNS 398 information and potentially warn the enduser. 400 INTERNAL_DNSSEC_TA payloads MUST immediately follow an 401 INTERNAL_DNS_DOMAIN payload. As the INTERNAL_DNSSEC_TA format itself 402 does not contain the domain name, it relies on the preceding 403 INTERNAL_DNS_DOMAIN to provide the domain for which it specifies the 404 trust anchor. 406 If the initiator is using DNSSEC validation for a domain in its 407 public DNS view, and it requests and receives an INTERNAL_DNS_DOMAIN 408 attribute without an INTERNAL_DNSSEC_TA, it will need to reconfigure 409 its DNS resolver to allow for an insecure delegation. It SHOULD NOT 410 accept insecure delegations for domains that are DNSSEC signed in the 411 public DNS view, for which it has not explicitely requested such 412 deletation by specifying the domain specifically using a 413 INTERNAL_DNS_DOMAIN(domain) request. 415 A domain that is served via INTERNAL_DNS_DOMAIN should pay close 416 attention to their use of indirect reference RRtypes such as CNAME, 417 DNAME, MX or SRV records so that resolving works as intended when 418 all, some or none of the IPsec connections are established. 420 The content of INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA may be 421 passed to another (DNS) program for processing. The content MUST be 422 verified and sanitized before passing it to other software. For 423 example, domain names are limited to alphanumeric characters and the 424 minus ("-") and underscore ("_") symbol and if other other characters 425 are present, the entire payload could be ignored and not passed to 426 DNS software, or the malicious characters could be filtered out 427 before passing the payload to DNS software. 429 7. IANA Considerations 431 This document defines two new IKEv2 Configuration Payload Attribute 432 Types, which are allocated from the "IKEv2 Configuration Payload 433 Attribute Types" namespace. 435 Multi- 436 Value Attribute Type Valued Length Reference 437 ------ ------------------- ------ ---------- --------------- 438 25 INTERNAL_DNS_DOMAIN YES 0 or more [this document] 439 [TBD] INTERNAL_DNSSEC_TA YES 0 or more [this document] 441 Figure 1 443 8. References 445 8.1. Normative References 447 [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G., 448 and E. Lear, "Address Allocation for Private Internets", 449 BCP 5, RFC 1918, DOI 10.17487/RFC1918, February 1996, 450 . 452 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 453 Requirement Levels", BCP 14, RFC 2119, 454 DOI 10.17487/RFC2119, March 1997, . 457 [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. 458 Rose, "Resource Records for the DNS Security Extensions", 459 RFC 4034, DOI 10.17487/RFC4034, March 2005, 460 . 462 [RFC5890] Klensin, J., "Internationalized Domain Names for 463 Applications (IDNA): Definitions and Document Framework", 464 RFC 5890, DOI 10.17487/RFC5890, August 2010, 465 . 467 [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. 468 Kivinen, "Internet Key Exchange Protocol Version 2 469 (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October 470 2014, . 472 8.2. Informative References 474 [RFC2775] Carpenter, B., "Internet Transparency", RFC 2775, 475 DOI 10.17487/RFC2775, February 2000, . 478 [RFC6761] Cheshire, S. and M. Krochmal, "Special-Use Domain Names", 479 RFC 6761, DOI 10.17487/RFC6761, February 2013, 480 . 482 [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection 483 Most of the Time", RFC 7435, DOI 10.17487/RFC7435, 484 December 2014, . 486 Authors' Addresses 488 Tommy Pauly 489 Apple Inc. 490 1 Infinite Loop 491 Cupertino, California 95014 492 US 494 Email: tpauly@apple.com 496 Paul Wouters 497 Red Hat 499 Email: pwouters@redhat.com