draft-ietf-netconf-call-home-15.txt   draft-ietf-netconf-call-home-16.txt 
NETCONF Working Group K. Watsen NETCONF Working Group K. Watsen
Internet-Draft Juniper Networks Internet-Draft Juniper Networks
Intended status: Standards Track December 14, 2015 Intended status: Standards Track December 16, 2015
Expires: June 16, 2016 Expires: June 18, 2016
NETCONF Call Home and RESTCONF Call Home NETCONF Call Home and RESTCONF Call Home
draft-ietf-netconf-call-home-15 draft-ietf-netconf-call-home-16
Abstract Abstract
This RFC presents NETCONF Call Home and RESTCONF Call Home, which This RFC presents NETCONF Call Home and RESTCONF Call Home, which
enable a NETCONF or RESTCONF server to initiate a secure connection enable a NETCONF or RESTCONF server to initiate a secure connection
to a NETCONF or RESTCONF client respectively. to a NETCONF or RESTCONF client respectively.
Editorial Note (To be removed by RFC Editor) Editorial Note (To be removed by RFC Editor)
This draft contains many placeholder values that need to be replaced This draft contains many placeholder values that need to be replaced
skipping to change at page 2, line 20 skipping to change at page 2, line 20
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 http://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 June 16, 2016. This Internet-Draft will expire on June 18, 2016.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2015 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
(http://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
skipping to change at page 6, line 45 skipping to change at page 6, line 45
The term "client" is defined in [RFC6241], Section 1.1 "client". In The term "client" is defined in [RFC6241], Section 1.1 "client". In
the context of network management, the NETCONF/RESTCONF client might the context of network management, the NETCONF/RESTCONF client might
be a network management system. be a network management system.
3.1. Protocol Operation 3.1. Protocol Operation
C1 The NETCONF/RESTCONF client listens for TCP connection requests C1 The NETCONF/RESTCONF client listens for TCP connection requests
from NETCONF/RESTCONF servers. The client MUST support accepting from NETCONF/RESTCONF servers. The client MUST support accepting
TCP connections on the IANA-assigned ports defined in Section 6, TCP connections on the IANA-assigned ports defined in Section 6,
but MAY be configured to listen a different port. but MAY be configured to listen to a different port.
C2 The NETCONF/RESTCONF client accepts an incoming TCP connection C2 The NETCONF/RESTCONF client accepts an incoming TCP connection
request and a TCP connection is established. request and a TCP connection is established.
C3 Using this TCP connection, the NETCONF/RESTCONF client starts C3 Using this TCP connection, the NETCONF/RESTCONF client starts
either the SSH-client [RFC4253] or the TLS-client [RFC5246] either the SSH-client [RFC4253] or the TLS-client [RFC5246]
protocol. For example, assuming the use of the IANA-assigned protocol. For example, assuming the use of the IANA-assigned
ports, the SSH-client protocol is started when the connection is ports, the SSH-client protocol is started when the connection is
accepted on port PORT-X and the TLS-client protocol is started 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. when the connection is accepted on either port PORT-Y or PORT-Z.
skipping to change at page 7, line 29 skipping to change at page 7, line 29
certificate. This validation MAY be accomplished by certificate certificate. This validation MAY be accomplished by certificate
path validation or by comparing the host key or certificate to a path validation or by comparing the host key or certificate to a
previously trusted or "pinned" value. If a certificate is previously trusted or "pinned" value. If a certificate is
presented and it contains revocation checking information, the presented and it contains revocation checking information, the
NETCONF/RESTCONF client SHOULD check the revocation status of the NETCONF/RESTCONF client SHOULD check the revocation status of the
certificate. If it is determined that a certificate has been certificate. If it is determined that a certificate has been
revoked, the client MUST immediately close the connection. revoked, the client MUST immediately close the connection.
C6 If certificate path validation is used, the NETCONF/RESTCONF C6 If certificate path validation is used, the NETCONF/RESTCONF
client MUST ensure that the presented certificate has a valid client MUST ensure that the presented certificate has a valid
chain of trust to a preconfigured Issuer and that the presented chain of trust to a preconfigured issuer certificate, and that
certificate encodes an "identifier" [RFC6125] that the client had the presented certificate encodes an "identifier" [RFC6125] that
awareness of prior to the connection attempt. Clients SHOULD the client had awareness of prior to the connection attempt. How
ensure that the Issuer used to authenticate the presented identifiers are encoded in certificates MAY be determined by a
certificate defines the namespace for the identifiers of policy associated with the certificate's issuer. For instance, a
interest. How identifiers are encoded in certificates MAY be given issuer may be known to only sign IDevID certificates
determined by a policy associated with the certificate's Issuer. [Std-802.1AR-2009] having a unique identifier (e.g., serial
For instance, a given Issuer may be known to only sign IDevID number) in the X.509 certificate's "CommonName" field.
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 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 or TLS protocol proceeds as normal to establish a SSH or TLS
connection. When performing client authentication with the connection. When performing client authentication with the
NETCONF/RESTCONF server, the NETCONF/RESTCONF client MUST ensure NETCONF/RESTCONF server, the NETCONF/RESTCONF client MUST ensure
to only use credentials that it had previously associated for the to only use credentials that it had previously associated for the
NETCONF/RESTCONF server's presented host key or server NETCONF/RESTCONF server's presented host key or server
certificate. certificate.
C8 Once the SSH or TLS connection is established, the NETCONF/ C8 Once the SSH or TLS connection is established, the NETCONF/
skipping to change at page 8, line 11 skipping to change at page 8, line 9
RESTCONF-client [draft-ietf-netconf-restconf] protocol. Assuming RESTCONF-client [draft-ietf-netconf-restconf] protocol. Assuming
the use of the IANA-assigned ports, the NETCONF-client protocol the use of the IANA-assigned ports, the NETCONF-client protocol
is started when the connection is accepted on either port PORT-X is started when the connection is accepted on either port PORT-X
or PORT-Y and the RESTCONF-client protocol is started when the or PORT-Y and the RESTCONF-client protocol is started when the
connection is accepted on port PORT-Z. connection is accepted on port PORT-Z.
3.2. Configuration Data Model 3.2. Configuration Data Model
How a NETCONF or RESTCONF client is configured is outside the scope How a NETCONF or RESTCONF client is configured is outside the scope
of this document. For instance, such configuration might be used to of this document. For instance, such configuration might be used to
enable listening for call home connections, configuring trust enable listening for call home connections, configuring trusted
anchors, or configuring identifiers for expected connections. certificate issuers, or configuring identifiers for expected
connections.
4. The NETCONF or RESTCONF Server 4. The NETCONF or RESTCONF Server
The term "server" is defined in [RFC6241], Section 1.1 "server". In The term "server" is defined in [RFC6241], Section 1.1 "server". In
the context of network management, the NETCONF/RESTCONF server might the context of network management, the NETCONF/RESTCONF server might
be a network element or a device. be a network element or a device.
4.1. Protocol Operation 4.1. Protocol Operation
S1 The NETCONF/RESTCONF server initiates a TCP connection request to S1 The NETCONF/RESTCONF server initiates a TCP connection request to
skipping to change at page 8, line 44 skipping to change at page 8, line 43
either the SSH-server [RFC4253] or the TLS-server [RFC5246] either the SSH-server [RFC4253] or the TLS-server [RFC5246]
protocol, depending on how it is configured. For example, protocol, depending on how it is configured. For example,
assuming the use of the IANA-assigned ports, the SSH-server assuming the use of the IANA-assigned ports, the SSH-server
protocol is used after connecting to the remote port PORT-X and protocol is used after connecting to the remote port PORT-X and
the TLS-server protocol is used after connecting to one of the the TLS-server protocol is used after connecting to one of the
remote ports PORT-Y or PORT-Z. remote ports PORT-Y or PORT-Z.
S4 As part of establishing the SSH or TLS connection, the NETCONF/ S4 As part of establishing the SSH or TLS connection, the NETCONF/
RESTCONF server will send its host key or certificate to the RESTCONF server will send its host key or certificate to the
client. If a certificate is sent, the server MUST also send all client. If a certificate is sent, the server MUST also send all
intermediate certificates leading up to the certificate's trust intermediate certificates leading up to a well known and trusted
anchor. How to send a list of certificates is defined for SSH in issuer. 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. [RFC6187] Section 2.1, and for TLS in [RFC5246] Section 7.4.2.
S5 Establishing an SSH or TLS session requires server authentication S5 Establishing an SSH or TLS session requires server authentication
of client credentials in all cases except with RESTCONF, where of client credentials in all cases except with RESTCONF, where
some client authentication schemes occur after the secure some client authentication schemes occur after the secure
transport connection (TLS) has been established. If transport transport connection (TLS) has been established. If transport
(SSH or TLS) level client authentication is required, and the (SSH or TLS) level client authentication is required, and the
client is unable to successfully authenticate itself to the client is unable to successfully authenticate itself to the
server in an amount of time defined by local policy, the server server in an amount of time defined by local policy, the server
MUST close the connection. MUST close the connection.
skipping to change at page 10, line 4 skipping to change at page 9, line 48
The security considerations described in [RFC6242] and [RFC7589], and The security considerations described in [RFC6242] and [RFC7589], and
by extension [RFC4253], [RFC5246], and [draft-ietf-netconf-restconf] by extension [RFC4253], [RFC5246], and [draft-ietf-netconf-restconf]
apply here as well. apply here as well.
This RFC deviates from standard SSH and TLS usage by having the SSH/ This RFC deviates from standard SSH and TLS usage by having the SSH/
TLS server initiate the underlying TCP connection. This reversal is TLS server initiate the underlying TCP connection. This reversal is
incongruous with [RFC4253], which says "the client initiates the incongruous with [RFC4253], which says "the client initiates the
connection" and also [RFC6125], which says "the client MUST construct connection" and also [RFC6125], which says "the client MUST construct
a list of acceptable reference identifiers, and MUST do so a list of acceptable reference identifiers, and MUST do so
independently of the identifiers presented by the service." independently of the identifiers presented by the service."
Risks associated with these variances are centered around server Risks associated with these variances are centered around server
authentication and the inability for clients to compare an authentication and the inability for clients to compare an
independently constructed reference identifier to one presented by independently constructed reference identifier to one presented by
the server. To mitigate these risks, this RFC requires that the the server. To mitigate these risks, this RFC requires that the
NETCONF/RESTCONF client validate the server's SSH host key or NETCONF/RESTCONF client validate the server's SSH host key or
certificate, by certificate path validation to a preconfigured Issuer certificate, by certificate path validation to a preconfigured issuer
certificate, or by comparing the host key or certificate to a certificate, or by comparing the host key or certificate to a
previously trusted or "pinned" value. Furthermore, when a previously trusted or "pinned" value. Furthermore, when a
certificate is used, this RFC requires that the client be able to certificate is used, this RFC requires that the client be able to
match an identifier encoded in the presented certificate with an match an identifier encoded in the presented certificate with an
identifier the client was preconfigured to expect (e.g., serial identifier the client was preconfigured to expect (e.g., serial
number). number).
For cases when the NETCONF/RESTCONF server presents an X.509 For cases when the NETCONF/RESTCONF server presents an X.509
certificate, NETCONF/RESTCONF clients should ensure that the Issuer certificate, NETCONF/RESTCONF clients should ensure that the issuer
certificate used for certificate path validation is unique to the certificate used for certificate path validation is unique to the
manufacturer of the server. That is, the certificate should not manufacturer of the server. That is, the certificate should not
belong to a 3rd-party certificate authority that might issue belong to a 3rd-party certificate authority that might issue
intermediate certificates for more than one manufacturer. This is certificates for more than one manufacturer. This is especially
especially important when a client authentication mechanism passing a important when a client authentication mechanism passing a shared
shared secret (e.g., a password) to the server is used. Not doing so secret (e.g., a password) to the server is used. Not doing so could
could otherwise lead to a case where the client sends the shared otherwise lead to a case where the client sends the shared secret to
secret to another server that happens to have the same identity another server that happens to have the same identity (e.g., serial
(e.g., serial number) as the server the client was configured to number) as the server the client was configured to expect.
expect.
Considerations not associated with server authentication follow next. Considerations not associated with server authentication follow next.
Internet facing hosts running NETCONF or RESTCONF call home will be Internet facing hosts running NETCONF or RESTCONF call home will be
fingerprinted via scanning tools such as `zmap` [zmap]. Both SSH and 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 provide many ways in which a host can be fingerprinted. SSH and
TLS servers are fairly mature and able to withstand attacks, but SSH TLS servers are fairly mature and able to withstand attacks, but SSH
and TLS clients may not be as robust. Implementers and deployments and TLS clients may not be as robust. Implementers and deployments
need to ensure that software update mechanisms are provided so that need to ensure that software update mechanisms are provided so that
vulnerabilities can be fixed in a timely fashion. vulnerabilities can be fixed in a timely fashion.
An attacker could launch a denial of service (DoS) attack on the An attacker could launch a denial of service (DoS) attack on the
NETCONF/RESTCONF client by having it perform computationally NETCONF/RESTCONF client by having it perform computationally
expensive operations, before deducing that the attacker doesn't expensive operations, before deducing that the attacker doesn't
posses a valid key. For instance, in TLS 1.3 [draft-ietf-tls-tls13], possess a valid key. For instance, in TLS 1.3
the ClientHello message contains a Key Share value based on an [draft-ietf-tls-tls13], the ClientHello message contains a Key Share
expensive asymmetric key operation. Common precautions mitigating value based on an expensive asymmetric key operation. Common
DoS attacks are recommended, such as temporarily blacklisting the precautions mitigating DoS attacks are recommended, such as
source address after a set number of unsuccessful login attempts. temporarily blacklisting the source address after a set number of
unsuccessful login attempts.
When using call home with the RESTCONF protocol, special care is When using call home with the RESTCONF protocol, special care is
required when using some HTTP authentication schemes, especially the required when using some HTTP authentication schemes, especially the
Basic [RFC7617] and Digest [RFC7616] schemes, which convey a shared Basic [RFC7617] and Digest [RFC7616] schemes, which convey a shared
key. Implementations and deployments should be sure to review the secret (e.g., a password). Implementations and deployments should be
Security Considerations section in the RFC for any HTTP client sure to review the Security Considerations section in the RFC for any
authentication scheme used. HTTP client authentication scheme used.
6. IANA Considerations 6. IANA Considerations
This RFC requests that IANA assigns three TCP port numbers in the This RFC requests that IANA assigns three TCP port numbers in the
"Registered Port Numbers" range with the service names "netconf-ch- "Registered Port Numbers" range with the service names "netconf-ch-
ssh", "netconf-ch-tls", and "restconf-ch-tls". These ports will be ssh", "netconf-ch-tls", and "restconf-ch-tls". These ports will be
the default ports for NETCONF Call Home and RESTCONF Call Home the default ports for NETCONF Call Home and RESTCONF Call Home
protocols. Below is the registration template following the rules in protocols. Below is the registration template following the rules in
[RFC6335]. [RFC6335].
 End of changes. 13 change blocks. 
36 lines changed or deleted 36 lines changed or added

This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/