| < draft-ietf-ipsecme-split-dns-14.txt | draft-ietf-ipsecme-split-dns-15.txt > | |||
|---|---|---|---|---|
| Network T. Pauly | Network T. Pauly | |||
| Internet-Draft Apple Inc. | Internet-Draft Apple Inc. | |||
| Intended status: Standards Track P. Wouters | Intended status: Standards Track P. Wouters | |||
| Expires: May 7, 2019 Red Hat | Expires: May 26, 2019 Red Hat | |||
| November 3, 2018 | November 22, 2018 | |||
| Split DNS Configuration for IKEv2 | Split DNS Configuration for IKEv2 | |||
| draft-ietf-ipsecme-split-dns-14 | draft-ietf-ipsecme-split-dns-15 | |||
| Abstract | Abstract | |||
| This document defines two Configuration Payload Attribute Types for | This document defines two Configuration Payload Attribute Types | |||
| the IKEv2 protocol that add support for private DNS domains. These | (INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA) for the Internet Key | |||
| domains are intended to be resolved using DNS servers reachable | Exchange Protocol Version 2 (IKEv2). These payloads add support for | |||
| through an IPsec connection, while leaving all other DNS resolution | private (internal-only) DNS domains. These domains are intended to | |||
| unchanged. This approach of resolving a subset of domains using non- | be resolved using non-public DNS servers that are only reachable | |||
| public DNS servers is referred to as "Split DNS". | through the IPsec connection. DNS resolution for other domains | |||
| remains unchanged. These Configuration Payloads only apply to split | ||||
| tunnel configurations. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on May 7, 2019. | This Internet-Draft will expire on May 26, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Protocol Exchange . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. Configuration Request . . . . . . . . . . . . . . . . . . 4 | 3. Protocol Exchange . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Configuration Reply . . . . . . . . . . . . . . . . . . . 4 | 3.1. Configuration Request . . . . . . . . . . . . . . . . . . 5 | |||
| 2.3. Mapping DNS Servers to Domains . . . . . . . . . . . . . 5 | 3.2. Configuration Reply . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.4. Example Exchanges . . . . . . . . . . . . . . . . . . . . 5 | 3.3. Mapping DNS Servers to Domains . . . . . . . . . . . . . 6 | |||
| 2.4.1. Simple Case . . . . . . . . . . . . . . . . . . . . . 5 | 3.4. Example Exchanges . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.4.2. Requesting Domains and DNSSEC trust anchors . . . . . 6 | 3.4.1. Simple Case . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3. Payload Formats . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.4.2. Requesting Domains and DNSSEC trust anchors . . . . . 7 | |||
| 3.1. INTERNAL_DNS_DOMAIN Configuration Attribute Type Request | 4. Payload Formats . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| and Reply . . . . . . . . . . . . . . . . . . . . . . . . 7 | 4.1. INTERNAL_DNS_DOMAIN Configuration Attribute Type Request | |||
| 3.2. INTERNAL_DNSSEC_TA Configuration Attribute . . . . . . . 7 | and Reply . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4. INTERNAL_DNS_DOMAIN Usage Guidelines . . . . . . . . . . . . 9 | 4.2. INTERNAL_DNSSEC_TA Configuration Attribute . . . . . . . 8 | |||
| 5. INTERNAL_DNSSEC_TA Usage Guidelines . . . . . . . . . . . . . 10 | 5. INTERNAL_DNS_DOMAIN Usage Guidelines . . . . . . . . . . . . 10 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 6. INTERNAL_DNSSEC_TA Usage Guidelines . . . . . . . . . . . . . 11 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 12 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 13 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 14 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | 9.2. Informative References . . . . . . . . . . . . . . . . . 15 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | ||||
| 1. Introduction | 1. Introduction | |||
| Split DNS is a common configuration for secure tunnels, such as | Split tunnel Virtual Private Network ("VPN") configurations only send | |||
| Virtual Private Networks in which host machines private to an | packets with a specific destination IP range, usually chosen from | |||
| organization can only be resolved using internal DNS resolvers | [RFC1918], via the VPN. All other traffic is not sent via the VPN. | |||
| [RFC2775]. In such configurations, it is often desirable to only | This allows an enterprise deployment to offer Remote Access VPN | |||
| resolve hosts within a set of private domains using the tunnel, while | services without needing to accept and forward all the non-enterprise | |||
| letting resolutions for public hosts be handled by a device's default | related network traffic generated by their remote users. Resources | |||
| DNS configuration. | within the enterprise can be accessed by the user via the VPN, while | |||
| all other traffic generated by the user is not send over the VPN. | ||||
| The Internet Key Exchange protocol version 2 [RFC7296] negotiates | These internal resources tend to only have internal-only DNS names | |||
| configuration parameters using Configuration Payload Attribute Types. | and require the use of special internal-only DNS servers to get | |||
| This document defines two Configuration Payload Attribute Types that | resolved. Split DNS [RFC2775] is a common configuration that is part | |||
| add support for trusted Split DNS domains. | of split tunnel VPN configurations to support configuring Remote | |||
| Access users to use these special internal-only domain names. | ||||
| The INTERNAL_DNS_DOMAIN attribute type is used to convey one or more | The IKEv2 protocol [RFC7296] negotiates configuration parameters | |||
| DNS domains that MUST be resolved only using the provided DNS | using Configuration Payload Attribute Types. This document defines | |||
| two Configuration Payload Attribute Types that add support for | ||||
| trusted Split DNS domains. | ||||
| The INTERNAL_DNS_DOMAIN attribute type is used to convey that the | ||||
| specified DNS domain MUST be resolved using the provided DNS | ||||
| nameserver IP addresses, causing these requests to use the IPsec | nameserver IP addresses, causing these requests to use the IPsec | |||
| connection. | connection. | |||
| The INTERNAL_DNSSEC_TA attribute type is used to convey DNSSEC trust | The INTERNAL_DNSSEC_TA attribute type is used to convey a DNSSEC | |||
| anchors for those domains. | trust anchor for such a domain. This is required if the external | |||
| view uses DNSSEC that would prove the internal view does not exist or | ||||
| would expect a different DNSSEC key on the different versions | ||||
| (internal and external) of the enterprise domain. | ||||
| When only a subset of traffic is routed into a private network using | If an INTERNAL_DNS_DOMAIN is sent by the responder, the responder | |||
| an IPsec SA, these Configuration Payload options can be used to | MUST also include one or more INTERNAL_IP4_DNS or INTERNAL_IP6_DNS | |||
| define which private domains are intended to be resolved through the | attributes that contain the IPv4 or IPv6 address of the internal DNS | |||
| IPsec connection without affecting the client's global DNS | server. | |||
| resolution. | ||||
| For the purposes of this document, DNS resolution servers accessible | For the purposes of this document, DNS resolution servers accessible | |||
| through an IPsec connection will be referred to as "internal DNS | through an IPsec connection will be referred to as "internal DNS | |||
| servers", and other DNS servers will be referred to as "external DNS | servers", and other DNS servers will be referred to as "external DNS | |||
| servers". | servers". | |||
| A client using these configuration payloads will be able to request | ||||
| and receive Split DNS configurations using the INTERNAL_DNS_DOMAIN | ||||
| and INTERNAL_DNSSEC_TA configuration attributes. The client device | ||||
| can use the internal DNS server(s) for any DNS queries within the | ||||
| assigned domains. DNS queries for other domains SHOULD be sent to | ||||
| the regular external DNS server. | ||||
| Other tunnel-establishment protocols already support the assignment | Other tunnel-establishment protocols already support the assignment | |||
| of Split DNS domains. For example, there are proprietary extensions | of Split DNS domains. For example, there are proprietary extensions | |||
| to IKEv1 that allow a server to assign Split DNS domains to a client. | to IKEv1 that allow a server to assign Split DNS domains to a client. | |||
| However, the IKEv2 standard does not include a method to configure | However, the IKEv2 standard does not include a method to configure | |||
| this option. This document defines a standard way to negotiate this | this option. This document defines a standard way to negotiate this | |||
| option for IKEv2. | option for IKEv2. | |||
| 1.1. Requirements Language | 1.1. Requirements Language | |||
| 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 | |||
| captials, as shown here. | captials, as shown here. | |||
| 2. Protocol Exchange | 2. Applicability | |||
| If the negotiated IPsec connection is not a split tunnel | ||||
| configuration, the INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA | ||||
| Configuration Payloads MUST be ignored. This prevents generic (non- | ||||
| enterprise) VPN services from overriding the public DNS hierarchy, | ||||
| which could lead to malicious overrides of DNS and DNSSEC. | ||||
| Such configurations SHOULD instead use only the INTERNAL_IP4_DNS and | ||||
| INTERNAL_IP6_DNS Configuration Payloads to ensure all of the user's | ||||
| DNS traffic is send through the IPsec connection and does not leak | ||||
| unencrypted onto the local network, as the local network is often | ||||
| explicitely exempted from IPsec encryption. | ||||
| For split tunnel configurations, an enterprise can require one or | ||||
| more DNS domains to be resolved via internal DNS servers. This can | ||||
| be a special domain, such as "corp.example.com" for an enterprise | ||||
| that is publicly known to use "example.com". In this case, the | ||||
| remote user needs to be informed what the internal-only domain names | ||||
| are and what the IP addresses of the internal DNS servers are. An | ||||
| enterprise can also run a different version of its public domain on | ||||
| its internal network. In that case, the VPN client is instructed to | ||||
| send DNS queries for the enterprise public domain (eg "example.com") | ||||
| to the internal DNS servers. A configuration for this deployment | ||||
| scenario is referred to as a Split DNS configuration. | ||||
| Split DNS configurations are often preferable to sending all DNS | ||||
| queries to the enterprise. This allows the remote user to only send | ||||
| DNS queries for the enterprise to the internal DNS servers. The | ||||
| enterprise remains unaware of all non-enterprise (DNS) activitiy of | ||||
| the user. It also allows the enterprise DNS servers to only be | ||||
| configured for the enterprise DNS domains which removes the legal and | ||||
| technical responsibility of the enterprise to resolve every DNS | ||||
| domain potentially asked for by the remote user. | ||||
| A client using these configuration payloads will be able to request | ||||
| and receive Split DNS configurations using the INTERNAL_DNS_DOMAIN | ||||
| and INTERNAL_DNSSEC_TA configuration attributes. These attributes | ||||
| MUST be accompanied by one or more INTERNAL_IP4_DNS or | ||||
| INTERNAL_IP6_DNS configuration attributes. The client device can | ||||
| then use the internal DNS server(s) for any DNS queries within the | ||||
| assigned domains. DNS queries for other domains MUST be sent to the | ||||
| regular DNS service of the client. | ||||
| 3. Protocol Exchange | ||||
| In order to negotiate which domains are considered internal to an | In order to negotiate which domains are considered internal to an | |||
| IKEv2 tunnel, initiators indicate support for Split DNS in their | IKEv2 tunnel, initiators indicate support for Split DNS in their | |||
| CFG_REQUEST payloads, and responders assign internal domains (and | CFG_REQUEST payloads, and responders assign internal domains (and | |||
| DNSSEC trust anchors) in their CFG_REPLY payloads. When Split DNS | DNSSEC trust anchors) in their CFG_REPLY payloads. When Split DNS | |||
| has been negotiated, the existing DNS server configuration attributes | has been negotiated, the existing DNS server configuration attributes | |||
| will be interpreted as internal DNS servers that can resolve | will be interpreted as internal DNS servers that can resolve | |||
| hostnames within the internal domains. | hostnames within the internal domains. | |||
| 2.1. Configuration Request | 3.1. Configuration Request | |||
| To indicate support for Split DNS, an initiator includes one more | To indicate support for Split DNS, an initiator includes one more | |||
| INTERNAL_DNS_DOMAIN attributes as defined in Section 3 as part of the | INTERNAL_DNS_DOMAIN attributes as defined in Section 4 as part of the | |||
| CFG_REQUEST payload. If an INTERNAL_DNS_DOMAIN attribute is included | CFG_REQUEST payload. If an INTERNAL_DNS_DOMAIN attribute is included | |||
| in the CFG_REQUEST, the initiator MUST also include one or more | in the CFG_REQUEST, the initiator MUST also include one or more | |||
| INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes in the CFG_REQUEST. | INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes in the CFG_REQUEST. | |||
| The INTERNAL_DNS_DOMAIN attribute sent by the initiator is usually | The INTERNAL_DNS_DOMAIN attribute sent by the initiator is usually | |||
| empty but MAY contain a suggested domain name. | empty but MAY contain a suggested domain name. | |||
| The absence of INTERNAL_DNS_DOMAIN attributes in the CFG_REQUEST | The absence of INTERNAL_DNS_DOMAIN attributes in the CFG_REQUEST | |||
| payload indicates that the initiator does not support or is unwilling | payload indicates that the initiator does not support or is unwilling | |||
| to accept Split DNS configuration. | to accept Split DNS configuration. | |||
| To indicate support for DNSSEC, an initiator includes one or more | To indicate support for DNSSEC, an initiator includes one or more | |||
| INTERNAL_DNSSEC_TA attributes as defined in Section 3 as part of the | INTERNAL_DNSSEC_TA attributes as defined in Section 4 as part of the | |||
| CFG_REQUEST payload. If an INTERNAL_DNSSEC_TA attribute is included | CFG_REQUEST payload. If an INTERNAL_DNSSEC_TA attribute is included | |||
| in the CFG_REQUEST, the initiator MUST also include one or more | in the CFG_REQUEST, the initiator MUST also include one or more | |||
| INTERNAL_DNS_DOMAIN attributes in the CFG_REQUEST. If the initiator | INTERNAL_DNS_DOMAIN attributes in the CFG_REQUEST. If the initiator | |||
| includes an INTERNAL_DNSSEC_TA attribute, but does not inclue an | includes an INTERNAL_DNSSEC_TA attribute, but does not inclue an | |||
| INTERNAL_DNS_DOMAIN attribute, the responder MAY still respond with | INTERNAL_DNS_DOMAIN attribute, the responder MAY still respond with | |||
| both INTERNAL_DNSSEC_TA and INTERNAL_DNS_DOMAIN attributes. | both INTERNAL_DNSSEC_TA and INTERNAL_DNS_DOMAIN attributes. | |||
| An initiator MAY convey its current DNSSEC trust anchors for the | An initiator MAY convey its current DNSSEC trust anchors for the | |||
| domain specified in the INTERNAL_DNS_DOMAIN attribute. If it does | domain specified in the INTERNAL_DNS_DOMAIN attribute. If it does | |||
| not wish to convey this information, it MUST use a length of 0. | not wish to convey this information, it MUST use a length of 0. | |||
| The absence of INTERNAL_DNSSEC_TA attributes in the CFG_REQUEST | The absence of INTERNAL_DNSSEC_TA attributes in the CFG_REQUEST | |||
| payload indicates that the initiator does not support or is unwilling | payload indicates that the initiator does not support or is unwilling | |||
| to accept DNSSEC trust anchor configuration. | to accept DNSSEC trust anchor configuration. | |||
| 2.2. Configuration Reply | 3.2. Configuration Reply | |||
| Responders MAY send one or more INTERNAL_DNS_DOMAIN attributes in | Responders MAY send one or more INTERNAL_DNS_DOMAIN attributes in | |||
| their CFG_REPLY payload. If an INTERNAL_DNS_DOMAIN attribute is | their CFG_REPLY payload. If an INTERNAL_DNS_DOMAIN attribute is | |||
| included in the CFG_REPLY, the responder MUST also include one or | included in the CFG_REPLY, the responder MUST also include one or | |||
| both of the INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes in the | both of the INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes in the | |||
| CFG_REPLY. These DNS server configurations are necessary to define | CFG_REPLY. These DNS server configurations are necessary to define | |||
| which servers can receive queries for hostnames in internal domains. | which servers can receive queries for hostnames in internal domains. | |||
| If the CFG_REQUEST included an INTERNAL_DNS_DOMAIN attribute, but the | If the CFG_REQUEST included an INTERNAL_DNS_DOMAIN attribute, but the | |||
| CFG_REPLY does not include an INTERNAL_DNS_DOMAIN attribute, the | CFG_REPLY does not include an INTERNAL_DNS_DOMAIN attribute, the | |||
| initiator MUST behave as if Split DNS configurations are not | initiator MUST behave as if Split DNS configurations are not | |||
| skipping to change at page 5, line 20 ¶ | skipping to change at page 6, line 20 ¶ | |||
| suggestion by the responder. | suggestion by the responder. | |||
| For each DNS domain specified in an INTERNAL_DNS_DOMAIN attribute, | For each DNS domain specified in an INTERNAL_DNS_DOMAIN attribute, | |||
| one or more INTERNAL_DNSSEC_TA attributes MAY be included by the | one or more INTERNAL_DNSSEC_TA attributes MAY be included by the | |||
| responder. This attribute lists the corresponding internal DNSSEC | responder. This attribute lists the corresponding internal DNSSEC | |||
| trust anchor in the DNS presentation format of a DS record as | trust anchor in the DNS presentation format of a DS record as | |||
| specified in [RFC4034]. The INTERNAL_DNSSEC_TA attribute MUST | specified in [RFC4034]. The INTERNAL_DNSSEC_TA attribute MUST | |||
| immediately follow the INTERNAL_DNS_DOMAIN attribute that it applies | immediately follow the INTERNAL_DNS_DOMAIN attribute that it applies | |||
| to. | to. | |||
| 2.3. Mapping DNS Servers to Domains | 3.3. Mapping DNS Servers to Domains | |||
| All DNS servers provided in the CFG_REPLY MUST support resolving | All DNS servers provided in the CFG_REPLY MUST support resolving | |||
| hostnames within all INTERNAL_DNS_DOMAIN domains. In other words, | hostnames within all INTERNAL_DNS_DOMAIN domains. In other words, | |||
| the INTERNAL_DNS_DOMAIN attributes in a CFG_REPLY payload form a | the INTERNAL_DNS_DOMAIN attributes in a CFG_REPLY payload form a | |||
| single list of Split DNS domains that applies to the entire list of | single list of Split DNS domains that applies to the entire list of | |||
| INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes. | INTERNAL_IP4_DNS and INTERNAL_IP6_DNS attributes. | |||
| 2.4. Example Exchanges | 3.4. Example Exchanges | |||
| 2.4.1. Simple Case | 3.4.1. Simple Case | |||
| In this example exchange, the initiator requests INTERNAL_IP4_DNS and | In this example exchange, the initiator requests INTERNAL_IP4_DNS and | |||
| INTERNAL_DNS_DOMAIN attributes in the CFG_REQUEST, but does not | INTERNAL_DNS_DOMAIN attributes in the CFG_REQUEST, but does not | |||
| specify any value for either. This indicates that it supports Split | specify any value for either. This indicates that it supports Split | |||
| DNS, but has no preference for which DNS requests will be routed | DNS, but has no preference for which DNS requests will be routed | |||
| through the tunnel. | through the tunnel. | |||
| The responder replies with two DNS server addresses, and two internal | The responder replies with two DNS server addresses, and two internal | |||
| domains, "example.com" and "city.other.com". | domains, "example.com" and "city.other.test". | |||
| Any subsequent DNS queries from the initiator for domains such as | Any subsequent DNS queries from the initiator for domains such as | |||
| "www.example.com" SHOULD use 198.51.100.2 or 198.51.100.4 to resolve. | "www.example.com" SHOULD use 198.51.100.2 or 198.51.100.4 to resolve. | |||
| CP(CFG_REQUEST) = | CP(CFG_REQUEST) = | |||
| INTERNAL_IP4_ADDRESS() | INTERNAL_IP4_ADDRESS() | |||
| INTERNAL_IP4_DNS() | INTERNAL_IP4_DNS() | |||
| INTERNAL_DNS_DOMAIN() | INTERNAL_DNS_DOMAIN() | |||
| CP(CFG_REPLY) = | CP(CFG_REPLY) = | |||
| INTERNAL_IP4_ADDRESS(198.51.100.234) | INTERNAL_IP4_ADDRESS(198.51.100.234) | |||
| INTERNAL_IP4_DNS(198.51.100.2) | INTERNAL_IP4_DNS(198.51.100.2) | |||
| INTERNAL_IP4_DNS(198.51.100.4) | INTERNAL_IP4_DNS(198.51.100.4) | |||
| INTERNAL_DNS_DOMAIN(example.com) | INTERNAL_DNS_DOMAIN(example.com) | |||
| INTERNAL_DNS_DOMAIN(city.other.com) | INTERNAL_DNS_DOMAIN(city.other.test) | |||
| 2.4.2. Requesting Domains and DNSSEC trust anchors | 3.4.2. Requesting Domains and DNSSEC trust anchors | |||
| In this example exchange, the initiator requests INTERNAL_IP4_DNS, | In this example exchange, the initiator requests INTERNAL_IP4_DNS, | |||
| INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA attributes in the | INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA attributes in the | |||
| CFG_REQUEST. | CFG_REQUEST. | |||
| Any subsequent DNS queries from the initiator for domains such as | Any subsequent DNS queries from the initiator for domains such as | |||
| "www.example.com" or "city.other.com" would be DNSSEC validated using | "www.example.com" or "city.other.test" would be DNSSEC validated | |||
| the DNSSEC trust anchor received in the CFG_REPLY. | using the DNSSEC trust anchor received in the CFG_REPLY. | |||
| In this example, the initiator has no existing DNSSEC trust anchors | In this example, the initiator has no existing DNSSEC trust anchors | |||
| would the requested domain. the "example.com" dommain has DNSSEC | would the requested domain. the "example.com" dommain has DNSSEC | |||
| trust anchors that are returned, while the "other.com" domain has no | trust anchors that are returned, while the "other.test" domain has no | |||
| DNSSEC trust anchors. | DNSSEC trust anchors. | |||
| CP(CFG_REQUEST) = | CP(CFG_REQUEST) = | |||
| INTERNAL_IP4_ADDRESS() | INTERNAL_IP4_ADDRESS() | |||
| INTERNAL_IP4_DNS() | INTERNAL_IP4_DNS() | |||
| INTERNAL_DNS_DOMAIN() | INTERNAL_DNS_DOMAIN() | |||
| INTERNAL_DNSSEC_TA() | INTERNAL_DNSSEC_TA() | |||
| CP(CFG_REPLY) = | CP(CFG_REPLY) = | |||
| INTERNAL_IP4_ADDRESS(198.51.100.234) | INTERNAL_IP4_ADDRESS(198.51.100.234) | |||
| INTERNAL_IP4_DNS(198.51.100.2) | INTERNAL_IP4_DNS(198.51.100.2) | |||
| INTERNAL_IP4_DNS(198.51.100.4) | INTERNAL_IP4_DNS(198.51.100.4) | |||
| INTERNAL_DNS_DOMAIN(example.com) | INTERNAL_DNS_DOMAIN(example.com) | |||
| INTERNAL_DNSSEC_TA(43547,8,1,B6225AB2CC613E0DCA7962BDC2342EA4...) | INTERNAL_DNSSEC_TA(43547,8,1,B6225AB2CC613E0DCA7962BDC2342EA4...) | |||
| INTERNAL_DNSSEC_TA(31406,8,2,F78CF3344F72137235098ECBBD08947C...) | INTERNAL_DNSSEC_TA(31406,8,2,F78CF3344F72137235098ECBBD08947C...) | |||
| INTERNAL_DNS_DOMAIN(city.other.com) | INTERNAL_DNS_DOMAIN(city.other.test) | |||
| 3. Payload Formats | 4. Payload Formats | |||
| All multi-octet fields representing integers are laid out in big | All multi-octet fields representing integers are laid out in big | |||
| endian order (also known as "most significant byte first", or | endian order (also known as "most significant byte first", or | |||
| "network byte order"). | "network byte order"). | |||
| 3.1. INTERNAL_DNS_DOMAIN Configuration Attribute Type Request and Reply | 4.1. INTERNAL_DNS_DOMAIN Configuration Attribute Type Request and Reply | |||
| 1 2 3 | 1 2 3 | |||
| 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 | 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 | |||
| +-+-----------------------------+-------------------------------+ | +-+-----------------------------+-------------------------------+ | |||
| |R| Attribute Type | Length | | |R| Attribute Type | Length | | |||
| +-+-----------------------------+-------------------------------+ | +-+-----------------------------+-------------------------------+ | |||
| | | | | | | |||
| ~ Domain Name in DNS presentation format ~ | ~ Domain Name in DNS presentation format ~ | |||
| | | | | | | |||
| +---------------------------------------------------------------+ | +---------------------------------------------------------------+ | |||
| skipping to change at page 7, line 29 ¶ | skipping to change at page 8, line 29 ¶ | |||
| o Attribute Type (15 bits) set to value 25 for INTERNAL_DNS_DOMAIN. | o Attribute Type (15 bits) set to value 25 for INTERNAL_DNS_DOMAIN. | |||
| o Length (2 octets) - Length of domain name. | o Length (2 octets) - Length of domain name. | |||
| o Domain Name (0 or more octets) - A Fully Qualified Domain Name | o Domain Name (0 or more octets) - A Fully Qualified Domain Name | |||
| used for Split DNS rules, such as "example.com", in DNS | used for Split DNS rules, such as "example.com", in DNS | |||
| presentation format and optionally using IDNA [RFC5890] for | presentation format and optionally using IDNA [RFC5890] for | |||
| Internationalized Domain Names. Implementors need to be careful | Internationalized Domain Names. Implementors need to be careful | |||
| that this value is not null-terminated. | that this value is not null-terminated. | |||
| 3.2. INTERNAL_DNSSEC_TA Configuration Attribute | 4.2. INTERNAL_DNSSEC_TA Configuration Attribute | |||
| An INTERNAL_DNSSEC_TA Configuration Attribute can either be empty, or | An INTERNAL_DNSSEC_TA Configuration Attribute can either be empty, or | |||
| it can contain one Trust Anchor by containing a non-zero Length with | it can contain one Trust Anchor by containing a non-zero Length with | |||
| a DNSKEY Key Tag, DNSKEY Algorithm, Digest Type and Digest Data | a DNSKEY Key Tag, DNSKEY Algorithm, Digest Type and Digest Data | |||
| fields. | fields. | |||
| An empty INTERNAL_DNSSEC_TA CFG attribute: | An empty INTERNAL_DNSSEC_TA CFG attribute: | |||
| 1 2 3 | 1 2 3 | |||
| 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 | 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 | |||
| skipping to change at page 9, line 5 ¶ | skipping to change at page 10, line 5 ¶ | |||
| Each INTERNAL_DNSSEC_TA attribute in the CFG_REPLY payload MUST | Each INTERNAL_DNSSEC_TA attribute in the CFG_REPLY payload MUST | |||
| immediately follow a corresponding INTERNAL_DNS_DOMAIN attribute. As | immediately follow a corresponding INTERNAL_DNS_DOMAIN attribute. As | |||
| the INTERNAL_DNSSEC_TA format itself does not contain the domain | the INTERNAL_DNSSEC_TA format itself does not contain the domain | |||
| name, it relies on the preceding INTERNAL_DNS_DOMAIN to provide the | name, it relies on the preceding INTERNAL_DNS_DOMAIN to provide the | |||
| domain for which it specifies the trust anchor. Any | domain for which it specifies the trust anchor. Any | |||
| INTERNAL_DNSSEC_TA attribute that is not immediately preceded by an | INTERNAL_DNSSEC_TA attribute that is not immediately preceded by an | |||
| INTERNAL_DNS_DOMAIN or another INTERNAL_DNSSEC_TA attribute applying | INTERNAL_DNS_DOMAIN or another INTERNAL_DNSSEC_TA attribute applying | |||
| to the same domain name MUST be ignored and treated as a protocol | to the same domain name MUST be ignored and treated as a protocol | |||
| error. | error. | |||
| 4. INTERNAL_DNS_DOMAIN Usage Guidelines | 5. INTERNAL_DNS_DOMAIN Usage Guidelines | |||
| If a CFG_REPLY payload contains no INTERNAL_DNS_DOMAIN attributes, | If a CFG_REPLY payload contains no INTERNAL_DNS_DOMAIN attributes, | |||
| the client MAY use the provided INTERNAL_IP4_DNS or INTERNAL_IP6_DNS | the client MAY use the provided INTERNAL_IP4_DNS or INTERNAL_IP6_DNS | |||
| servers as the default DNS server(s) for all queries. | servers as the default DNS server(s) for all queries. | |||
| If a client is configured by local policy to only accept a limited | If a client is configured by local policy to only accept a limited | |||
| number of INTERNAL_DNS_DOMAIN values, the client MUST ignore any | number of INTERNAL_DNS_DOMAIN values, the client MUST ignore any | |||
| other INTERNAL_DNS_DOMAIN values. | other INTERNAL_DNS_DOMAIN values. | |||
| For each INTERNAL_DNS_DOMAIN entry in a CFG_REPLY payload that is not | For each INTERNAL_DNS_DOMAIN entry in a CFG_REPLY payload that is not | |||
| prohibited by local policy, the client MUST use the provided | prohibited by local policy, the client MUST use the provided | |||
| INTERNAL_IP4_DNS or INTERNAL_IP6_DNS DNS servers as the only | INTERNAL_IP4_DNS or INTERNAL_IP6_DNS DNS servers as the only | |||
| resolvers for the listed domains and its sub-domains and it MUST NOT | resolvers for the listed domains and its sub-domains and it MUST NOT | |||
| attempt to resolve the provided DNS domains using its external DNS | attempt to resolve the provided DNS domains using its external DNS | |||
| servers. Other domain names SHOULD be resolved using some other | servers. Other domain names SHOULD be resolved using some other | |||
| external DNS resolver(s), configured independently from IKE. Queries | external DNS resolver(s), configured independently from IKE. Queries | |||
| for these other domains MAY be sent to the internal DNS resolver(s) | for these other domains MAY be sent to the internal DNS resolver(s) | |||
| listed in that CFG_REPLY message, but have no guarantee of being | listed in that CFG_REPLY message, but have no guarantee of being | |||
| answered. For example, if the INTERNAL_DNS_DOMAIN attribute | answered. For example, if the INTERNAL_DNS_DOMAIN attribute | |||
| specifies "example.com", then "example.com", "www.example.com" and | specifies "example.test", then "example.test", "www.example.test" and | |||
| "mail.eng.example.com" MUST be resolved using the internal DNS | "mail.eng.example.test" MUST be resolved using the internal DNS | |||
| resolver(s), but "anotherexample.com" and "ample.com" SHOULD NOT be | resolver(s), but "otherexample.test" and "ple.test" MUST NOT be | |||
| resolved using the internal resolver and SHOULD use the system's | resolved using the internal resolver and MUST use the system's | |||
| external DNS resolver(s). | external DNS resolver(s). | |||
| The initiator SHOULD allow the DNS domains listed in the | The initiator SHOULD allow the DNS domains listed in the | |||
| INTERNAL_DNS_DOMAIN attributes to resolve to special IP address | INTERNAL_DNS_DOMAIN attributes to resolve to special IP address | |||
| ranges, such as those of [RFC1918], even if the initiator host is | ranges, such as those of [RFC1918], even if the initiator host is | |||
| otherwise configured to block DNS answer containing these special IP | otherwise configured to block DNS answer containing these special IP | |||
| addresses. | address ranges. | |||
| When an IKE SA is terminated, the DNS forwarding MUST be | When an IKE SA is terminated, the DNS forwarding MUST be | |||
| unconfigured. This includes deleting the DNS forwarding rules; | unconfigured. This includes deleting the DNS forwarding rules; | |||
| flushing all cached data for DNS domains provided by the | flushing all cached data for DNS domains provided by the | |||
| INTERNAL_DNS_DOMAIN attribute, including negative cache entries; | INTERNAL_DNS_DOMAIN attribute, including negative cache entries; | |||
| removing any obtained DNSSEC trust anchors from the list of trust | removing any obtained DNSSEC trust anchors from the list of trust | |||
| anchors; and clearing the outstanding DNS request queue. | anchors; and clearing the outstanding DNS request queue. | |||
| INTERNAL_DNS_DOMAIN attributes SHOULD only be used on split tunnel | INTERNAL_DNS_DOMAIN attributes SHOULD only be used on split tunnel | |||
| configurations where only a subset of traffic is routed into a | configurations where only a subset of traffic is routed into a | |||
| private remote network using the IPsec connection. If all traffic is | private remote network using the IPsec connection. If all traffic is | |||
| routed over the IPsec connection, the existing global | routed over the IPsec connection, the existing global | |||
| INTERNAL_IP4_DNS and INTERNAL_IP6_DNS can be used without creating | INTERNAL_IP4_DNS and INTERNAL_IP6_DNS can be used without creating | |||
| specific DNS exemptions. | specific DNS exemptions. | |||
| 5. INTERNAL_DNSSEC_TA Usage Guidelines | 6. INTERNAL_DNSSEC_TA Usage Guidelines | |||
| DNS records can be used to publish specific records containing trust | DNS records can be used to publish specific records containing trust | |||
| anchors for applications. The most common record type is the TLSA | anchors for applications. The most common record type is the TLSA | |||
| record specified in [RFC6698]. This DNS record type publishes which | record specified in [RFC6698]. This DNS record type publishes which | |||
| CA certificate or EE certificate to expect for a certain host name. | CA certificate or EE certificate to expect for a certain host name. | |||
| These records are protected by DNSSEC and thus can be trusted by the | These records are protected by DNSSEC and thus can be trusted by the | |||
| application. Whether to trust TLSA records instead of the | application. Whether to trust TLSA records instead of the | |||
| traditional WebPKI depends on the local policy of the client. By | traditional WebPKI depends on the local policy of the client. By | |||
| accepting an INTERNAL_DNSSEC_TA trust anchor via IKE from the remote | accepting an INTERNAL_DNSSEC_TA trust anchor via IKE from the remote | |||
| IKE server, the IPsec client might be allowing the remote IKE server | IKE server, the IPsec client might be allowing the remote IKE server | |||
| to override the trusted certificates for TLS. Similar override | to override the trusted certificates for TLS. Similar override | |||
| concerns apply to other public key or fingerprint based DNS records, | concerns apply to other public key or fingerprint based DNS records, | |||
| such as OPENPGPKEY, SMIMEA or IPSECKEY records. | such as OPENPGPKEY, SMIMEA or IPSECKEY records. | |||
| Thus, installing an INTERNAL_DNSSEC_TA trust anchor can be seen as | Thus, installing an INTERNAL_DNSSEC_TA trust anchor can be seen as | |||
| the equivalent of installing an Enterprise Certificate Agency (CA) | the equivalent of installing an Enterprise Certificate Authority (CA) | |||
| certificate. It allows the remote IKE/IPsec server to modify DNS | certificate. It allows the remote IKE/IPsec server to modify DNS | |||
| answers including its DNSSEC cryptographic signatures by overriding | answers including its DNSSEC cryptographic signatures by overriding | |||
| existing DNS information with trust anchor conveyed via IKE and | existing DNS information with trust anchor conveyed via IKE and | |||
| (temporarilly) installed on the IKE client. Of specific concern is | (temporarilly) installed on the IKE client. Of specific concern is | |||
| the overriding of [RFC6698] based TLSA records, which represent a | the overriding of [RFC6698] based TLSA records, which represent a | |||
| confirmation or override of an existing WebPKI TLS certificate. | confirmation or override of an existing WebPKI TLS certificate. | |||
| Other DNS record types that convey cryptographic materials (public | Other DNS record types that convey cryptographic materials (public | |||
| keys or fingerprints) are OPENPGPKEY, SMIMEA, SSHP and IPSECKEY | keys or fingerprints) are OPENPGPKEY, SMIMEA, SSHP and IPSECKEY | |||
| records. | records. | |||
| IKE clients willing to accept INTERNAL_DNSSEC_TA attributes MUST use | IKE clients willing to accept INTERNAL_DNSSEC_TA attributes MUST use | |||
| a whitelist of one or more domains that can be updated out of band. | a whitelist of one or more domains that can be updated out of band. | |||
| IKE clients with an empty whitelist MUST NOT use any | IKE clients with an empty whitelist MUST NOT use any | |||
| INTERNAL_DNSSEC_TA attributes received over IKE. Such clients MAY | INTERNAL_DNSSEC_TA attributes received over IKE. Such clients MAY | |||
| interpret receiving an INTERNAL_DNSSEC_TA attribute for a non- | interpret receiving an INTERNAL_DNSSEC_TA attribute for a non- | |||
| whitelisted domain as an indication that their local configuration | whitelisted domain as an indication that their local configuration | |||
| may need to be updated out of band. | may need to be updated out of band. | |||
| IKE clients should take care to only whitelist domains that apply to | IKE clients should take care to only whitelist domains that apply to | |||
| internal or managed domains, rather than to generic Internet traffic. | internal or managed domains, rather than to generic Internet traffic. | |||
| The DNS root zone (".") MUST NOT be whitelisted. Other generic or | The DNS root zone (".") MUST be ignored if it appears in a whitelist. | |||
| public domains, such as top-level domains, similarly SHOULD NOT be | Other generic or public domains, such as top-level domains (TLDs), | |||
| whitelisted. | similarly MUST be ignored if these appear in a whitelist unless the | |||
| entity actually is the operator of the TLD. To determine this, an | ||||
| implementation MAY interactively ask the user when a VPN profile is | ||||
| installed or activated to confirm this. Alternatively, it MAY | ||||
| provide a special override keyword in its provisioning configuration | ||||
| to ensure non-interactive agreement can be achieved only by the party | ||||
| provisioning the VPN client, who presumbly is a trusted entity by the | ||||
| end-user. Similarly, an entity might be using a special domain name, | ||||
| such as ".internal", for its internal-only view and might wish to | ||||
| force its provisioning system to accept such a domain in a Split DNS | ||||
| configuration. | ||||
| Any updates to this whitelist of domain names MUST happen via | Any updates to this whitelist of domain names MUST happen via | |||
| explicit human interaction to prevent invisible installation of trust | explicit human interaction or by a trusted automated provision system | |||
| anchors. | to prevent malicious invisible installation of trust anchors in case | |||
| of aIKE server compromise. | ||||
| IKE clients SHOULD accept any INTERNAL_DNSSEC_TA updates for | IKE clients SHOULD accept any INTERNAL_DNSSEC_TA updates for | |||
| subdomain names of the whitelisted domain names. For example, if | subdomain names of the whitelisted domain names. For example, if | |||
| "example.net" is whitelisted, then INTERNAL_DNSSEC_TA received for | "example.net" is whitelisted, then INTERNAL_DNSSEC_TA received for | |||
| "antartica.example.net" SHOULD be accepted. | "antartica.example.net" SHOULD be accepted. | |||
| IKE clients MAY interpret an INTERNAL_DNSSEC_TA for domain that was | IKE clients MAY interpret an INTERNAL_DNSSEC_TA for domain that was | |||
| not preconfigured as an indication that it needs to update its IKE | not preconfigured as an indication that it needs to update its IKE | |||
| configuration (out of band). The client MUST NOT use such a | configuration (out of band). The client MUST NOT use such a | |||
| INTERNAL_DNSSEC_TA to reconfigure its local DNS settings. | INTERNAL_DNSSEC_TA to reconfigure its local DNS settings. | |||
| skipping to change at page 11, line 24 ¶ | skipping to change at page 12, line 34 ¶ | |||
| Configuration Payload. | Configuration Payload. | |||
| In most deployment scenario's, the IKE client has an expectation that | In most deployment scenario's, the IKE client has an expectation that | |||
| it is connecting, using a split-network setup, to a specific | it is connecting, using a split-network setup, to a specific | |||
| organisation or enterprise. A recommended policy would be to only | organisation or enterprise. A recommended policy would be to only | |||
| accept INTERNAL_DNSSEC_TA directives from that organization's DNS | accept INTERNAL_DNSSEC_TA directives from that organization's DNS | |||
| names. However, this might not be possible in all deployment | names. However, this might not be possible in all deployment | |||
| scenarios, such as one where the IKE server is handing out a number | scenarios, such as one where the IKE server is handing out a number | |||
| of domains that are not within one parent domain. | of domains that are not within one parent domain. | |||
| 6. Security Considerations | 7. Security Considerations | |||
| As stated in Section 2, if the negotiated IPsec connection is not a | ||||
| split tunnel configuration, the INTERNAL_DNS_DOMAIN and | ||||
| INTERNAL_DNSSEC_TA Configuration Payloads MUST be ignored. | ||||
| Otherwise, generic VPN service providers could maliciously override | ||||
| DNSSEC based trust anchors of public DNS domains. | ||||
| An initiator MUST only accept INTERNAL_DNSSEC_TA's for which it has a | ||||
| whitelist. It MAY treat a received INTERNAL_DNSSEC_TA for an non- | ||||
| whitelisted domain as a signal to update the whitelist via a non-IKE | ||||
| provisioning mechanism. See Section 6 for additional security | ||||
| considerations for DNSSEC trust anchors. | ||||
| The use of Split DNS configurations assigned by an IKEv2 responder is | The use of Split DNS configurations assigned by an IKEv2 responder is | |||
| predicated on the trust established during IKE SA authentication. | predicated on the trust established during IKE SA authentication. | |||
| However, if IKEv2 is being negotiated with an anonymous or unknown | However, if IKEv2 is being negotiated with an anonymous or unknown | |||
| endpoint (such as for Opportunistic Security [RFC7435]), the | endpoint (such as for Opportunistic Security [RFC7435]), the | |||
| initiator MUST ignore Split DNS configurations assigned by the | initiator MUST ignore Split DNS configurations assigned by the | |||
| responder. | responder. | |||
| If a host connected to an authenticated IKE peer is connecting to | If a host connected to an authenticated IKE peer is connecting to | |||
| another IKE peer that attempts to claim the same domain via the | another IKE peer that attempts to claim the same domain via the | |||
| INTERNAL_DNS_DOMAIN attribute, the IKE connection SHOULD only process | INTERNAL_DNS_DOMAIN attribute, the IKE connection SHOULD only process | |||
| the DNS information if the two connections are part of the same | the DNS information if the two connections are part of the same | |||
| logical entity. Otherwise, the client SHOULD refuse the DNS | logical entity. Otherwise, the client SHOULD refuse the DNS | |||
| information and potentially warn the end-user. | information and potentially warn the end-user. For example, if a VPN | |||
| profile for "Example Corporation" is installed that provides two | ||||
| IPsec connections, one covering 192.168.100.0/24 and one covering | ||||
| 10.13.14.0/24 it could be that both connections negotiate the same | ||||
| INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA values. Since these are | ||||
| part of the same remote organisation (or provisioning profile), the | ||||
| Configuration Payloads can be used. However, if a user installs two | ||||
| VPN profiles from two different unrelated independent entities, both | ||||
| of these could be configured to use the same domain, for example | ||||
| ".internal". These two connections MUST NOT be allowed to be active | ||||
| at the same time. | ||||
| If the initiator is using DNSSEC validation for a domain in its | If the initiator is using DNSSEC validation for a domain in its | |||
| public DNS view, and it requests and receives an INTERNAL_DNS_DOMAIN | public DNS view, and it requests and receives an INTERNAL_DNS_DOMAIN | |||
| attribute without an INTERNAL_DNSSEC_TA, it will need to reconfigure | attribute without an INTERNAL_DNSSEC_TA, it will need to reconfigure | |||
| its DNS resolver to allow for an insecure delegation. It SHOULD NOT | its DNS resolver to allow for an insecure delegation. It SHOULD NOT | |||
| accept insecure delegations for domains that are DNSSEC signed in the | accept insecure delegations for domains that are DNSSEC signed in the | |||
| public DNS view, for which it has not explicitely requested such | public DNS view, for which it has not explicitly requested such | |||
| deletation by specifying the domain specifically using a | deletation by specifying the domain specifically using a | |||
| INTERNAL_DNS_DOMAIN(domain) request. | INTERNAL_DNS_DOMAIN(domain) request. | |||
| Deployments that configure INTERNAL_DNS_DOMAIN domains should pay | Deployments that configure INTERNAL_DNS_DOMAIN domains should pay | |||
| close attention to their use of indirect reference RRtypes such as | close attention to their use of indirect reference RRtypes in their | |||
| CNAME, DNAME, MX or SRV records so that resolving works as intended | internal-only domain names. Examples of such RRtypes are NS, CNAME, | |||
| when all, some, or none of the IPsec connections are established. | DNAME, MX or SRV records. For example, if the MX record for | |||
| "internal.example.com" points to "mx.internal.example.net", then both | ||||
| "internal.example.com" and "internal.example.net" should be sent | ||||
| using an INTERNAL_DNS_DOMAIN Configuration Payload. | ||||
| IKE clients MAY want to require whitelisted domains for Top Level | ||||
| Domains (TLDs) and Second Level Domains (SLDs) to further prevent | ||||
| malicious DNS redirections for well known domains. This prevents | ||||
| users from unknowingly giving DNS queries to third parties. This is | ||||
| even more important if those well known domains are not deploying | ||||
| DNSSEC, as the VPN service provider could then even modify the DNS | ||||
| answers without detection. | ||||
| The content of INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA may be | The content of INTERNAL_DNS_DOMAIN and INTERNAL_DNSSEC_TA may be | |||
| passed to another (DNS) program for processing. As with any network | passed to another (DNS) program for processing. As with any network | |||
| input, the content SHOULD be considered untrusted and handled | input, the content SHOULD be considered untrusted and handled | |||
| accordingly. | accordingly. | |||
| 7. IANA Considerations | 8. IANA Considerations | |||
| This document defines two new IKEv2 Configuration Payload Attribute | This document defines two new IKEv2 Configuration Payload Attribute | |||
| Types, which are allocated from the "IKEv2 Configuration Payload | Types, which are allocated from the "IKEv2 Configuration Payload | |||
| Attribute Types" namespace. | Attribute Types" namespace. | |||
| Multi- | Multi- | |||
| Value Attribute Type Valued Length Reference | Value Attribute Type Valued Length Reference | |||
| ------ ------------------- ------ ---------- --------------- | ------ ------------------- ------ ---------- --------------- | |||
| 25 INTERNAL_DNS_DOMAIN YES 0 or more [this document] | 25 INTERNAL_DNS_DOMAIN YES 0 or more [this document] | |||
| 26 INTERNAL_DNSSEC_TA YES 0 or more [this document] | 26 INTERNAL_DNSSEC_TA YES 0 or more [this document] | |||
| Figure 1 | Figure 1 | |||
| 8. References | 9. References | |||
| 8.1. Normative References | 9.1. Normative References | |||
| [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G., | [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G., | |||
| and E. Lear, "Address Allocation for Private Internets", | and E. Lear, "Address Allocation for Private Internets", | |||
| BCP 5, RFC 1918, DOI 10.17487/RFC1918, February 1996, | BCP 5, RFC 1918, DOI 10.17487/RFC1918, February 1996, | |||
| <https://www.rfc-editor.org/info/rfc1918>. | <https://www.rfc-editor.org/info/rfc1918>. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | |||
| <https://www.rfc-editor.org/info/rfc2119>. | editor.org/info/rfc2119>. | |||
| [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. | [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
| Rose, "Resource Records for the DNS Security Extensions", | Rose, "Resource Records for the DNS Security Extensions", | |||
| RFC 4034, DOI 10.17487/RFC4034, March 2005, | RFC 4034, DOI 10.17487/RFC4034, March 2005, | |||
| <https://www.rfc-editor.org/info/rfc4034>. | <https://www.rfc-editor.org/info/rfc4034>. | |||
| [RFC5890] Klensin, J., "Internationalized Domain Names for | [RFC5890] Klensin, J., "Internationalized Domain Names for | |||
| Applications (IDNA): Definitions and Document Framework", | Applications (IDNA): Definitions and Document Framework", | |||
| RFC 5890, DOI 10.17487/RFC5890, August 2010, | RFC 5890, DOI 10.17487/RFC5890, August 2010, | |||
| <https://www.rfc-editor.org/info/rfc5890>. | <https://www.rfc-editor.org/info/rfc5890>. | |||
| skipping to change at page 13, line 19 ¶ | skipping to change at page 15, line 14 ¶ | |||
| [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | |||
| Kivinen, "Internet Key Exchange Protocol Version 2 | Kivinen, "Internet Key Exchange Protocol Version 2 | |||
| (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | |||
| 2014, <https://www.rfc-editor.org/info/rfc7296>. | 2014, <https://www.rfc-editor.org/info/rfc7296>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| 8.2. Informative References | 9.2. Informative References | |||
| [RFC2775] Carpenter, B., "Internet Transparency", RFC 2775, | [RFC2775] Carpenter, B., "Internet Transparency", RFC 2775, | |||
| DOI 10.17487/RFC2775, February 2000, | DOI 10.17487/RFC2775, February 2000, <https://www.rfc- | |||
| <https://www.rfc-editor.org/info/rfc2775>. | editor.org/info/rfc2775>. | |||
| [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection | [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection | |||
| Most of the Time", RFC 7435, DOI 10.17487/RFC7435, | Most of the Time", RFC 7435, DOI 10.17487/RFC7435, | |||
| December 2014, <https://www.rfc-editor.org/info/rfc7435>. | December 2014, <https://www.rfc-editor.org/info/rfc7435>. | |||
| Authors' Addresses | Authors' Addresses | |||
| Tommy Pauly | Tommy Pauly | |||
| Apple Inc. | Apple Inc. | |||
| One Apple Park Way | One Apple Park Way | |||
| End of changes. 47 change blocks. | ||||
| 103 lines changed or deleted | 196 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/ | ||||