One document matched: draft-ietf-netconf-call-home-02.xml
<?xml version='1.0'?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc4251 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4251.xml">
<!ENTITY rfc4252 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4252.xml">
<!ENTITY rfc4253 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4253.xml">
<!ENTITY rfc5246 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5246.xml">
<!ENTITY rfc5539 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5539.xml">
<!ENTITY rfc6020 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6020.xml">
<!ENTITY rfc6187 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6187.xml">
<!ENTITY rfc6241 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6241.xml">
<!ENTITY rfc6242 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6242.xml">
<!ENTITY rfc6335 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6335.xml">
]>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc linkmailto="no" ?>
<?rfc editing="no" ?>
<?rfc comments="yes" ?>
<?rfc inline="yes"?>
<?rfc rfcedstyle="yes"?>
<?rfc-ext allow-markup-in-artwork="yes" ?>
<?rfc-ext include-index="no" ?>
<!--<?rfc strict="no"?> -->
<rfc category="std"
ipr="trust200902"
docName="draft-ietf-netconf-call-home-02"
updates="4253">
<front>
<title>NETCONF Call Home and RESTCONF Call Home</title>
<author initials="K.W." surname="Watsen" fullname="Kent Watsen">
<organization>Juniper Networks</organization>
<address>
<email>kwatsen@juniper.net</email>
</address>
</author>
<date/>
<area>Operations</area>
<workgroup>NETCONF Working Group</workgroup>
<keyword>call-home</keyword>
<abstract>
<t>This document presents NETCONF Call Home and RESTCONF Call Home,
which respectively enable a NETCONF/RESTCONF server to initiate a
secure connection to a NETCONF/RESTCONF client.</t>
</abstract>
</front>
<middle>
<section title="Introduction" anchor="introduction">
<t>This document presents NETCONF Call Home and RESTCONF Call Home,
which respectively enable a NETCONF/RESTCONF server to initiate a
secure connection to a NETCONF/RESTCONF client. The NETCONF protocol
is described in <xref target="RFC6241"/> and the RESTCONF is described
in <xref target="draft-ietf-netconf-restconf"/>.</t>
<t>Both NETCONF Call Home and RESTCONF Call Home preserve the SSH
<xref target="RFC4253"/> and TLS <xref target="RFC5246"/> transport
roles, as when compared to standard NETCONF and
RESTCONF connections. Specifically, regardless if call home is
used or not, the NETCONF server is always the SSH or TLS server,
and the RESTCONF server is always the TLS server.</t>
<t>Ensuring consistency in the SSH and TLS roles is both necessary
and desirable. Ensuring consistency is necessary, for the SSH protocol, as SSH
channels and subsystems can only be opened on the SSH server, as
is needed to support NETCONF over SSH <xref target="RFC6242"/>.
Ensuring consistency is desirable, for both the SSH and TLS protocols, as it
conveniently leverages infrastructure that may be deployed for host-key or certificate
verification and user authentication.</t>
<section title="Motivation" anchor="motivation">
<t>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:
<list style="symbols">
<t>The network element may proactively call home after
being powered on for the first time in order to register
itself with its management system.</t>
<t>The network element may access the network in a way that
dynamically assigns it an IP address and it doesn't
register its assigned IP addressed to a mapping service.</t>
<t>The network element may be configured in "stealth mode"
and thus doesn't have any open ports for the management
system to connect to.</t>
<t>The network element may be deployed behind a firewall
that doesn't allow management access to the internal
network.</t>
<t>The network element may be deployed behind a firewall
that implements network address translation (NAT)
for all internal network IP addresses, thus complicating
the ability for a management system to connect to it.</t>
<t>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.</t>
</list>
</t>
<t>Having call home for the NETCONF protocol, and the RESTCONF protocol by extension, is
particularly useful as NETCONF is the recommended protocol for configuration
<xref target="iesg-statement"/>, which is needed for
provisioning workflows.</t>
</section>
<section title="Requirements Terminology">
<t>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 <xref target="RFC2119"/>.</t>
</section>
<section title="Applicability Statement">
<t>The techniques described in this document are
suitable for network management scenarios such
as the ones described in <xref target="motivation"/>. However,
these techniques SHOULD only be used for NETCONF Call Home
and RESTCONF Call Home, as described in this document.</t>
<t>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 before starting the
NETCONF/RESTCONF protocol (section 2.2 of <xref target="RFC6241"/> and
section FIXME of <xref target="draft-ietf-netconf-restconf"/>).</t>
<t>This contrasts with the base SSH and TLS protocols, which
do not require programmatic verification of the other party
(section 9.3.4 of <xref target="RFC4251"/>, section 4 of
<xref target="RFC4252"/>, and section 7.3 of <xref target="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.</t>
</section>
<section title="Update to RFC 4253">
<t>This document updates the SSH Transport Layer Protocol
<xref target="RFC4253"/> only by removing the "The client
initiates the connection" statement made in Section 4 (Connection
Setup). This document assumes that the reference to
"connection" refers to the underlying transport connection
(e.g., TCP), which the server initiates in a call home
connection. Security implications related to this change
are discussed in Security Considerations
(<xref target="sec-con"/>).</t>
</section>
</section>
<section title="The NETCONF Server or RESTCONF Server">
<section title="Protocol Operation">
<t>
<list style="symbols">
<t>The NETCONF/RESTCONF server initiates a TCP connection to
the NETCONF/RESTCONF client on one of the IANA-assigned ports
for call home (PORT-X for netconf-ch-ssh, PORT-Y for
netconf-ch-tls, or PORT-Z for restconf-ch-tls).</t>
<t>The TCP connection is accepted and a TCP session is
established.</t>
<t>Using this TCP session, the NETCONF/RESTCONF server immediately
starts either the SSH-server or the TLS-server protocol,
depending on which port is connected. The server MUST start
the SSH-server protocol when port PORT-X is connected or the
TLS-server protocol when either port PORT-Y or PORT-Z is
connected. The SSH-server and TLS-server protocols are described
by <xref target="RFC4253"/> and <xref target="RFC5246"/> respectively.</t>
<t>When port PORT-X or PORT-Y is connected, the NETCONF protocol
proceeds normally for SSH and TLS, as defined in <xref target="RFC6242"/>
and <xref target="RFC5539"/> respectively. When port PORT-Z is
connected, the RESTCONF protocol proceeds normally for TLS, as
defined in <xref target="draft-ietf-netconf-restconf"/>.</t>
</list>
</t>
</section>
<section title="Configuration Data Model">
<t>How to configure a NETCONF or RESTCONF server to initiate a
call home connection is outside the scope of this document,
as implementations can support this protocol using proprietary
configuration data models. That said, a YANG
<xref target="RFC6020"/> model for configuring both NETCONF Call Home
and RESTCONF Call Home is provided in
<xref target="draft-ietf-netconf-server-model"/>.</t>
</section>
</section>
<section title="The NETCONF Client or RESTCONF Client">
<section title="Protocol Operation">
<t>
<list style="symbols">
<t>The NETCONF/RESTCONF client listens for TCP connections
on one or all of the IANA-assigned ports for NETCONF
Call Home (PORT-X for netconf-ch-ssh and PORT-Y for netconf-ch-tls)
or RESTCONF Call Home (PORT-Z for restconf-ch-tls).</t>
<t>The NETCONF/RESTCONF client accepts an incoming TCP
connection and a TCP session is established.</t>
<t>Using this TCP session, the NETCONF/RESTCONF client immediately
starts either the SSH-client or the TLS-client protocol,
depending on which port is connected. The client MUST start
the SSH-client protocol when port PORT-X is connected and the
TLS-client protocol when port PORT-Y or PORT-Z is connected.
The SSH-client and TLS-client protocols are described by
<xref target="RFC4253"/> and <xref target="RFC5246"/> respectively.</t>
<t>When port PORT-X or PORT-Y is connected, the NETCONF protocol
proceeds normally for SSH and TLS, as defined in <xref target="RFC6242"/>
and <xref target="RFC5539"/> respectively. When port PORT-Z is
connected, the RESTCONF protocol proceeds normally for TLS, as
defined in <xref target="draft-ietf-netconf-restconf"/>.</t>
</list>
</t>
</section>
<section title="Server Identification and Verification" anchor="svr-id-and-ver">
<t>Under normal circumstances, a NETCONF/RESTCONF client initiates
the connection to the NETCONF/RESTCONF server. This action
provides essential input to verify the NETCONF/RESTCONF server's
identity. For instance, when using TLS, the input can be
compared to the domain names and IP addresses encoded in
X.509 certificates. Similarly, when using SSH, the input
can be compared to information persisted previously.</t>
<t>However, when receiving a call home connection,
the NETCONF/RESTCONF client does not have any context
leading it to know the connection is from a particular
NETCONF/RESTCONF server. Thus the NETCONF/RESTCONF client must derive the
NETCONF/RESTCONF server's identity using information provided by
the network and the NETCONF/RESTCONF server itself. This section
describes strategies a NETCONF/RESTCONF client can use to identify
a NETCONF/RESTCONF server.</t>
<t>In addition to identifying a NETCONF/RESTCONF server, a NETCONF/RESTCONF
client must also be able to verify the NETCONF/RESTCONF server's
credentials. Verifying a NETCONF/RESTCONF server's credentials is
necessary under normal circumstances but, due to call home
being commonly used for newly deployed NETCONF/RESTCONF servers, how to verify
its credentials the very first time becomes a prominent concern.
Therefore, this section also describes strategies a NETCONF/RESTCONF
client can use to verify a NETCONF/RESTCONF server's credentials.</t>
<t>The first information a NETCONF/RESTCONF client learns from a
call rhHome connection is the IP address of the NETCONF/RESTCONF server,
as provided by the source address of the TCP connection.
This IP address could be used as an identifier directly, but
doing so would only work in networks that use known static
addresses, in which case a standard NETCONF/RESTCONF connection would
have worked just as well. Due to this limited use, it is not
recommended to identify a NETCONF/RESTCONF server based on its source
IP address.</t>
<t>The next information a NETCONF/RESTCONF client learns is
provided by the NETCONF/RESTCONF server in the form of a host-key
or a certificate, for the SSH and TLS protocols respectively.
Without examining the contents of the host-key or certificate,
it is possible to form an identity for the NETCONF/RESTCONF server
using it directly (e.g., a fingerprint), since each NETCONF/RESTCONF server
is assumed to have a statistically unique public key, even
in virtualized environments. This strategy also provides
a mechanism to verify the NETCONF/RESTCONF server, in that
a secure connection can only be established with the NETCONF/RESTCONF
server having the matching private key. This strategy is
commonly implemented by SSH clients, and could be used equally
well by TLS-based clients, such as may be required when the
NETCONF/RESTCONF servers have self-signed certificates. This strategy
is viable and useful when the NETCONF/RESTCONF servers call home using
either SSH with standard RSA/DSA host-keys, or using TLS with
self-signed certificates.</t>
<t>Yet another option for identifying a NETCONF/RESTCONF server
is for its host key or certificate to encode its identity
directly (e.g., within the "Subject" field). However, in
order to trust the content encoded within a host-key or
certificate, it must be signed by a certificate authority
trusted by the NETCONF/RESTCONF client. This strategy's use of PKI
enables a NETCONF/RESTCONF client to transparently authenticate
NETCONF/RESTCONF servers, thus eliminating the need for manual
authentication, as required by the previously discussed
strategies. Elimination of manual steps is needed to achieve
scalable solutions, however one can claim that this merely
pushes equivalent work to provisioning the NETCONF/RESTCONF servers
with signed credentials. This assessment is accurate in
general, but not in the case where the manufacturer itself
provisions the credentials, such as is described by
<xref target="Std-802.1AR-2009"/>. When NETCONF/RESTCONF servers
are pre-provisioned this way, NETCONF/RESTCONF clients can
transparently authenticate NETCONF/RESTCONF servers using just the
manufacturer's trust anchor and a list of expected NETCONF/RESTCONF
server identifiers, which could be provided along with
shipping information. This strategy is recommended for
all deployment scenarios.</t>
<t>In discussing the use of certificates, it is worth noting
that TLS uses X.509 certificates by default. However, to use
X.509 certificates with SSH, both the NETCONF client and server
must support <xref target="RFC6187"/>.</t>
</section>
</section>
<section anchor="sec-con" title="Security Considerations">
<t>The security considerations described throughout
<xref target="RFC6242"/> and <xref target="RFC5539"/>,
and by extension <xref target="RFC4253"/>,
<xref target="RFC5246"/>, and <xref target="draft-ietf-netconf-restconf"/>
apply here as well.</t>
<t>This RFC deviates from standard SSH and TLS usage by
having the SSH/TLS server initiate the underlying TCP
connection. For SSH, <xref target="RFC4253"/> says
"the client initiates the connection", whereas for TLS,
<xref target="RFC5246"/> says it is layered on top of
"some reliable transport protocol" without further
attribution.</t>
<t>Not having the SSH/TLS client initiate the TCP
connection means that it does not have a preconceived
notion of the SSH/TLS server's identity, and therefore must
dynamically derive one from information provided by the
network or the SSH/TLS server itself. Security Considerations
for strategies for this are described in
<xref target="svr-id-and-ver"/>.</t>
<t>An attacker could DoS the NETCONF/RESTCONF client by
having it perform computationally 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).</t>
</section>
<section title="IANA Considerations">
<t>This document 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 <xref target="RFC6335"/>.</t>
<t>
<figure align="center">
<artwork><![CDATA[
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
]]></artwork>
</figure>
</t>
</section>
<section title="Acknowledgements">
<t>The author would like to thank for 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,
Peter Saint-Andre, Joe Touch, Sean Turner, Bert Wijnen.</t>
</section>
</middle>
<back>
<references title="Normative References">
&rfc2119;
&rfc4251;
&rfc4252;
&rfc4253;
&rfc5246;
&rfc5539;
&rfc6020;
&rfc6187;
&rfc6241;
&rfc6242;
&rfc6335;
<reference anchor='draft-ietf-netconf-restconf'>
<front>
<title>
RESTCONF Protocol
</title>
<author initials='A.B.' surname='Bierman'
fullname='Andy Bierman'>
<organization>YumaWorks</organization>
</author>
<author initials='M.B.' surname='Bjorklund'
fullname='Martin Bjorklund'>
<organization>Tail-f Systems</organization>
</author>
<author initials='K.W.' surname='Watsen'
fullname='Kent Watsen'>
<organization>Juniper Networks</organization>
</author>
<date year='2014' />
</front>
<seriesInfo name='Internet-Draft'
value='draft-ieft-netconf-restconf-04' />
</reference>
</references>
<references title="Informative References">
<reference anchor="Std-802.1AR-2009" target="http://standards.ieee.org/findstds/standard/802.1AR-2009.html">
<front>
<title>IEEE Standard for Local and metropolitan area networks - Secure Device Identity</title>
<author fullname="WG802.1 - Higher Layer LAN Protocols Working Group">
<organization>IEEE SA-Standards Board</organization>
</author>
<date month="December" year="2009"/>
</front>
</reference>
<reference anchor="iesg-statement" target="https://www.ietf.org/iesg/statement/writable-mib-module.html">
<front>
<title>Writable MIB Module IESG Statement</title>
<author initials="IESG" fullname="Internet Engineering Steering Group"/>
<date month="March" day="2" year="2014"/>
</front>
</reference>
<reference anchor="draft-ietf-netconf-server-model" target="http://tools.ietf.org/html/draft-ietf-netconf-server-model">
<front>
<title>NETCONF Server Configuration Model</title>
<author initials="K.W." surname="Watsen"
fullname="Kent Watsen">
<organization>Juniper Networks</organization>
</author>
<author initials="J.S." surname="Schoenwaelder"
fullname="Juergen Schoenwaelder">
<organization>Jacobs University</organization>
</author>
<date year="2014" />
</front>
</reference>
</references>
<section title="Change Log">
<section title="00 to 01">
<t>
<list style="symbols">
<t>The term "TCP connection" is now used throughout.</t>
<t>The terms "network element" and "management system" are now only used in the Motivation section.</t>
<t>Restructured doc a little to create an Introduction section.</t>
<t>Fixed reference in Applicability Statement so it would work
equally well for SSH and TLS.</t>
<t>Fixed reported odd wording and three references.</t>
</list>
</t>
</section>
<section title="01 to 02">
<t>
<list style="symbols">
<t>Added call home support for the RESTCONF protocol.</t>
<t>Fixed paragraph 3 of Security Considerations to equally
apply to the TLS protocol.</t>
</list>
</t>
</section>
</section>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-23 11:00:27 |