NETCONF Working Group K. Watsen Internet-Draft Juniper Networks Updates: 4253 (if approved) June 3, 2015 Intended status: Standards Track Expires: December 5, 2015 NETCONF Call Home and RESTCONF Call Home draft-ietf-netconf-call-home-07 Abstract This RFC presents NETCONF Call Home and RESTCONF Call Home, which enable a NETCONF or RESTCONF server to initiate a secure connection to a NETCONF or RESTCONF client respectively. Editorial Note (To be removed by RFC Editor) This draft contains many placeholder values that need to be replaced with finalized values at the time of publication. This note summarizes all of the substitutions that are needed. Please note that no other RFC Editor instructions are specified anywhere else in this document. Artwork in this document contains placeholder references for this draft. Please apply the following replacement: o "XXXX" --> the assigned RFC value for this draft This document contains references to other drafts in progress, both in the Normative References section, as well as in body text throughout. Please update the following references to reflect their final RFC assignments: o draft-ietf-netconf-restconf o draft-ietf-netconf-rfc5539bis o draft-ietf-netconf-server-model Artwork in this document contains placeholder values for ports pending IANA assignment from "draft-ietf-netconf-call-home". Please apply the following replacements: o "PORT-X" --> the assigned port value for "netconf-ch-ssh" o "PORT-Y" --> the assigned port value for "netconf-ch-tls" Watsen Expires December 5, 2015 [Page 1] Internet-Draft NETCONF Call Home and RESTCONF Call Home June 2015 o "PORT-Z" --> the assigned port value for "restconf-ch-tls" The following two Appendix sections are to be removed prior to publication: o Appendix A. Change Log o Appendix B. Open Issues Status of This Memo This Internet-Draft is submitted in full conformance with the 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 http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire on December 5, 2015. Copyright Notice Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Watsen Expires December 5, 2015 [Page 2] Internet-Draft NETCONF Call Home and RESTCONF Call Home June 2015 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Motivation . . . . . . . . . . . . . . . . . . . . . . . 4 1.2. Requirements Terminology . . . . . . . . . . . . . . . . 5 1.3. Applicability Statement . . . . . . . . . . . . . . . . . 5 1.4. Update to RFC 4253 . . . . . . . . . . . . . . . . . . . 5 1.5. The NETCONF/RESTCONF Convention . . . . . . . . . . . . . 5 2. The NETCONF or RESTCONF Client . . . . . . . . . . . . . . . 6 2.1. Protocol Operation . . . . . . . . . . . . . . . . . . . 6 2.2. Configuration Data Model . . . . . . . . . . . . . . . . 7 3. The NETCONF or RESTCONF Server . . . . . . . . . . . . . . . 7 3.1. Protocol Operation . . . . . . . . . . . . . . . . . . . 7 3.2. Configuration Data Model . . . . . . . . . . . . . . . . 8 4. Security Considerations . . . . . . . . . . . . . . . . . . . 8 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 7.1. Normative References . . . . . . . . . . . . . . . . . . 10 7.2. Informative References . . . . . . . . . . . . . . . . . 11 Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 12 A.1. 00 to 01 . . . . . . . . . . . . . . . . . . . . . . . . 12 A.2. 01 to 02 . . . . . . . . . . . . . . . . . . . . . . . . 12 A.3. 02 to 03 . . . . . . . . . . . . . . . . . . . . . . . . 12 A.4. 03 to 04 . . . . . . . . . . . . . . . . . . . . . . . . 12 A.5. 04 to 05 . . . . . . . . . . . . . . . . . . . . . . . . 12 A.6. 05 to 06 . . . . . . . . . . . . . . . . . . . . . . . . 13 A.7. 06 to 07 . . . . . . . . . . . . . . . . . . . . . . . . 13 Appendix B. Open Issues . . . . . . . . . . . . . . . . . . . . 13 1. Introduction This RFC presents NETCONF Call Home and RESTCONF Call Home, which enable a NETCONF or RESTCONF server to initiate a secure connection to a NETCONF or RESTCONF client respectively. NETCONF Call Home supports both of the secure transports used by the NETCONF protocol [RFC6241], SSH and TLS. The NETCONF protocol's binding to SSH is defined in [RFC6242]. The NETCONF protocol's binding to TLS is defined in [draft-ietf-netconf-rfc5539bis]. RESTCONF Call Home only supports TLS, the same as the RESTCONF protocol [draft-ietf-netconf-restconf]. The RESTCONF protocol's binding to TLS is defined in [draft-ietf-netconf-restconf]. The SSH protocol is defined in [RFC4253]. The TLS protocol is defined in [RFC5246]. Both the SSH and TLS protocols are layered on top of the TCP protocol, which is defined in [RFC793]. Watsen Expires December 5, 2015 [Page 3] Internet-Draft NETCONF Call Home and RESTCONF Call Home June 2015 Both NETCONF Call Home and RESTCONF Call Home preserve all but one of the client/server roles in their respective protocol stacks, as compared to standard NETCONF and RESTCONF connections. The one and only role reversal that occurs is at the TCP layer; that is, which peer is the TCP-client and which is the TCP-server. For example, a network element is traditionally the TCP-server. However, when calling home, the network element becomes the TCP- client. The network element's secure transport layer roles (SSH- server, TLS-server) and its application layer roles (NETCONF-server, RESTCONF-server) both remain the same. Having consistency in both the secure transport layer (SSH, TLS) and application layer (NETCONF, RESTCONF) roles conveniently enables deployed network management infrastructure to support call home also. For instance, existing certificate chains and user authentication mechanisms are unaffected by call home. 1.1. Motivation Call home is generally useful for both the initial deployment and on- going management of networking elements. Here are some scenarios enabled by call home: o The network element may proactively call home after being powered on for the first time in order to register itself with its management system. o The network element may access the network in a way that dynamically assigns it an IP address, but does not register its assigned IP address to a mapping service. o The network element may be deployed behind a firewall that implements network address translation (NAT) for all internal network IP addresses. o The network element may be deployed behind a firewall that doesn't allow any management access to the internal network. o The network element may be configured in "stealth mode" and thus doesn't have any open ports for the management system to connect to. o The operator may prefer to have network elements initiate management connections, believing it is easier to secure one open- port in the data center than to have an open port on each network element in the network. Watsen Expires December 5, 2015 [Page 4] Internet-Draft NETCONF Call Home and RESTCONF Call Home June 2015 1.2. Requirements Terminology The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119]. 1.3. Applicability Statement The techniques described in this document are suitable for network management scenarios such as the ones described in Section 1.1. However, these techniques are only defined for NETCONF Call Home and RESTCONF Call Home, as described in this document. The reason for this restriction is that different protocols have different security assumptions. The NETCONF and RESTCONF protocols require clients and servers to verify the identity of the other party. This requirement is specified for the NETCONF protocol in Section 2.2 of [RFC6241], and is specified for the RESTCONF protocol in Sections 2.4 and 2.5 of [draft-ietf-netconf-restconf]). This contrasts with the base SSH and TLS protocols, which do not require programmatic verification of the other party (section 9.3.4 of [RFC4251], section 4 of [RFC4252], and section 7.3 of [RFC5246]). In such circumstances, allowing the SSH/TLS server to contact the SSH/TLS client would open new vulnerabilities. Any use of call home with SSH/TLS for purposes other than NETCONF or RESTCONF will need a thorough, contextual security analysis. 1.4. Update to RFC 4253 This document updates the SSH Transport Layer Protocol [RFC4253] only in removing the statement "The client initiates the connection" made in Section 4 (Connection Setup). Assuming the reference to client means "SSH client" and the reference to connection means "TCP connection", this statement doesn't hold true in call home, where the network element is the SSH server and yet still initiates the TCP connection. Security implications related to this change are discussed in Security Considerations (Section 4). 1.5. The NETCONF/RESTCONF Convention Throughout the remainder of this document, the term "NETCONF/ RESTCONF" is used as an abbreviation in place of the text "the NETCONF or the RESTCONF". The NETCONF/RESTCONF abbreviation is not intended to require or to imply that a client or server must implement both the NETCONF standard and the RESTCONF standard. Watsen Expires December 5, 2015 [Page 5] Internet-Draft NETCONF Call Home and RESTCONF Call Home June 2015 2. The NETCONF or RESTCONF Client 2.1. Protocol Operation C1 The NETCONF/RESTCONF client listens for TCP connection requests from NETCONF/RESTCONF servers. The client SHOULD listen for connections on the IANA-assigned ports defined in section Section 5, but MAY be configured to use a non-standard port. C2 The NETCONF/RESTCONF client accepts an incoming TCP connection request and a TCP connection is established. C3 Using this TCP connection, the NETCONF/RESTCONF client MUST immediately start either the SSH-client [RFC4253] or the TLS- client [RFC5246] protocol. For example, assuming the use of the IANA-assigned ports, the SSH-client protocol is started when the connection is accepted on port PORT-X and the TLS-client protocol is started when the connection is accepted on either port PORT-Y or PORT-Z. C4 If using TLS, the NETCONF/RESTCONF client MUST advertise "peer_allowed_to_send", as defined by [RFC6520]. This is required so NETCONF/RESTCONF servers can depend on it being there for call home connections, when keep-alives are needed the most. C5 As part of establishing an SSH or TLS connection, the NETCONF/ RESTCONF client MUST validate the server's presented host key or certificate. This validation MAY be accomplished by certificate path validation or by comparing the host key or certificate to a previously trusted or "pinned" value. C6 If certificate path validation is used, the NETCONF/RESTCONF client MUST ensure that the certificate has a valid chain of trust to a preconfigured trust anchor and that the certificate encodes an "identifier" [RFC6125] that the client had awareness of prior to the connection attempt. How identifiers are encoded in certificates MAY be determined by a policy associated with the certificate's trust anchor. For instance, a given trust anchor may be known to only sign IDevID certificates [Std-802.1AR-2009] having a unique identifier (e.g., serial number) in the X.509 certificate's "CommonName" field. C7 After the server's host key or certificate is validated, the SSH or TLS protocol proceeds as normal to establish a SSH or TLS connection. C8 Once the SSH or TLS connection is established, the NETCONF/ RESTCONF client MUST immediately start using either the NETCONF- Watsen Expires December 5, 2015 [Page 6] Internet-Draft NETCONF Call Home and RESTCONF Call Home June 2015 client [RFC6241] or RESTCONF-client [draft-ietf-netconf-restconf] protocol. Assuming the use of the IANA-assigned ports, the NETCONF-client protocol is started when the connection is accepted on either port PORT-X or PORT-Y and the RESTCONF-client protocol is started when the connection is accepted on port PORT- Z. 2.2. Configuration Data Model How a NETCONF or RESTCONF client is configured is outside the scope of this document. This includes configuration that might be used to enable listening for call home connections, configuring trust anchors, or configuring identifiers for expected connections. 3. The NETCONF or RESTCONF Server 3.1. Protocol Operation S1 The NETCONF/RESTCONF server initiates a TCP connection request to the NETCONF/RESTCONF client. The server SHOULD connect to one of the IANA-assigned ports defined in section Section 5, but MAY be configured to use a non-standard port. Using the IANA-assigned ports, the server connects to port PORT-X for NETCONF over SSH, port PORT-Y for NETCONF over TLS, and port PORT-Z for RESTCONF over TLS. S2 The TCP connection request is accepted and a TCP connection is established. S3 Using this TCP connection, the NETCONF/RESTCONF server MUST immediately start using either the SSH-server [RFC4253] or the TLS-server [RFC5246] protocol, depending on how it is configured. For example, assuming the use of the IANA-assigned ports, the SSH-server protocol is used after connecting to the remote port PORT-X and the TLS-server protocol is used after connecting to one of the remote ports PORT-Y or PORT-Z. S4 As part of establishing the SSH or TLS connection, the NETCONF/ RESTCONF server will send its host key or certificate to the client. If a certificate is sent, the server MUST also send any intermediate certificates leading up to the trust anchor the clients are expected use to authenticate it. How to send a list of certificates is defined for SSH in [RFC6187] Section 2.1, and for TLS in [RFC5246] Section 7.4.2. S5 Once the SSH or TLS connection is established, the NETCONF/ RESTCONF server MUST immediately start using either the NETCONF- server [RFC6241] or RESTCONF-server [draft-ietf-netconf-restconf] Watsen Expires December 5, 2015 [Page 7] Internet-Draft NETCONF Call Home and RESTCONF Call Home June 2015 protocol, depending on how it is configured. Assuming the use of the IANA-assigned ports, the NETCONF-server protocol is used after connecting to remote port PORT-X or PORT-Y, and the RESTCONF-server protocol is used after connecting to remote port PORT-Z. S6 If a persistent connection is desired, the NETCONF/RESTCONF server, as the connection initiator, SHOULD actively test the aliveness of the connection using a keep-alive mechanism. For TLS based connections, the NETCONF/RESTCONF server SHOULD send HeartbeatRequest messages, as defined by [RFC6520]. For SSH based connections, per section 4 of [RFC4254], the NETCONF/ RESTCONF server SHOULD send a SSH_MSG_GLOBAL_REQUEST message with the purposely nonexistent "request name" value "keepalive@ietf.org" and the "want reply" value set to '1'. 3.2. Configuration Data Model How a NETCONF or RESTCONF server is configured is outside the scope of this document. This includes configuration that might be used to specify hostnames, IP addresses, ports, algorithms, or other relevant parameters. That said, a YANG [RFC6020] model for configuring NETCONF and RESTCONF servers, including call home, is provided in [draft-ietf-netconf-server-model]. 4. Security Considerations The security considerations described in [RFC6242] and [draft-ietf-netconf-rfc5539bis], and by extension [RFC4253], [RFC5246], and [draft-ietf-netconf-restconf] apply here as well. This RFC deviates from standard SSH and TLS usage by having the SSH/ TLS server initiate the underlying TCP connection. This reversal is incongruous with [RFC4253], which says "the client initiates the connection" and also [RFC6125], which says "the client MUST construct a list of acceptable reference identifiers, and MUST do so independently of the identifiers presented by the service." To account for these variances, this RFC requires that the NETCONF/ RESTCONF client validate the SSH host key or certificate via certificate path validation to a preconfigured trust anchor or by comparing the host key or certificate to a previously trusted or "pinned" value. Furthermore, if certificate path validation is used, this RFC requires that the client be able to match a presented identifier encoded in the certificate with an identifier the client was preconfigured to expect. An attacker could launch a denial of service (DoS) attack on the NETCONF/RESTCONF client by having it perform computationally Watsen Expires December 5, 2015 [Page 8] Internet-Draft NETCONF Call Home and RESTCONF Call Home June 2015 expensive operations, before deducing that the attacker doesn't posses a valid key. This is no different than any secured service and all common precautions apply (e.g., blacklisting the source address after a set number of unsuccessful login attempts). 5. IANA Considerations This RFC requests that IANA assigns three TCP port numbers in the "Registered Port Numbers" range with the service names "netconf-ch- ssh", "netconf-ch-tls", and "restconf-ch-tls". These ports will be the default ports for NETCONF Call Home and RESTCONF Call Home protocols. Below is the registration template following the rules in [RFC6335]. Service Name: netconf-ch-ssh Transport Protocol(s): TCP Assignee: IESG Contact: IETF Chair Description: NETCONF Call Home (SSH) Reference: RFC XXXX Port Number: PORT-X Service Name: netconf-ch-tls Transport Protocol(s): TCP Assignee: IESG Contact: IETF Chair Description: NETCONF Call Home (TLS) Reference: RFC XXXX Port Number: PORT-Y Service Name: restconf-ch-tls Transport Protocol(s): TCP Assignee: IESG Contact: IETF Chair Description: RESTCONF Call Home (TLS) Reference: RFC XXXX Port Number: PORT-Z 6. Acknowledgements The author would like to thank the following for lively discussions on list and in the halls (ordered by last name): Andy Bierman, Martin Bjorklund, Mehmet Ersue, Wes Hardaker, Stephen Hanna, David Harrington, Jeffrey Hutzelman, Radek Krejci, Alan Luchuk, Mouse, Russ Mundy, Tom Petch, Juergen Schoenwaelder, Peter Saint-Andre, Joe Touch, Hannes Tschofenig, Sean Turner, and Bert Wijnen. Watsen Expires December 5, 2015 [Page 9] Internet-Draft NETCONF Call Home and RESTCONF Call Home June 2015 7. References 7.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC4251] Ylonen, T. and C. Lonvick, "The Secure Shell (SSH) Protocol Architecture", RFC 4251, January 2006. [RFC4252] Ylonen, T. and C. Lonvick, "The Secure Shell (SSH) Authentication Protocol", RFC 4252, January 2006. [RFC4253] Ylonen, T. and C. Lonvick, "The Secure Shell (SSH) Transport Layer Protocol", RFC 4253, January 2006. [RFC4254] Ylonen, T. and C. Lonvick, "The Secure Shell (SSH) Connection Protocol", RFC 4254, January 2006. [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, August 2008. [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)", RFC 6125, March 2011. [RFC6187] Igoe, K. and D. Stebila, "X.509v3 Certificates for Secure Shell Authentication", RFC 6187, March 2011. [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. Bierman, "Network Configuration Protocol (NETCONF)", RFC 6241, June 2011. [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, June 2011. [RFC6335] Cotton, M., Eggert, L., Touch, J., Westerlund, M., and S. Cheshire, "Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry", BCP 165, RFC 6335, August 2011. [RFC6520] Seggelmann, R., Tuexen, M., and M. Williams, "Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) Heartbeat Extension", RFC 6520, February 2012. Watsen Expires December 5, 2015 [Page 10] Internet-Draft NETCONF Call Home and RESTCONF Call Home June 2015 [RFC793] Postel, J., "TRANSMISSION CONTROL PROTOCOL", STD 7, September 1981, . [draft-ietf-netconf-restconf] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", draft-ieft-netconf-restconf-04 (work in progress), 2014, . [draft-ietf-netconf-rfc5539bis] Badra, M., Luchuk, A., and J. Schoenwaelder, "Using the NETCONF Protocol over Transport Layer Security (TLS) with Mutual X.509 Authentication", draft-ietf-netconf- rfc5539bis-10 (work in progress), April 2015, . 7.2. Informative References [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, October 2010. [Std-802.1AR-2009] IEEE SA-Standards Board, "IEEE Standard for Local and metropolitan area networks - Secure Device Identity", December 2009, . [draft-ietf-netconf-server-model] Watsen, K. and J. Schoenwaelder, "NETCONF Server Configuration Model", 2014, . Watsen Expires December 5, 2015 [Page 11] Internet-Draft NETCONF Call Home and RESTCONF Call Home June 2015 Appendix A. Change Log A.1. 00 to 01 o The term "TCP connection" is now used throughout. o The terms "network element" and "management system" are now only used in the Motivation section. o Restructured doc a little to create an Introduction section. o Fixed reference in Applicability Statement so it would work equally well for SSH and TLS. o Fixed reported odd wording and three references. A.2. 01 to 02 o Added call home support for the RESTCONF protocol. o Fixed paragraph 3 of Security Considerations to equally apply to the TLS protocol. A.3. 02 to 03 o Tried to improve readability (issue #6) o Removed "FIXME" in section 1.3 (issue #7) o Added RFC Editor notes (issue #8) o Removed "TCP session" term (issue #9) o Improved language for usage of IANA-assigned ports (issue #10) A.4. 03 to 04 o Replaced "verify credentials" with "verify identity" (issue #11) A.5. 04 to 05 o Applied many suggestions from WGLC o Removed essay like "Server Identification and Verification" section o Added text about keep-alives Watsen Expires December 5, 2015 [Page 12] Internet-Draft NETCONF Call Home and RESTCONF Call Home June 2015 o Added Configuration Data Model section for client protocol o Improved Security Considerations section A.6. 05 to 06 o Addressed comments raised by Alan Luchuk. A.7. 06 to 07 o replaced "reference identifier" with "identifier" o added reference to RFC6125 o moved reference to 6020 to Informative section Appendix B. Open Issues All issues with this draft are tracked using GitHub issues. Please see: https://github.com/netconf-wg/call-home/issues to see currently opened issues. Author's Address Kent Watsen Juniper Networks EMail: kwatsen@juniper.net Watsen Expires December 5, 2015 [Page 13]