NETCONF Working Group | K. Watsen |
Internet-Draft | Juniper Networks |
Intended status: Standards Track | December 14, 2015 |
Expires: June 16, 2016 |
NETCONF Call Home and RESTCONF Call Home
draft-ietf-netconf-call-home-14
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.
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:
This document contains references to another draft in progress, both in the Normative References section, as well as in body text throughout. Please update the following reference to reflect its final RFC assignment:
Artwork in this document contains placeholder values for ports pending IANA assignment from "draft-ietf-netconf-call-home". Please apply the following replacements:
The following two Appendix sections are to be removed prior to publication:
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 June 16, 2016.
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.
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 [RFC7589].
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].
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 client-initiated 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.
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:
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].
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 risk assessment. A risk assessment for this RFC is in the Security Considerations section (Section 5).
This document uses the SSH Transport Layer Protocol [RFC4253] with the exception that the statement "The client initiates the connection" made in Section 4 (Connection Setup) does not apply. 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 5).
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.
The diagram below illustrates call home from a protocol layering perspective:
NETCONF/RESTCONF NETCONF/RESTCONF Server Client | | | 1. TCP | |----------------------------------->| | | | | | 2. SSH/TLS | |<-----------------------------------| | | | | | 3. NETCONF/RESTCONF | |<-----------------------------------| | | Note: arrows point from the "client" to the "server" at each protocol layer
This diagram makes the following points:
The term "client" is defined in [RFC6241], Section 1.1 "client". In the context of network management, the NETCONF/RESTCONF client might be a network management system.
How a NETCONF or RESTCONF client is configured is outside the scope of this document. For instance, such configuration might be used to enable listening for call home connections, configuring trust anchors, or configuring identifiers for expected connections.
The term "server" is defined in [RFC6241], Section 1.1 "server". In the context of network management, the NETCONF/RESTCONF server might be a network element or a device.
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].
The security considerations described in [RFC6242] and [RFC7589], 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."
Risks associated with these variances are centered around server authentication and the inability for clients to compare an independently constructed reference idenitifier to one presented by the server. To mitigate these risks, this RFC requires that the NETCONF/RESTCONF client validate the server's SSH host key or certificate, by certificate path validation to a preconfigured Issuer certificate, or by comparing the host key or certificate to a previously trusted or "pinned" value. Furthermore, when a certificate is used, this RFC requires that the client be able to match an identifier encoded in the presented certificate with an identifier the client was preconfigured to expect (e.g., serial number).
For cases when the NETCONF/RESTCONF server presents an X.509 certificate, NETCONF/RESTCONF clients should ensure that the Issuer certificate used for certificate path validation is unique to the manufacturer of the server. That is, the certificate should not belong to a 3rd-party certificate authority that might issue intermediate certificates for more than one manufacturer. This is especially important when a client-authentication mechanism passing a shared secret (e.g., a password) to the server is used. Not doing so could otherwise lead to a case where the client sends the shared secret to another server that happens to have the same identity (e.g., serial number) as the server the client was configured to expect.
Considerations not associated with server authentication follow next.
Internet facing hosts running NETCONF or RESTCONF call home will be fingerprinted via scanning tools such as `zmap` [zmap]. Both SSH and TLS provide many ways in which a host can be fingerprinted. SSH and TLS servers are fairly mature and able to withstand attacks, but SSH and TLS clients may not be as robust. Implementers and deployments need to ensure that software update mechanisms are provided so that vulnerabilities can be fixed in a timely fashion.
An attacker could launch a denial of service (DoS) attack on the NETCONF/RESTCONF client by having it perform computationally expensive operations, before deducing that the attacker doesn't posses a valid key. For instance, in TLS 1.3 [draft-ietf-tls-tls13], the ClientHello message contains a Key Share value based on an expensive asymmetric key operation. Common precautions mitigating DoS attacks are recommended, such as temporarily blacklisting the source address after a set number of unsuccessful login attempts.
When using call home with the RESTCONF protocol, special care is required when using some HTTP authentication schemes, especially the Basic [RFC7617] and Digest [RFC7616] schemes, which convey a shared key. Implementations and deployments should be sure to review the Security Considerations section in the RFC for any HTTP client authentication scheme used.
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 <iesg@ietf.org> Contact: IETF Chair <chair@ietf.org> Description: NETCONF Call Home (SSH) Reference: RFC XXXX Port Number: PORT-X Service Name: netconf-ch-tls Transport Protocol(s): TCP Assignee: IESG <iesg@ietf.org> Contact: IETF Chair <chair@ietf.org> Description: NETCONF Call Home (TLS) Reference: RFC XXXX Port Number: PORT-Y Service Name: restconf-ch-tls Transport Protocol(s): TCP Assignee: IESG <iesg@ietf.org> Contact: IETF Chair <chair@ietf.org> Description: RESTCONF Call Home (TLS) Reference: RFC XXXX Port Number: PORT-Z
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.
[draft-ietf-netconf-server-model] | Watsen, K. and J. Schoenwaelder, "NETCONF Server Configuration Model", 2014. |
[draft-ietf-tls-tls13] | Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", 2015. |
[RFC6020] | Bjorklund, M., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, October 2010. |
[RFC7616] | Shekh-Yusef, R., Ahrens, D. and S. Bremer, "HTTP Digest Access Authentication", RFC 7616, DOI 10.17487/RFC7616, September 2015. |
[RFC7617] | Reschke, J., "The 'Basic' HTTP Authentication Scheme", RFC 7617, DOI 10.17487/RFC7617, September 2015. |
[Std-802.1AR-2009] | IEEE SA-Standards Board, "IEEE Standard for Local and metropolitan area networks - Secure Device Identity", December 2009. |
[zmap] | Durumeric, Z., Wustrow, E. and J. Halderman, "ZMap: Fast Internet-Wide Scanning and its Security Applications", 2013. In proceedings of the 22nd USENIX Security Symposium |
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.