draft-ietf-netmod-system-mgmt-07.txt | rfc7317.txt | |||
---|---|---|---|---|
Network Working Group A. Bierman | Internet Engineering Task Force (IETF) A. Bierman | |||
Internet-Draft YumaWorks | Request for Comments: 7317 YumaWorks | |||
Intended status: Standards Track M. Bjorklund | Category: Standards Track M. Bjorklund | |||
Expires: December 19, 2013 Tail-f Systems | ISSN: 2070-1721 Tail-f Systems | |||
June 17, 2013 | August 2014 | |||
YANG Data Model for System Management | A YANG Data Model for System Management | |||
draft-ietf-netmod-system-mgmt-07 | ||||
Abstract | Abstract | |||
This document defines a YANG data model for the configuration and | This document defines a YANG data model for the configuration and | |||
identification of some common system properties within a device | identification of some common system properties within a device | |||
containing a NETCONF server. This includes data node definitions for | containing a Network Configuration Protocol (NETCONF) server. This | |||
system identification, time-of-day management, user management, DNS | document also includes data node definitions for system | |||
resolver configuration, and some protocol operations for system | identification, time-of-day management, user management, DNS resolver | |||
management. | configuration, and some protocol operations for system management. | |||
Status of this Memo | ||||
This Internet-Draft is submitted in full conformance with the | Status of This Memo | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | This is an Internet Standards Track document. | |||
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 | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 5741. | ||||
This Internet-Draft will expire on December 19, 2013. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
http://www.rfc-editor.org/info/rfc7317. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2014 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 | |||
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 . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction ....................................................2 | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology ................................................3 | |||
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Tree Diagrams ..............................................3 | |||
2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Objectives ......................................................4 | |||
2.1. System Identification . . . . . . . . . . . . . . . . . . 5 | 2.1. System Identification ......................................4 | |||
2.2. System Time Management . . . . . . . . . . . . . . . . . . 5 | 2.2. System Time Management .....................................4 | |||
2.3. User Authentication . . . . . . . . . . . . . . . . . . . 5 | 2.3. User Authentication ........................................4 | |||
2.4. DNS Resolver . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.4. DNS Resolver ...............................................5 | |||
2.5. System Control . . . . . . . . . . . . . . . . . . . . . . 6 | 2.5. System Control .............................................5 | |||
3. System Data Model . . . . . . . . . . . . . . . . . . . . . . 7 | 3. System Data Model ...............................................5 | |||
3.1. System Identification . . . . . . . . . . . . . . . . . . 7 | 3.1. System Identification ......................................5 | |||
3.2. System Time Management . . . . . . . . . . . . . . . . . . 7 | 3.2. System Time Management .....................................6 | |||
3.3. DNS Resolver Model . . . . . . . . . . . . . . . . . . . . 7 | 3.3. DNS Resolver Model .........................................7 | |||
3.4. RADIUS Client Model . . . . . . . . . . . . . . . . . . . 8 | 3.4. RADIUS Client Model ........................................7 | |||
3.5. User Authentication Model . . . . . . . . . . . . . . . . 8 | 3.5. User Authentication Model ..................................8 | |||
3.5.1. SSH Public Key Authentication . . . . . . . . . . . . 9 | 3.5.1. SSH Public Key Authentication .......................8 | |||
3.5.2. Local User Password Authentication . . . . . . . . . . 9 | 3.5.2. Local User Password Authentication ..................9 | |||
3.5.3. RADIUS Password Authentication . . . . . . . . . . . . 10 | 3.5.3. RADIUS Password Authentication ......................9 | |||
3.6. System Control . . . . . . . . . . . . . . . . . . . . . . 10 | 3.6. System Control .............................................9 | |||
4. System YANG module . . . . . . . . . . . . . . . . . . . . . . 11 | 4. Relationship to the SNMPv2-MIB .................................10 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | 5. IANA Crypt Hash YANG Module ....................................10 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 30 | 6. System YANG Module .............................................13 | |||
7. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 7. IANA Considerations ............................................31 | |||
7.1. 00-01 . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 8. Security Considerations ........................................31 | |||
7.2. 01-02 . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 9. References .....................................................33 | |||
7.3. 02-03 . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 9.1. Normative References ......................................33 | |||
7.4. 03-04 . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 9.2. Informative References ....................................35 | |||
7.5. 04-05 . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | ||||
7.6. 05-06 . . . . . . . . . . . . . . . . . . . . . . . . . . 33 | ||||
7.7. 06-07 . . . . . . . . . . . . . . . . . . . . . . . . . . 33 | ||||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 35 | ||||
8.1. Normative References . . . . . . . . . . . . . . . . . . . 35 | ||||
8.2. Informative References . . . . . . . . . . . . . . . . . . 36 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 37 | ||||
1. Introduction | 1. Introduction | |||
This document defines a YANG [RFC6020] data model for the | This document defines a YANG [RFC6020] data model for the | |||
configuration and identification of some common properties within a | configuration and identification of some common properties within a | |||
device containing a NETCONF server. | device containing a Network Configuration Protocol (NETCONF) server. | |||
Devices that are managed by NETCONF and perhaps other mechanisms have | Devices that are managed by NETCONF and perhaps other mechanisms have | |||
common properties that need to be configured and monitored in a | common properties that need to be configured and monitored in a | |||
standard way. | standard way. | |||
The "ietf-system" YANG module defined in this document provides the | The "ietf-system" YANG module defined in this document provides the | |||
following features: | following features: | |||
o system identification configuration and monitoring | o configuration and monitoring of system identification | |||
o system time-of-day configuration and monitoring | ||||
o user authentication configuration | o configuration and monitoring of system time-of-day | |||
o local users configuration | o configuration of user authentication | |||
o configuration of local users | ||||
o DNS resolver configuration | o configuration of the DNS resolver | |||
o system control operations (shutdown, restart, setting time) | o system control operations (shutdown, restart, setting time) | |||
1.1. Terminology | 1.1. Terminology | |||
The keywords "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 | |||
14, [RFC2119]. | BCP 14, [RFC2119]. | |||
The following terms are defined in [RFC6241] and are not redefined | ||||
here: | ||||
o client | ||||
o configuration data | ||||
o server | ||||
o state data | ||||
The following terms are defined in [RFC6020] and are not redefined | ||||
here: | ||||
o augment | ||||
o data model | ||||
1.2. Tree Diagrams | 1.2. Tree Diagrams | |||
A simplified graphical representation of the data model is used in | A simplified graphical representation of the data model is used in | |||
this document. The meaning of the symbols in these diagrams is as | this document. The meaning of the symbols in these diagrams is as | |||
follows: | follows: | |||
o Brackets "[" and "]" enclose list keys. | o Brackets "[" and "]" enclose list keys. | |||
o Abbreviations before data node names: "rw" means configuration | o Abbreviations before data node names: "rw" means configuration | |||
(read-write) and "ro" state data (read-only). | (read-write), and "ro" means state data (read-only). | |||
o Symbols after data node names: "?" means an optional node and "*" | o Symbols after data node names: "?" means an optional node, "!" | |||
denotes a "list" and "leaf-list". | means a presence container, and "*" denotes a list and leaf-list. | |||
o Parentheses enclose choice and case nodes, and case nodes are also | o Parentheses enclose choice and case nodes, and case nodes are also | |||
marked with a colon (":"). | marked with a colon (":"). | |||
o Ellipsis ("...") stands for contents of subtrees that are not | o Ellipsis ("...") stands for contents of subtrees that are not | |||
shown. | shown. | |||
2. Objectives | 2. Objectives | |||
2.1. System Identification | 2.1. System Identification | |||
There are many common properties used to identify devices, operating | There are many common properties used to identify devices, operating | |||
systems, software versions, etc. that need to be supported in the | systems, software versions, etc. that need to be supported in the | |||
system data module. These objects are defined as operational state | system data module. These objects are defined as operational state | |||
data and the information returned by the server is intended to be | data, and the information returned by the server is intended to be | |||
specific to the device vendor. | specific to the device vendor. | |||
Some user-configurable administrative strings are also provided, such | Some user-configurable administrative strings are also provided, such | |||
as the system location and description. | as the system location and description. | |||
2.2. System Time Management | 2.2. System Time Management | |||
The management of the date and time used by the system need to be | Management of the date and time used by the system needs to be | |||
supported. Use of one or more NTP servers to automatically set the | supported. The use of one or more NTP servers to automatically set | |||
system date and time need to be possible. Utilization of the | the system date and time needs to be possible. Utilization of the | |||
Timezone database [RFC6557] also need to be supported. It should be | Time Zone Database [RFC6557] also needs to be supported. It should | |||
possible for the server, as well as clients, to configure the system | be possible to configure the system to use NTP. | |||
to use NTP. | ||||
2.3. User Authentication | 2.3. User Authentication | |||
The authentication mechanism need to support password authentication | The authentication mechanism needs to support password authentication | |||
over RADIUS, to support deployment scenarios with centralized | over RADIUS in order to support deployment scenarios with centralized | |||
authentication servers. Additionally, local users need to be | authentication servers. Additionally, for scenarios when no | |||
supported, for scenarios when no centralized authentication server | centralized authentication server exists or for situations where the | |||
exists, or for situations where the centralized authentication server | centralized authentication server cannot be reached from the device, | |||
cannot be reached from the device. | local users need to be supported. | |||
Since the mandatory transport protocol for NETCONF is SSH [RFC6242] | Since the mandatory transport protocol for NETCONF is Secure Shell | |||
the authentication model need to support SSH's "publickey" and | (SSH) [RFC6242], the authentication model needs to support SSH's | |||
"password" authentication methods [RFC4252]. | "publickey" and "password" authentication methods [RFC4252]. | |||
The model for authentication configuration should be flexible enough | The model for authentication configuration should be flexible enough | |||
to support authentication methods defined by other standard documents | to support authentication methods defined by other standards | |||
or by vendors. It should be possible for the server, as well as | documents or by vendors. It should be possible to configure the | |||
clients, to configure the system authentication properties. | system authentication properties. | |||
2.4. DNS Resolver | 2.4. DNS Resolver | |||
The configuration of the DNS resolver within the system containing | The configuration of the DNS resolver within the system containing | |||
the NETCONF server is required to control how domain names are | the NETCONF server is required in order to control how domain names | |||
resolved. An order list of DNS servers and some common parameters | are resolved. | |||
such as the list of domains to search when resolving a host name. | ||||
2.5. System Control | 2.5. System Control | |||
A few operations are needed to support common tasks such as | A few operations are needed to support common tasks such as | |||
restarting the device or setting the system date and time. | restarting the device or setting the system date and time. | |||
3. System Data Model | 3. System Data Model | |||
3.1. System Identification | 3.1. System Identification | |||
The data model for system identification has the following structure: | The data model for system identification has the following structure: | |||
+--rw system | +--rw system | |||
+--rw contact? string | | +--rw contact? string | |||
+--rw hostname? inet:domain-name | | +--rw hostname? inet:domain-name | |||
+--rw location? string | | +--rw location? string | |||
+--ro system-state | ||||
+--ro platform | +--ro platform | |||
+--ro os-name? string | +--ro os-name? string | |||
+--ro os-release? string | +--ro os-release? string | |||
+--ro os-version? string | +--ro os-version? string | |||
+--ro machine? string | +--ro machine? string | |||
3.2. System Time Management | 3.2. System Time Management | |||
The data model for system time management has the following | The data model for system time management has the following | |||
structure: | structure: | |||
+--rw system | +--rw system | |||
+--rw clock | | +--rw clock | |||
| +--ro current-datetime? yang:date-and-time | | | +--rw (timezone)? | |||
| +--ro boot-datetime? yang:date-and-time | | | +--:(timezone-name) | |||
| +--rw (timezone)? | | | | +--rw timezone-name? timezone-name | |||
| +--:(timezone-location) | | | +--:(timezone-utc-offset) | |||
| | +--rw timezone-location? ianatz:iana-timezone | | | +--rw timezone-utc-offset? int16 | |||
| +--:(timezone-utc-offset) | | +--rw ntp! | |||
| +--rw timezone-utc-offset? int16 | | +--rw enabled? boolean | |||
+--rw ntp | | +--rw server* [name] | |||
+--rw enabled? boolean | | +--rw name string | |||
+--rw server* [name] | | +--rw (transport) | |||
+--rw name string | | | +--:(udp) | |||
+--rw (transport) | | | +--rw udp | |||
| +--:(udp) | | | +--rw address inet:host | |||
| +--rw udp | | | +--rw port? inet:port-number | |||
| +--rw address inet:host | | +--rw association-type? enumeration | |||
| +--rw port? inet:port-number | | +--rw iburst? boolean | |||
+--rw association-type? enumeration | | +--rw prefer? boolean | |||
+--rw iburst? boolean | +--ro system-state | |||
+--rw prefer? boolean | +--ro clock | |||
+--ro current-datetime? yang:date-and-time | ||||
+--ro boot-datetime? yang:date-and-time | ||||
New "case" statements can be added in future revisions of this data | ||||
model, or through augmentation by some other data model. | ||||
3.3. DNS Resolver Model | 3.3. DNS Resolver Model | |||
The data model for configuration of the DNS resolver has the | The data model for configuration of the DNS resolver has the | |||
following structure: | following structure: | |||
+--rw system | +--rw system | |||
+--rw dns-resolver | +--rw dns-resolver | |||
+--rw search* inet:domain-name | +--rw search* inet:domain-name | |||
+--rw server* [name] | +--rw server* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw (transport) | | +--rw (transport) | |||
| +--:(udp) | | +--:(udp-and-tcp) | |||
| +--rw udp | | +--udp-and-tcp | |||
| +--rw address inet:ip-address | | +--rw address inet:ip-address | |||
| +--rw port? inet:port-number | | +--rw port? inet:port-number | |||
+--rw options | +--rw options | |||
+--rw timeout? uint8 | +--rw timeout? uint8 | |||
+--rw attempts? uint8 | +--rw attempts? uint8 | |||
New "case" statements can be added in future revisions of this data | ||||
model, or through augmentation by some other data model. | ||||
3.4. RADIUS Client Model | 3.4. RADIUS Client Model | |||
The data model for configuration of the RADIUS client has the | The data model for configuration of the RADIUS client has the | |||
following structure: | following structure: | |||
+--rw system | +--rw system | |||
+--rw radius | +--rw radius | |||
+--rw server* [name] | +--rw server* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw (transport) | | +--rw (transport) | |||
| | +--:(udp) | | | +--:(udp) | |||
| | +--rw udp | | | +--rw udp | |||
| | +--rw address inet:host | | | +--rw address inet:host | |||
| | +--rw authentication-port? inet:port-number | | | +--rw authentication-port? inet:port-number | |||
| | +--rw shared-secret string | | | +--rw shared-secret string | |||
| +--rw authentication-type? identityref | | +--rw authentication-type? identityref | |||
+--rw options | +--rw options | |||
+--rw timeout? uint8 | +--rw timeout? uint8 | |||
+--rw attempts? uint8 | +--rw attempts? uint8 | |||
New "case" statements can be added in future revisions of this data | ||||
model, or through augmentation by some other data model. | ||||
3.5. User Authentication Model | 3.5. User Authentication Model | |||
This document defines three authentication methods for use with | This document defines three authentication methods for use with | |||
NETCONF: | NETCONF: | |||
o publickey for local users over SSH | o publickey for local users over SSH | |||
o password for local users over any transport | o password for local users over any secure transport | |||
o password for RADIUS users over any transport | o password for RADIUS users over any secure transport | |||
Additional methods can be defined by other standard documents or by | Additional methods can be defined by other standards documents or by | |||
vendors. | vendors. | |||
This document defines two optional YANG features, "local-users" and | This document defines two optional YANG features: "local-users" and | |||
"radius-authentication", which the server advertises to indicate | "radius-authentication", which the server advertises to indicate | |||
support for configuring local users on the device, and support for | support for configuring local users on the device and support for | |||
using RADIUS for authentication, respectively. | using RADIUS for authentication, respectively. | |||
The authentication parameters defined in this document are primarily | The authentication parameters defined in this document are primarily | |||
used to configure authentication of NETCONF users, but MAY also be | used to configure authentication of NETCONF users but MAY also be | |||
used by other interfaces, e.g., a Command Line Interface or a Web- | used by other interfaces, e.g., a command line interface or a web- | |||
based User Interface. | based user interface. | |||
The data model for user authentication has the following structure: | The data model for user authentication has the following structure: | |||
+--rw system | +--rw system | |||
+--rw authentication | +--rw authentication | |||
+--rw user-authentication-order* identityref | +--rw user-authentication-order* identityref | |||
+--rw user* [name] | +--rw user* [name] | |||
+--rw name string | +--rw name string | |||
+--rw password? crypt-hash | +--rw password? ianach:crypt-hash | |||
+--rw ssh-key* [name] | +--rw authorized-key* [name] | |||
+--rw name string | +--rw name string | |||
+--rw algorithm string | +--rw algorithm string | |||
+--rw key-data binary | +--rw key-data binary | |||
3.5.1. SSH Public Key Authentication | 3.5.1. SSH Public Key Authentication | |||
If the NETCONF server advertises the "local-users" feature, | If the NETCONF server advertises the "local-users" feature, | |||
configuration of local users and their SSH public keys is supported | configuration of local users and their SSH public keys is supported | |||
in the /system/authentication/user list. | in the /system/authentication/user list. | |||
Public key authentication is requested by the SSH client. If the | Public key authentication is requested by the SSH client. If the | |||
"local-users" feature is supported, then when a NETCONF client starts | "local-users" feature is supported, then when a NETCONF client starts | |||
an SSH session towards the server using the "publickey" | an SSH session towards the server using the "publickey" | |||
authentication "method name" [RFC4252], the SSH server looks up the | authentication "method name" [RFC4252], the SSH server looks up the | |||
user name given in the SSH authentication request in the /system/ | user name given in the SSH authentication request in the | |||
authentication/user list, and verifies the key as described in | /system/authentication/user list and verifies the key as described in | |||
[RFC4253]. | [RFC4253]. | |||
3.5.2. Local User Password Authentication | 3.5.2. Local User Password Authentication | |||
If the NETCONF server advertises the "local-users" feature, | If the NETCONF server advertises the "local-users" feature, | |||
configuration of local users and their passwords is supported in the | configuration of local users and their passwords is supported in the | |||
/system/authentication/user list. | /system/authentication/user list. | |||
For NETCONF transport protocols that support password authentication, | For NETCONF transport protocols that support password authentication, | |||
the leaf-list "user-authentication-order" is used to control if local | the leaf-list "user-authentication-order" is used to control whether | |||
user password authentication should be used. | or not local user password authentication should be used. | |||
In SSH, password authentication is requested by the client. Other | In SSH, password authentication is requested by the client. Other | |||
NETCONF transport protocols MAY also support password authentication. | NETCONF transport protocols MAY also support password authentication. | |||
When local user password authentication is requested, the NETCONF | When local user password authentication is requested, the NETCONF | |||
transport looks up the user name provided by the client in the | transport looks up the user name provided by the client in the | |||
/system/authentication/user list, and verifies the password. | /system/authentication/user list and verifies the password. | |||
3.5.3. RADIUS Password Authentication | 3.5.3. RADIUS Password Authentication | |||
If the NETCONF server advertises the "radius-authentication" feature, | If the NETCONF server advertises the "radius-authentication" feature, | |||
the device supports user authentication using RADIUS. | the device supports user authentication using RADIUS. | |||
For NETCONF transport protocols that support password authentication, | For NETCONF transport protocols that support password authentication, | |||
the leaf-list "user-authentication-order" is used to control if | the leaf-list "user-authentication-order" is used to control whether | |||
RADIUS password authentication should be used. | or not RADIUS password authentication should be used. | |||
In SSH, password authentication is requested by the client. Other | In SSH, password authentication is requested by the client. Other | |||
NETCONF transport protocols MAY also support password authentication. | NETCONF transport protocols MAY also support password authentication. | |||
3.6. System Control | 3.6. System Control | |||
Two protocol operations are included to restart or shutdown the | The following operations are defined: | |||
set-current-datetime | ||||
system-restart | ||||
system-shutdown | ||||
Two protocol operations are included to restart or shut down the | ||||
system. The 'system-restart' operation can be used to restart the | system. The 'system-restart' operation can be used to restart the | |||
entire system (not just the NETCONF server). The 'system-shutdown' | entire system (not just the NETCONF server). The 'system-shutdown' | |||
operation can be used to power off the entire system. | operation can be used to power off the entire system. | |||
4. System YANG module | 4. Relationship to the SNMPv2-MIB | |||
This YANG module imports YANG extensions from [RFC6536], and imports | ||||
YANG types from [I-D.ietf-netmod-rfc6021-bis] and | ||||
[I-D.ietf-netmod-iana-timezones]. It also references [RFC1321], | ||||
[RFC2865], [RFC3418], [RFC5607], [IEEE-1003.1-2008], and | ||||
[FIPS.180-3.2008]. | ||||
RFC Ed.: update the date below with the date of RFC publication and | ||||
remove this note. | ||||
<CODE BEGINS> file "ietf-system@2013-06-17.yang" | If a device implements the SNMPv2-MIB [RFC3418], there are two | |||
objects that MAY be mapped by the implementation. See the YANG | ||||
module definition in Section 6 for details. The following table | ||||
lists the YANG data nodes with corresponding objects in the | ||||
SNMPv2-MIB. | ||||
module ietf-system { | +----------------+-------------------+ | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-system"; | | YANG data node | SNMPv2-MIB object | | |||
prefix "sys"; | +----------------+-------------------+ | |||
| contact | sysContact | | ||||
| location | sysLocation | | ||||
+----------------+-------------------+ | ||||
import ietf-yang-types { | YANG Interface Configuration Data Nodes and | |||
prefix yang; | Related SNMPv2-MIB Objects | |||
} | ||||
import ietf-inet-types { | 5. IANA Crypt Hash YANG Module | |||
prefix inet; | ||||
} | ||||
import ietf-netconf-acm { | This YANG module references [RFC1321], [IEEE-1003.1-2008], and | |||
prefix nacm; | [FIPS.180-4.2012]. | |||
} | ||||
import iana-timezones { | <CODE BEGINS> file "iana-crypt-hash@2014-08-06.yang" | |||
prefix ianatz; | ||||
} | ||||
organization | module iana-crypt-hash { | |||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | namespace "urn:ietf:params:xml:ns:yang:iana-crypt-hash"; | |||
prefix ianach; | ||||
organization "IANA"; | ||||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | " Internet Assigned Numbers Authority | |||
WG List: <mailto:netmod@ietf.org> | ||||
WG Chair: David Kessens | ||||
<mailto:david.kessens@nsn.com> | ||||
WG Chair: Juergen Schoenwaelder | Postal: ICANN | |||
<mailto:j.schoenwaelder@jacobs-university.de> | 12025 Waterfront Drive, Suite 300 | |||
Los Angeles, CA 90094-2536 | ||||
United States | ||||
Editor: Andy Bierman | Tel: +1 310 301 5800 | |||
<mailto:andy@yumaworks.com> | E-Mail: iana@iana.org>"; | |||
description | ||||
"This YANG module defines a type for storing passwords | ||||
using a hash function and features to indicate which hash | ||||
functions are supported by an implementation. | ||||
Editor: Martin Bjorklund | The latest revision of this YANG module can be obtained from | |||
<mailto:mbj@tail-f.com>"; | the IANA web site. | |||
description | Requests for new values should be made to IANA via | |||
"This module contains a collection of YANG definitions for the | email (iana@iana.org). | |||
configuration and identification of some common system | ||||
properties within a device containing a NETCONF server. This | ||||
includes data node definitions for system identification, | ||||
time-of-day management, user management, DNS resolver | ||||
configuration, and some protocol operations for system | ||||
management. | ||||
Copyright (c) 2013 IETF Trust and the persons identified as | Copyright (c) 2014 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | The initial version of this YANG module is part of RFC 7317; | |||
the RFC itself for full legal notices."; | see the RFC itself for full legal notices."; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove this | ||||
// note. | ||||
// RFC Ed.: remove this note | ||||
// Note: extracted from draft-ietf-netmod-system-mgmt-07.txt | ||||
// RFC Ed.: update the date below with the date of RFC publication | revision 2014-08-06 { | |||
// and remove this note. | ||||
revision "2013-06-17" { | ||||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for System Management"; | "RFC 7317: A YANG Data Model for System Management"; | |||
} | } | |||
/* | ||||
* Typedefs | ||||
*/ | ||||
typedef crypt-hash { | typedef crypt-hash { | |||
type string { | type string { | |||
pattern | pattern | |||
'$0$.*' | '$0$.*' | |||
+ '|$1$[a-zA-Z0-9./]{1,8}$[a-zA-Z0-9./]{22}' | + '|$1$[a-zA-Z0-9./]{1,8}$[a-zA-Z0-9./]{22}' | |||
+ '|$5$(rounds=\d+$)?[a-zA-Z0-9./]{1,16}$[a-zA-Z0-9./]{43}' | + '|$5$(rounds=\d+$)?[a-zA-Z0-9./]{1,16}$[a-zA-Z0-9./]{43}' | |||
+ '|$6$(rounds=\d+$)?[a-zA-Z0-9./]{1,16}$[a-zA-Z0-9./]{86}'; | + '|$6$(rounds=\d+$)?[a-zA-Z0-9./]{1,16}$[a-zA-Z0-9./]{86}'; | |||
} | } | |||
description | description | |||
"The crypt-hash type is used to store passwords using | "The crypt-hash type is used to store passwords using | |||
a hash function. The algorithms for applying the hash | a hash function. The algorithms for applying the hash | |||
function and encoding the result are implemented in | function and encoding the result are implemented in | |||
various UNIX systems as the function crypt(3). | various UNIX systems as the function crypt(3). | |||
skipping to change at page 13, line 29 | skipping to change at page 12, line 7 | |||
$<id>$<parameter>$<salt>$<password hash> | $<id>$<parameter>$<salt>$<password hash> | |||
The '$0$' prefix signals that the value is clear text. When | The '$0$' prefix signals that the value is clear text. When | |||
such a value is received by the server, a hash value is | such a value is received by the server, a hash value is | |||
calculated, and the string '$<id>$<salt>$' or | calculated, and the string '$<id>$<salt>$' or | |||
$<id>$<parameter>$<salt>$ is prepended to the result. This | $<id>$<parameter>$<salt>$ is prepended to the result. This | |||
value is stored in the configuration data store. | value is stored in the configuration data store. | |||
If a value starting with '$<id>$', where <id> is not '0', is | If a value starting with '$<id>$', where <id> is not '0', is | |||
received, the server knows that the value already represents a | received, the server knows that the value already represents a | |||
hashed value, and stores it as is in the data store. | hashed value and stores it 'as is' in the data store. | |||
When a server needs to verify a password given by a user, it | When a server needs to verify a password given by a user, it | |||
finds the stored password hash string for that user, extracts | finds the stored password hash string for that user, extracts | |||
the salt, and calculates the hash with the salt and given | the salt, and calculates the hash with the salt and given | |||
password as input. If the calculated hash value is the same | password as input. If the calculated hash value is the same | |||
as the stored value, the password given by the client is | as the stored value, the password given by the client is | |||
accepted. | accepted. | |||
This type defines the following hash functions: | This type defines the following hash functions: | |||
id | hash function | feature | id | hash function | feature | |||
---+---------------+------------------- | ---+---------------+------------------- | |||
1 | MD5 | crypt-hash-md5 | 1 | MD5 | crypt-hash-md5 | |||
5 | SHA-256 | crypt-hash-sha-256 | 5 | SHA-256 | crypt-hash-sha-256 | |||
6 | SHA-512 | crypt-hash-sha-512 | 6 | SHA-512 | crypt-hash-sha-512 | |||
The server indicates support for the different hash functions | The server indicates support for the different hash functions | |||
by advertising the corresponding feature."; | by advertising the corresponding feature."; | |||
reference | reference | |||
"IEEE Std 1003.1-2008 - crypt() function | "IEEE Std 1003.1-2008 - crypt() function | |||
Wikipedia: http://en.wikipedia.org/wiki/Crypt_(C) | ||||
RFC 1321: The MD5 Message-Digest Algorithm | RFC 1321: The MD5 Message-Digest Algorithm | |||
FIPS.180-3.2008: Secure Hash Standard"; | FIPS.180-4.2012: Secure Hash Standard (SHS)"; | |||
} | ||||
/* | ||||
* Features | ||||
*/ | ||||
feature radius { | ||||
description | ||||
"Indicates that the device can be configured as a RADIUS | ||||
client."; | ||||
reference | ||||
"RFC 2865: Remote Authentication Dial In User Service " | ||||
+ "(RADIUS)"; | ||||
} | ||||
feature authentication { | ||||
description | ||||
"Indicates that the device supports configuration | ||||
for user authentication."; | ||||
} | ||||
feature local-users { | ||||
if-feature authentication; | ||||
description | ||||
"Indicates that the device supports configuration of | ||||
local user authentication."; | ||||
} | ||||
feature radius-authentication { | ||||
if-feature radius; | ||||
if-feature authentication; | ||||
description | ||||
"Indicates that the device supports configuration of user | ||||
authentication over RADIUS."; | ||||
reference | ||||
"RFC 2865: Remote Authentication Dial In User Service (RADIUS) | ||||
RFC 5607: Remote Authentication Dial-In User Service (RADIUS) | ||||
Authorization for Network Access Server (NAS) | ||||
Management"; | ||||
} | } | |||
feature crypt-hash-md5 { | feature crypt-hash-md5 { | |||
description | description | |||
"Indicates that the device supports the MD5 | "Indicates that the device supports the MD5 | |||
hash function in 'crypt-hash' values"; | hash function in 'crypt-hash' values."; | |||
reference "RFC 1321: The MD5 Message-Digest Algorithm"; | reference "RFC 1321: The MD5 Message-Digest Algorithm"; | |||
} | } | |||
feature crypt-hash-sha-256 { | feature crypt-hash-sha-256 { | |||
description | description | |||
"Indicates that the device supports the SHA-256 | "Indicates that the device supports the SHA-256 | |||
hash function in 'crypt-hash' values"; | hash function in 'crypt-hash' values."; | |||
reference "FIPS.180-3.2008: Secure Hash Standard"; | reference "FIPS.180-4.2012: Secure Hash Standard (SHS)"; | |||
} | } | |||
feature crypt-hash-sha-512 { | feature crypt-hash-sha-512 { | |||
description | description | |||
"Indicates that the device supports the SHA-512 | "Indicates that the device supports the SHA-512 | |||
hash function in 'crypt-hash' values"; | hash function in 'crypt-hash' values."; | |||
reference "FIPS.180-3.2008: Secure Hash Standard"; | reference "FIPS.180-4.2012: Secure Hash Standard (SHS)"; | |||
} | } | |||
feature ntp { | } | |||
description | ||||
"Indicates that the device can be configured | ||||
to use one or more NTP servers to set the | ||||
system date and time."; | ||||
} | ||||
feature ntp-udp-port { | <CODE ENDS> | |||
description | ||||
"Indicates that the device supports the configuration of | ||||
the UDP port for NTP servers. | ||||
This is a 'feature' since many implementations do not support | 6. System YANG Module | |||
any other port than the default port."; | ||||
} | ||||
feature timezone-location { | This YANG module imports YANG extensions from [RFC6536] and imports | |||
description | YANG types from [RFC6991]. It also references [RFC1035], [RFC2865], | |||
"Indicates that the local timezone on the device | [RFC3418], [RFC5607], [RFC5966], and [RFC6557]. | |||
can be configured to use the TZ database | ||||
to set the timezone and manage daylight savings time."; | ||||
reference | ||||
"TZ Database http://www.twinsun.com/tz/tz-link.htm | ||||
Maintaining the Timezone Database | ||||
RFC 6557 (BCP 175)"; | ||||
} | ||||
feature dns-udp-port { | <CODE BEGINS> file "ietf-system@2014-08-06.yang" | |||
description | ||||
"Indicates that the device supports the configuration of | ||||
the UDP port for DNS servers. | ||||
This is a 'feature' since many implementations do not support | module ietf-system { | |||
any other port than the default port."; | namespace "urn:ietf:params:xml:ns:yang:ietf-system"; | |||
prefix "sys"; | ||||
} | import ietf-yang-types { | |||
prefix yang; | ||||
} | ||||
/* | import ietf-inet-types { | |||
* Identities | prefix inet; | |||
*/ | } | |||
identity authentication-method { | import ietf-netconf-acm { | |||
description | prefix nacm; | |||
"Base identity for user authentication methods."; | } | |||
} | ||||
identity radius { | import iana-crypt-hash { | |||
base authentication-method; | prefix ianach; | |||
description | } | |||
"Indicates user authentication using RADIUS."; | ||||
reference | ||||
"RFC 2865: Remote Authentication Dial In User Service (RADIUS) | ||||
RFC 5607: Remote Authentication Dial-In User Service (RADIUS) | ||||
Authorization for Network Access Server (NAS) | ||||
Management"; | ||||
} | ||||
identity local-users { | organization | |||
base authentication-method; | "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | |||
description | ||||
"Indicates password-based authentication of locally | ||||
configured users."; | ||||
} | ||||
identity radius-authentication-type { | contact | |||
description | "WG Web: <http://tools.ietf.org/wg/netmod/> | |||
"Base identity for RADIUS authentication types."; | WG List: <mailto:netmod@ietf.org> | |||
} | ||||
identity radius-pap { | WG Chair: Thomas Nadeau | |||
base radius-authentication-type; | <mailto:tnadeau@lucidvision.com> | |||
description | ||||
"The device requests PAP authentication from the RADIUS | ||||
server."; | ||||
reference | ||||
"RFC 2865: Remote Authentication Dial In User Service"; | ||||
} | ||||
identity radius-chap { | WG Chair: Juergen Schoenwaelder | |||
base radius-authentication-type; | <mailto:j.schoenwaelder@jacobs-university.de> | |||
description | ||||
"The device requests CHAP authentication from the RADIUS | ||||
server."; | ||||
reference | Editor: Andy Bierman | |||
"RFC 2865: Remote Authentication Dial In User Service"; | <mailto:andy@yumaworks.com> | |||
} | ||||
/* | Editor: Martin Bjorklund | |||
* Top-level container | <mailto:mbj@tail-f.com>"; | |||
*/ | ||||
container system { | description | |||
description | "This module contains a collection of YANG definitions for the | |||
"System group configuration."; | configuration and identification of some common system | |||
properties within a device containing a NETCONF server. This | ||||
includes data node definitions for system identification, | ||||
time-of-day management, user management, DNS resolver | ||||
configuration, and some protocol operations for system | ||||
management. | ||||
leaf contact { | Copyright (c) 2014 IETF Trust and the persons identified as | |||
type string; | authors of the code. All rights reserved. | |||
description | ||||
"The administrator contact information for the system. | ||||
The server MAY restrict the size and characters in | ||||
order to maintain compatibility with the sysContact | ||||
MIB object."; | ||||
reference | ||||
"RFC 3418 - Management Information Base (MIB) for the | ||||
Simple Network Management Protocol (SNMP) | ||||
SNMPv2-MIB.sysContact"; | ||||
} | ||||
leaf hostname { | ||||
type inet:domain-name; | ||||
description | ||||
"The name of the host. This name can be a single domain | ||||
label, or the fully qualified domain name of the host."; | ||||
} | ||||
leaf location { | ||||
type string; | ||||
description | ||||
"The system location. The server MAY restrict the size | ||||
and characters in order to maintain compatibility with | ||||
the sysLocation MIB object."; | ||||
reference | ||||
"RFC 3418 - Management Information Base (MIB) for the | ||||
Simple Network Management Protocol (SNMP) | ||||
SNMPv2-MIB.sysLocation"; | ||||
} | ||||
container platform { | ||||
config false; | ||||
description | ||||
"Contains vendor-specific information for | ||||
identifying the system platform and operating system."; | ||||
reference | ||||
"IEEE Std 1003.1-2008 - sys/utsname.h"; | ||||
leaf os-name { | Redistribution and use in source and binary forms, with or | |||
type string; | without modification, is permitted pursuant to, and subject | |||
description | to the license terms contained in, the Simplified BSD License | |||
"The name of the operating system in use, | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
for example 'Linux'"; | Relating to IETF Documents | |||
reference | (http://trustee.ietf.org/license-info). | |||
"IEEE Std 1003.1-2008 - utsname.sysname"; | ||||
} | ||||
leaf os-release { | ||||
type string; | ||||
description | ||||
"The current release level of the operating | ||||
system in use. This string MAY indicate | ||||
the OS source code revision."; | ||||
reference | ||||
"IEEE Std 1003.1-2008 - utsname.release"; | ||||
} | ||||
leaf os-version { | ||||
type string; | ||||
description | ||||
"The current version level of the operating | ||||
system in use. This string MAY indicate | ||||
the specific OS build date and target variant | ||||
information."; | ||||
reference | ||||
"IEEE Std 1003.1-2008 - utsname.version"; | ||||
} | ||||
leaf machine { | ||||
type string; | ||||
description | ||||
"A vendor-specific identifier string representing | ||||
the hardware in use."; | ||||
reference | ||||
"IEEE Std 1003.1-2008 - utsname.machine"; | ||||
} | ||||
} | ||||
container clock { | ||||
description | ||||
"Configuration and monitoring of the system | ||||
date and time properties."; | ||||
leaf current-datetime { | This version of this YANG module is part of RFC 7317; see | |||
type yang:date-and-time; | the RFC itself for full legal notices."; | |||
config false; | ||||
description | ||||
"The current system date and time."; | ||||
} | ||||
leaf boot-datetime { | ||||
type yang:date-and-time; | ||||
config false; | ||||
description | ||||
"The system date and time when the system last restarted."; | ||||
} | ||||
choice timezone { | ||||
description | ||||
"The system timezone information."; | ||||
case timezone-location { | revision 2014-08-06 { | |||
if-feature timezone-location; | description | |||
leaf timezone-location { | "Initial revision."; | |||
type ianatz:iana-timezone; | reference | |||
description | "RFC 7317: A YANG Data Model for System Management"; | |||
"The TZ database location identifier string | } | |||
to use for the system, such as 'Europe/Stockholm'."; | ||||
} | ||||
} | ||||
case timezone-utc-offset { | ||||
leaf timezone-utc-offset { | ||||
type int16 { | ||||
range "-1500 .. 1500"; | ||||
} | ||||
units "minutes"; | ||||
description | ||||
"The number of minutes to add to UTC time to | ||||
identify the timezone for this system. For example, | ||||
'UTC - 8:00 hours' would be represented as '-480'. | ||||
Note that automatic daylight savings time adjustment | ||||
is not provided, if this object is used."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
container ntp { | /* | |||
if-feature ntp; | * Typedefs | |||
description | */ | |||
"Configuration of the NTP client."; | ||||
leaf enabled { | typedef timezone-name { | |||
type boolean; | type string; | |||
default true; | description | |||
description | "A time zone name as used by the Time Zone Database, | |||
"Indicates that the system should attempt | sometimes referred to as the 'Olson Database'. | |||
to synchronize the system clock with an | ||||
NTP server from the 'ntp/server' list."; | ||||
} | ||||
list server { | ||||
key name; | ||||
description | ||||
"List of NTP servers to use for | ||||
system clock synchronization. If '/system/ntp/enabled' | ||||
is 'true', then the system will attempt to | ||||
contact and utilize the specified NTP servers."; | ||||
leaf name { | The exact set of valid values is an implementation-specific | |||
type string; | matter. Client discovery of the exact set of time zone names | |||
description | for a particular server is out of scope."; | |||
"An arbitrary name for the NTP server."; | reference | |||
} | "RFC 6557: Procedures for Maintaining the Time Zone Database"; | |||
choice transport { | } | |||
mandatory true; | ||||
description | ||||
"The transport protocol specific parameters for this | ||||
server. | ||||
It is expected that new case statements will be added | /* | |||
over time to support other transport protocols."; | * Features | |||
case udp { | */ | |||
container udp { | ||||
description | ||||
"Contains UDP specific configuration parameters | ||||
for NTP."; | ||||
leaf address { | ||||
type inet:host; | ||||
mandatory true; | ||||
description | ||||
"The address of the NTP server."; | ||||
} | ||||
leaf port { | ||||
if-feature ntp-udp-port; | ||||
type inet:port-number; | ||||
default 123; | ||||
description | ||||
"The port number of the NTP server."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
leaf association-type { | ||||
type enumeration { | ||||
enum server { | ||||
description | ||||
"Use client association mode. This device | ||||
will not provide synchronization to the | ||||
configured NTP server."; | ||||
} | ||||
enum peer { | ||||
description | ||||
"Use symmetric active association mode. | ||||
This device may provide synchronization | ||||
to the configured NTP server."; | ||||
} | ||||
enum pool { | ||||
description | ||||
"Use client association mode with one or | ||||
more of the NTP servers found by DNS | ||||
resolution of the domain name given by | ||||
the 'address' leaf. This device will not | ||||
provide synchronization to the servers."; | ||||
} | ||||
} | ||||
default server; | ||||
description | ||||
"The desired association type for this NTP server."; | ||||
} | ||||
leaf iburst { | ||||
type boolean; | ||||
default false; | ||||
description | ||||
"Indicates whether this server should enable burst | ||||
synchronization or not."; | ||||
} | ||||
leaf prefer { | ||||
type boolean; | ||||
default false; | ||||
description | ||||
"Indicates whether this server should be preferred | ||||
or not."; | ||||
} | ||||
} | ||||
} | ||||
container dns-resolver { | feature radius { | |||
description | description | |||
"Configuration of the DNS resolver."; | "Indicates that the device can be configured as a RADIUS | |||
client."; | ||||
reference | ||||
"RFC 2865: Remote Authentication Dial In User Service (RADIUS)"; | ||||
} | ||||
leaf-list search { | feature authentication { | |||
type inet:domain-name; | description | |||
ordered-by user; | "Indicates that the device supports configuration of | |||
description | user authentication."; | |||
"An ordered list of domains to search when resolving | } | |||
a host name."; | ||||
} | feature local-users { | |||
list server { | if-feature authentication; | |||
key name; | description | |||
ordered-by user; | "Indicates that the device supports configuration of | |||
description | local user authentication."; | |||
"List of the DNS servers that the resolver should query. | } | |||
feature radius-authentication { | ||||
if-feature radius; | ||||
if-feature authentication; | ||||
description | ||||
"Indicates that the device supports configuration of user | ||||
authentication over RADIUS."; | ||||
reference | ||||
"RFC 2865: Remote Authentication Dial In User Service (RADIUS) | ||||
RFC 5607: Remote Authentication Dial-In User Service (RADIUS) | ||||
Authorization for Network Access Server (NAS) | ||||
Management"; | ||||
} | ||||
When the resolver is invoked by a calling application, it | feature ntp { | |||
sends the query to the first name server in this list. If | description | |||
no response has been received within 'timeout' seconds, | "Indicates that the device can be configured to use one or | |||
the resolver continues with the next server in the list. | more NTP servers to set the system date and time."; | |||
If no response is received from any server, the resolver | } | |||
continues with the first server again. When the resolver | ||||
has traversed the list 'attempts' times without receiving | ||||
any response, it gives up and returns an error to the | ||||
calling application. | ||||
Implementations MAY limit the number of entries in this | feature ntp-udp-port { | |||
list."; | if-feature ntp; | |||
description | ||||
"Indicates that the device supports the configuration of | ||||
the UDP port for NTP servers. | ||||
leaf name { | This is a 'feature', since many implementations do not support | |||
type string; | any port other than the default port."; | |||
description | } | |||
"An arbitrary name for the DNS server."; | ||||
} | ||||
choice transport { | ||||
mandatory true; | ||||
description | ||||
"The transport protocol specific parameters for this | ||||
server. | ||||
It is expected that new case statements will be added | feature timezone-name { | |||
over time to support other transport protocols."; | description | |||
case udp { | "Indicates that the local time zone on the device | |||
container udp { | can be configured to use the TZ database | |||
description | to set the time zone and manage daylight saving time."; | |||
"Contains UDP specific configuration parameters | reference | |||
for DNS."; | "RFC 6557: Procedures for Maintaining the Time Zone Database"; | |||
leaf address { | } | |||
type inet:ip-address; | ||||
mandatory true; | ||||
description | ||||
"The address of the DNS server."; | ||||
} | ||||
leaf port { | ||||
if-feature dns-udp-port; | ||||
type inet:port-number; | ||||
default 53; | ||||
description | ||||
"The port number of the DNS server."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
} | ||||
container options { | ||||
description | ||||
"Resolver options. The set of available options has been | ||||
limited to those that are generally available across | ||||
different resolver implementations, and generally | ||||
useful."; | ||||
leaf timeout { | ||||
type uint8 { | ||||
range "1..max"; | ||||
} | ||||
units "seconds"; | ||||
default "5"; | ||||
description | ||||
"The amount of time the resolver will wait for a | ||||
response from each remote name server before | ||||
retrying the query via a different name server."; | ||||
} | ||||
leaf attempts { | ||||
type uint8 { | ||||
range "1..max"; | ||||
} | ||||
default "2"; | ||||
description | ||||
"The number of times the resolver will send a query to | ||||
all its name servers before giving up and returning an | ||||
error to the calling application."; | ||||
} | ||||
} | ||||
} | ||||
container radius { | feature dns-udp-tcp-port { | |||
if-feature radius; | description | |||
"Indicates that the device supports the configuration of | ||||
the UDP and TCP port for DNS servers. | ||||
description | This is a 'feature', since many implementations do not support | |||
"Configuration of the RADIUS client."; | any port other than the default port."; | |||
} | ||||
/* | ||||
* Identities | ||||
*/ | ||||
list server { | identity authentication-method { | |||
key name; | description | |||
ordered-by user; | "Base identity for user authentication methods."; | |||
description | } | |||
"List of RADIUS servers used by the device. | ||||
When the RADIUS client is invoked by a calling | identity radius { | |||
application, it sends the query to the first server in | base authentication-method; | |||
this list. If no response has been received within | description | |||
'timeout' seconds, the client continues with the next | "Indicates user authentication using RADIUS."; | |||
server in the list. If no response is received from any | reference | |||
server, the client continues with the first server again. | "RFC 2865: Remote Authentication Dial In User Service (RADIUS) | |||
When the client has traversed the list 'attempts' times | RFC 5607: Remote Authentication Dial-In User Service (RADIUS) | |||
without receiving any response, it gives up and returns an | Authorization for Network Access Server (NAS) | |||
error to the calling application."; | Management"; | |||
} | ||||
leaf name { | identity local-users { | |||
type string; | base authentication-method; | |||
description | description | |||
"An arbitrary name for the RADIUS server."; | "Indicates password-based authentication of locally | |||
} | configured users."; | |||
choice transport { | } | |||
mandatory true; | ||||
description | ||||
"The transport protocol specific parameters | ||||
for this server. It is expected that new | ||||
case statements will be added over time to | ||||
support other transport protocols."; | ||||
case udp { | ||||
container udp { | ||||
description | ||||
"Contains UDP specific configuration parameters | ||||
for RADIUS."; | ||||
leaf address { | ||||
type inet:host; | ||||
mandatory true; | ||||
description | ||||
"The address of the RADIUS server."; | ||||
} | ||||
leaf authentication-port { | ||||
type inet:port-number; | ||||
default "1812"; | ||||
description | ||||
"The port number of the RADIUS server."; | ||||
} | ||||
leaf shared-secret { | ||||
type string; | ||||
mandatory true; | ||||
nacm:default-deny-all; | ||||
description | ||||
"The shared secret which is known to both the | ||||
RADIUS client and server."; | ||||
reference | ||||
"RFC 2865: Remote Authentication Dial In User | ||||
Service"; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
leaf authentication-type { | ||||
type identityref { | ||||
base radius-authentication-type; | ||||
} | ||||
default radius-pap; | ||||
description | ||||
"The authentication type requested from the RADIUS | ||||
server."; | ||||
} | ||||
} | ||||
container options { | ||||
description | ||||
"RADIUS client options."; | ||||
leaf timeout { | identity radius-authentication-type { | |||
type uint8 { | description | |||
range "1..max"; | "Base identity for RADIUS authentication types."; | |||
} | } | |||
units "seconds"; | ||||
default "5"; | ||||
description | ||||
"The number of seconds the device will wait for a | ||||
response from each RADIUS server before trying with a | ||||
different server."; | ||||
} | ||||
leaf attempts { | ||||
type uint8 { | ||||
range "1..max"; | ||||
} | ||||
default "2"; | ||||
description | ||||
"The number of times the device will send a query to | ||||
all its RADIUS servers before giving up."; | ||||
} | ||||
} | ||||
} | ||||
container authentication { | identity radius-pap { | |||
nacm:default-deny-write; | base radius-authentication-type; | |||
if-feature authentication; | description | |||
"The device requests Password Authentication Protocol (PAP) | ||||
authentication from the RADIUS server."; | ||||
reference | ||||
"RFC 2865: Remote Authentication Dial In User Service (RADIUS)"; | ||||
} | ||||
identity radius-chap { | ||||
base radius-authentication-type; | ||||
description | ||||
"The device requests Challenge Handshake Authentication | ||||
Protocol (CHAP) authentication from the RADIUS server."; | ||||
reference | ||||
"RFC 2865: Remote Authentication Dial In User Service (RADIUS)"; | ||||
} | ||||
/* | ||||
* Configuration data nodes | ||||
*/ | ||||
container system { | ||||
description | ||||
"System group configuration."; | ||||
leaf contact { | ||||
type string; | ||||
description | ||||
"The administrator contact information for the system. | ||||
A server implementation MAY map this leaf to the sysContact | ||||
MIB object. Such an implementation needs to use some | ||||
mechanism to handle the differences in size and characters | ||||
allowed between this leaf and sysContact. The definition of | ||||
such a mechanism is outside the scope of this document."; | ||||
reference | ||||
"RFC 3418: Management Information Base (MIB) for the | ||||
Simple Network Management Protocol (SNMP) | ||||
SNMPv2-MIB.sysContact"; | ||||
} | ||||
leaf hostname { | ||||
type inet:domain-name; | ||||
description | ||||
"The name of the host. This name can be a single domain | ||||
label or the fully qualified domain name of the host."; | ||||
} | ||||
leaf location { | ||||
type string; | ||||
description | ||||
"The system location. | ||||
A server implementation MAY map this leaf to the sysLocation | ||||
MIB object. Such an implementation needs to use some | ||||
mechanism to handle the differences in size and characters | ||||
allowed between this leaf and sysLocation. The definition | ||||
of such a mechanism is outside the scope of this document."; | ||||
reference | ||||
"RFC 3418: Management Information Base (MIB) for the | ||||
Simple Network Management Protocol (SNMP) | ||||
SNMPv2-MIB.sysLocation"; | ||||
} | ||||
container clock { | ||||
description | ||||
"Configuration of the system date and time properties."; | ||||
choice timezone { | ||||
description | description | |||
"The authentication configuration subtree."; | "The system time zone information."; | |||
leaf-list user-authentication-order { | case timezone-name { | |||
type identityref { | if-feature timezone-name; | |||
base authentication-method; | leaf timezone-name { | |||
type timezone-name; | ||||
description | ||||
"The TZ database name to use for the system, such | ||||
as 'Europe/Stockholm'."; | ||||
} | } | |||
must '(. != "sys:radius" or ../../radius/server)' { | } | |||
error-message | case timezone-utc-offset { | |||
"When 'radius' is used, a RADIUS server" | leaf timezone-utc-offset { | |||
+ " must be configured."; | type int16 { | |||
range "-1500 .. 1500"; | ||||
} | ||||
units "minutes"; | ||||
description | description | |||
"When 'radius' is used as an authentication method, | "The number of minutes to add to UTC time to | |||
a RADIUS server must be configured."; | identify the time zone for this system. For example, | |||
'UTC - 8:00 hours' would be represented as '-480'. | ||||
Note that automatic daylight saving time adjustment | ||||
is not provided if this object is used."; | ||||
} | } | |||
ordered-by user; | } | |||
} | ||||
} | ||||
description | container ntp { | |||
"When the device authenticates a user with | if-feature ntp; | |||
a password, it tries the authentication methods in this | presence | |||
leaf-list in order. If authentication with one method | "Enables the NTP client unless the 'enabled' leaf | |||
fails, the next method is used. If no method succeeds, | (which defaults to 'true') is set to 'false'"; | |||
the user is denied access. | description | |||
"Configuration of the NTP client."; | ||||
If the 'radius-authentication' feature is advertised by | leaf enabled { | |||
the NETCONF server, the 'radius' identity can be added to | type boolean; | |||
this list. | default true; | |||
description | ||||
"Indicates that the system should attempt to | ||||
synchronize the system clock with an NTP server | ||||
from the 'ntp/server' list."; | ||||
} | ||||
list server { | ||||
key name; | ||||
description | ||||
"List of NTP servers to use for system clock | ||||
synchronization. If '/system/ntp/enabled' | ||||
is 'true', then the system will attempt to | ||||
contact and utilize the specified NTP servers."; | ||||
If the 'local-users' feature is advertised by the | leaf name { | |||
NETCONF server, the 'local-users' identity can be | type string; | |||
added to this list."; | description | |||
"An arbitrary name for the NTP server."; | ||||
} | } | |||
choice transport { | ||||
list user { | mandatory true; | |||
if-feature local-users; | ||||
key name; | ||||
description | description | |||
"The list of local users configured on this device."; | "The transport-protocol-specific parameters for this | |||
server."; | ||||
leaf name { | case udp { | |||
type string; | container udp { | |||
description | description | |||
"The user name string identifying this entry."; | "Contains UDP-specific configuration parameters | |||
} | for NTP."; | |||
leaf password { | leaf address { | |||
type crypt-hash; | type inet:host; | |||
description | mandatory true; | |||
"The password for this entry."; | description | |||
"The address of the NTP server."; | ||||
} | ||||
leaf port { | ||||
if-feature ntp-udp-port; | ||||
type inet:port-number; | ||||
default 123; | ||||
description | ||||
"The port number of the NTP server."; | ||||
} | ||||
} | ||||
} | } | |||
list ssh-key { | } | |||
key name; | leaf association-type { | |||
description | type enumeration { | |||
"A list of public SSH keys for this user."; | enum server { | |||
reference | ||||
"RFC 4253: The Secure Shell (SSH) Transport Layer | ||||
Protocol"; | ||||
leaf name { | ||||
type string; | ||||
description | description | |||
"An arbitrary name for the ssh key."; | "Use client association mode. This device | |||
will not provide synchronization to the | ||||
configured NTP server."; | ||||
} | } | |||
leaf algorithm { | enum peer { | |||
type string; | ||||
mandatory true; | ||||
description | description | |||
"The public key algorithm name for this ssh key. | "Use symmetric active association mode. | |||
This device may provide synchronization | ||||
Valid values are the values in the IANA Secure Shell | to the configured NTP server."; | |||
(SSH) Protocol Parameters registry, Public Key | ||||
Algorithm Names"; | ||||
reference | ||||
"IANA Secure Shell (SSH) Protocol Parameters registry, | ||||
Public Key Algorithm Names"; | ||||
} | } | |||
leaf key-data { | enum pool { | |||
type binary; | ||||
mandatory true; | ||||
description | description | |||
"The binary key data for this ssh key."; | "Use client association mode with one or | |||
more of the NTP servers found by DNS | ||||
resolution of the domain name given by | ||||
the 'address' leaf. This device will not | ||||
provide synchronization to the servers."; | ||||
} | } | |||
} | } | |||
default server; | ||||
description | ||||
"The desired association type for this NTP server."; | ||||
} | ||||
leaf iburst { | ||||
type boolean; | ||||
default false; | ||||
description | ||||
"Indicates whether this server should enable burst | ||||
synchronization or not."; | ||||
} | ||||
leaf prefer { | ||||
type boolean; | ||||
default false; | ||||
description | ||||
"Indicates whether this server should be preferred | ||||
or not."; | ||||
} | } | |||
} | } | |||
} | } | |||
rpc set-current-datetime { | ||||
nacm:default-deny-all; | ||||
description | ||||
"Set the /system/clock/current-datetime leaf | ||||
to the specified value. | ||||
If the system is using NTP (i.e., /system/ntp/enabled | ||||
is set to 'true'), then this operation will | ||||
fail with error-tag 'operation-failed', | ||||
and error-app-tag value of 'ntp-active'"; | ||||
input { | ||||
leaf current-datetime { | ||||
type yang:date-and-time; | ||||
mandatory true; | ||||
description | ||||
"The current system date and time."; | ||||
} | ||||
} | ||||
} | ||||
rpc system-restart { | ||||
nacm:default-deny-all; | ||||
description | ||||
"Request that the entire system be restarted immediately. | ||||
A server SHOULD send an rpc reply to the client before | ||||
restarting the system."; | ||||
} | ||||
rpc system-shutdown { | ||||
nacm:default-deny-all; | ||||
description | ||||
"Request that the entire system be shut down immediately. | ||||
A server SHOULD send an rpc reply to the client before | ||||
shutting down the system."; | ||||
} | ||||
} | container dns-resolver { | |||
description | ||||
"Configuration of the DNS resolver."; | ||||
<CODE ENDS> | leaf-list search { | |||
type inet:domain-name; | ||||
ordered-by user; | ||||
description | ||||
"An ordered list of domains to search when resolving | ||||
a host name."; | ||||
} | ||||
list server { | ||||
key name; | ||||
ordered-by user; | ||||
description | ||||
"List of the DNS servers that the resolver should query. | ||||
5. IANA Considerations | When the resolver is invoked by a calling application, it | |||
sends the query to the first name server in this list. If | ||||
no response has been received within 'timeout' seconds, | ||||
the resolver continues with the next server in the list. | ||||
If no response is received from any server, the resolver | ||||
continues with the first server again. When the resolver | ||||
has traversed the list 'attempts' times without receiving | ||||
any response, it gives up and returns an error to the | ||||
calling application. | ||||
This document registers one URI in the IETF XML registry [RFC3688]. | Implementations MAY limit the number of entries in this | |||
Following the format in RFC 3688, the following registration is | list."; | |||
requested to be made. | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-system | leaf name { | |||
Registrant Contact: The NETMOD WG of the IETF. | type string; | |||
XML: N/A, the requested URI is an XML namespace. | description | |||
"An arbitrary name for the DNS server."; | ||||
} | ||||
choice transport { | ||||
mandatory true; | ||||
description | ||||
"The transport-protocol-specific parameters for this | ||||
server."; | ||||
This document registers one YANG module in the YANG Module Names | case udp-and-tcp { | |||
registry [RFC6020]. | container udp-and-tcp { | |||
description | ||||
"Contains UDP- and TCP-specific configuration | ||||
parameters for DNS."; | ||||
reference | ||||
"RFC 1035: Domain Names - Implementation and | ||||
Specification | ||||
RFC 5966: DNS Transport over TCP - Implementation | ||||
Requirements"; | ||||
name: ietf-system | leaf address { | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-system | type inet:ip-address; | |||
prefix: sys | mandatory true; | |||
reference: RFC XXXX | description | |||
"The address of the DNS server."; | ||||
} | ||||
leaf port { | ||||
if-feature dns-udp-tcp-port; | ||||
type inet:port-number; | ||||
default 53; | ||||
description | ||||
"The UDP and TCP port number of the DNS server."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
} | ||||
container options { | ||||
description | ||||
"Resolver options. The set of available options has been | ||||
limited to those that are generally available across | ||||
different resolver implementations and generally useful."; | ||||
leaf timeout { | ||||
type uint8 { | ||||
range "1..max"; | ||||
} | ||||
units "seconds"; | ||||
default "5"; | ||||
description | ||||
"The amount of time the resolver will wait for a | ||||
response from each remote name server before | ||||
retrying the query via a different name server."; | ||||
} | ||||
leaf attempts { | ||||
type uint8 { | ||||
range "1..max"; | ||||
} | ||||
default "2"; | ||||
description | ||||
"The number of times the resolver will send a query to | ||||
all of its name servers before giving up and returning | ||||
an error to the calling application."; | ||||
} | ||||
} | ||||
} | ||||
container radius { | ||||
if-feature radius; | ||||
6. Security Considerations | description | |||
"Configuration of the RADIUS client."; | ||||
The YANG module defined in this memo is designed to be accessed via | list server { | |||
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | key name; | |||
secure transport layer and the mandatory-to-implement secure | ordered-by user; | |||
transport is SSH [RFC6242]. Authorization for access to specific | description | |||
portions of conceptual data and operations within this module is | "List of RADIUS servers used by the device. | |||
provided by the NETCONF access control model (NACM) [RFC6536]. | ||||
There are a number of data nodes defined in this YANG module which | When the RADIUS client is invoked by a calling | |||
are writable/creatable/deletable (i.e., config true, which is the | application, it sends the query to the first server in | |||
default). These data nodes may be considered sensitive or vulnerable | this list. If no response has been received within | |||
in some network environments. Write operations (e.g., edit-config) | 'timeout' seconds, the client continues with the next | |||
to these data nodes without proper protection can have a negative | server in the list. If no response is received from any | |||
effect on network operations. These are the subtrees and data nodes | server, the client continues with the first server again. | |||
and their sensitivity/vulnerability: | When the client has traversed the list 'attempts' times | |||
without receiving any response, it gives up and returns an | ||||
error to the calling application."; | ||||
o /system/clock/timezone: This choice contains the objects used to | leaf name { | |||
control the timezone used by the device. | type string; | |||
description | ||||
"An arbitrary name for the RADIUS server."; | ||||
} | ||||
choice transport { | ||||
mandatory true; | ||||
description | ||||
"The transport-protocol-specific parameters for this | ||||
server."; | ||||
o /system/ntp: This container contains the objects used to control | case udp { | |||
the Network Time Protocol servers used by the device. | container udp { | |||
description | ||||
"Contains UDP-specific configuration parameters | ||||
for RADIUS."; | ||||
leaf address { | ||||
type inet:host; | ||||
mandatory true; | ||||
description | ||||
"The address of the RADIUS server."; | ||||
} | ||||
leaf authentication-port { | ||||
type inet:port-number; | ||||
default "1812"; | ||||
description | ||||
"The port number of the RADIUS server."; | ||||
} | ||||
leaf shared-secret { | ||||
type string; | ||||
mandatory true; | ||||
nacm:default-deny-all; | ||||
description | ||||
"The shared secret, which is known to both the | ||||
RADIUS client and server."; | ||||
reference | ||||
"RFC 2865: Remote Authentication Dial In User | ||||
Service (RADIUS)"; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
leaf authentication-type { | ||||
type identityref { | ||||
base radius-authentication-type; | ||||
} | ||||
default radius-pap; | ||||
description | ||||
"The authentication type requested from the RADIUS | ||||
server."; | ||||
} | ||||
} | ||||
container options { | ||||
description | ||||
"RADIUS client options."; | ||||
o /system/dns-resolver: This container contains the objects used to | leaf timeout { | |||
control the Domain Name System servers used by the device. | type uint8 { | |||
range "1..max"; | ||||
} | ||||
units "seconds"; | ||||
default "5"; | ||||
description | ||||
"The number of seconds the device will wait for a | ||||
response from each RADIUS server before trying with a | ||||
different server."; | ||||
} | ||||
leaf attempts { | ||||
type uint8 { | ||||
range "1..max"; | ||||
} | ||||
default "2"; | ||||
description | ||||
"The number of times the device will send a query to | ||||
all of its RADIUS servers before giving up."; | ||||
} | ||||
} | ||||
} | ||||
o /system/radius: This container contains the objects used to | container authentication { | |||
control the Remote Authentication Dial-In User Service servers | nacm:default-deny-write; | |||
used by the device. | if-feature authentication; | |||
o /system/authentication/user-authentication-order: This leaf | description | |||
controls how user login attempts are authenticated by the device. | "The authentication configuration subtree."; | |||
o /system/authentication/user: This list contains the local users | leaf-list user-authentication-order { | |||
enabled on the system. | type identityref { | |||
base authentication-method; | ||||
} | ||||
must '(. != "sys:radius" or ../../radius/server)' { | ||||
error-message | ||||
"When 'radius' is used, a RADIUS server" | ||||
+ " must be configured."; | ||||
description | ||||
"When 'radius' is used as an authentication method, | ||||
a RADIUS server must be configured."; | ||||
} | ||||
ordered-by user; | ||||
Some of the readable data nodes in this YANG module may be considered | description | |||
sensitive or vulnerable in some network environments. It is thus | "When the device authenticates a user with a password, | |||
important to control read access (e.g., via get, get-config, or | it tries the authentication methods in this leaf-list in | |||
notification) to these data nodes. These are the subtrees and data | order. If authentication with one method fails, the next | |||
nodes and their sensitivity/vulnerability: | method is used. If no method succeeds, the user is | |||
denied access. | ||||
o /system/platform: This container has objects which may help | An empty user-authentication-order leaf-list still allows | |||
identify the specific NETCONF server and/or operating system | authentication of users using mechanisms that do not | |||
implementation used on the device. | involve a password. | |||
o /system/authentication/user: This list has objects that may help | If the 'radius-authentication' feature is advertised by | |||
identify the specific user names and password information in use | the NETCONF server, the 'radius' identity can be added to | |||
on the device. | this list. | |||
Some of the RPC operations in this YANG module may be considered | If the 'local-users' feature is advertised by the | |||
sensitive or vulnerable in some network environments. It is thus | NETCONF server, the 'local-users' identity can be | |||
important to control access to these operations. These are the | added to this list."; | |||
operations and their sensitivity/vulnerability: | } | |||
o set-current-datetime: Changes the current date and time on the | list user { | |||
device. | if-feature local-users; | |||
key name; | ||||
description | ||||
"The list of local users configured on this device."; | ||||
o system-restart: Reboots the device. | leaf name { | |||
type string; | ||||
description | ||||
"The user name string identifying this entry."; | ||||
} | ||||
leaf password { | ||||
type ianach:crypt-hash; | ||||
description | ||||
"The password for this entry."; | ||||
} | ||||
list authorized-key { | ||||
key name; | ||||
description | ||||
"A list of public SSH keys for this user. These keys | ||||
are allowed for SSH authentication, as described in | ||||
RFC 4253."; | ||||
reference | ||||
"RFC 4253: The Secure Shell (SSH) Transport Layer | ||||
Protocol"; | ||||
o system-shutdown: Shuts down the device. | leaf name { | |||
type string; | ||||
description | ||||
"An arbitrary name for the SSH key."; | ||||
} | ||||
leaf algorithm { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"The public key algorithm name for this SSH key. | ||||
7. Change Log | Valid values are the values in the IANA 'Secure Shell | |||
(SSH) Protocol Parameters' registry, Public Key | ||||
Algorithm Names."; | ||||
reference | ||||
"IANA 'Secure Shell (SSH) Protocol Parameters' | ||||
registry, Public Key Algorithm Names"; | ||||
} | ||||
leaf key-data { | ||||
type binary; | ||||
mandatory true; | ||||
description | ||||
"The binary public key data for this SSH key, as | ||||
specified by RFC 4253, Section 6.6, i.e.: | ||||
-- RFC Ed.: remove this section before publication. | string certificate or public key format | |||
identifier | ||||
byte[n] key/certificate data."; | ||||
reference | ||||
"RFC 4253: The Secure Shell (SSH) Transport Layer | ||||
Protocol"; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
} | ||||
7.1. 00-01 | /* | |||
* Operational state data nodes | ||||
*/ | ||||
o added configuration-source identities | container system-state { | |||
config false; | ||||
description | ||||
"System group operational state."; | ||||
o added configuration-source leaf to ntp and dns (via grouping) to | container platform { | |||
choose configuration source | description | |||
"Contains vendor-specific information for | ||||
identifying the system platform and operating system."; | ||||
reference | ||||
"IEEE Std 1003.1-2008 - sys/utsname.h"; | ||||
o added association-type, iburst, prefer, and true leafs to the ntp- | leaf os-name { | |||
server list | type string; | |||
description | ||||
"The name of the operating system in use - | ||||
for example, 'Linux'."; | ||||
reference | ||||
"IEEE Std 1003.1-2008 - utsname.sysname"; | ||||
} | ||||
leaf os-release { | ||||
type string; | ||||
description | ||||
"The current release level of the operating | ||||
system in use. This string MAY indicate | ||||
the OS source code revision."; | ||||
reference | ||||
"IEEE Std 1003.1-2008 - utsname.release"; | ||||
} | ||||
leaf os-version { | ||||
type string; | ||||
description | ||||
"The current version level of the operating | ||||
system in use. This string MAY indicate | ||||
the specific OS build date and target variant | ||||
information."; | ||||
reference | ||||
"IEEE Std 1003.1-2008 - utsname.version"; | ||||
} | ||||
leaf machine { | ||||
type string; | ||||
description | ||||
"A vendor-specific identifier string representing | ||||
the hardware in use."; | ||||
reference | ||||
"IEEE Std 1003.1-2008 - utsname.machine"; | ||||
} | ||||
} | ||||
o extended the ssh keys for a user to a list of keys. support all | container clock { | |||
defined key algorithms, not just dsa and rsa | description | |||
"Monitoring of the system date and time properties."; | ||||
o clarified timezone-utc-offset description-stmt | leaf current-datetime { | |||
type yang:date-and-time; | ||||
description | ||||
"The current system date and time."; | ||||
} | ||||
leaf boot-datetime { | ||||
type yang:date-and-time; | ||||
description | ||||
"The system date and time when the system last restarted."; | ||||
} | ||||
} | ||||
} | ||||
o removed '/system/ntp/server/true' leaf from data model | rpc set-current-datetime { | |||
nacm:default-deny-all; | ||||
description | ||||
"Set the /system-state/clock/current-datetime leaf | ||||
to the specified value. | ||||
7.2. 01-02 | If the system is using NTP (i.e., /system/ntp/enabled | |||
is set to 'true'), then this operation will fail with | ||||
error-tag 'operation-failed' and error-app-tag value of | ||||
'ntp-active'."; | ||||
input { | ||||
leaf current-datetime { | ||||
type yang:date-and-time; | ||||
mandatory true; | ||||
description | ||||
"The current system date and time."; | ||||
} | ||||
} | ||||
} | ||||
o added default-stmts to ntp-server/iburst and ntp-server/prefer | rpc system-restart { | |||
leafs | nacm:default-deny-all; | |||
description | ||||
"Request that the entire system be restarted immediately. | ||||
A server SHOULD send an rpc reply to the client before | ||||
restarting the system."; | ||||
} | ||||
o changed timezone-location leaf to use iana-timezone typedef | rpc system-shutdown { | |||
instead of a string | nacm:default-deny-all; | |||
description | ||||
"Request that the entire system be shut down immediately. | ||||
A server SHOULD send an rpc reply to the client before | ||||
shutting down the system."; | ||||
} | ||||
7.3. 02-03 | } | |||
o removed configuration-source identities and leafs | <CODE ENDS> | |||
7.4. 03-04 | 7. IANA Considerations | |||
o removed ndots dns resolver option | IANA has created an IANA-maintained YANG module called | |||
"iana-crypt-hash", based on the contents of Section 5, which will | ||||
allow for new hash algorithms to be added to the type "crypt-hash". | ||||
The registration procedure will be Expert Review, as defined by | ||||
[RFC5226]. | ||||
o added radius-authentication-type identity, and identities for pap | This document registers two URIs in the "IETF XML Registry" | |||
and chap, and a leaf to control which authentication type to use | [RFC3688]. Following the format in RFC 3688, the following | |||
when communicating with the radius server | registrations have been made. | |||
o made 0 an invalid value for timeouts and attempts | URI: urn:ietf:params:xml:ns:yang:iana-crypt-hash | |||
Registrant Contact: The IESG. | ||||
XML: N/A; the requested URI is an XML namespace. | ||||
7.5. 04-05 | URI: urn:ietf:params:xml:ns:yang:ietf-system | |||
Registrant Contact: The IESG. | ||||
XML: N/A; the requested URI is an XML namespace. | ||||
o updated tree diagram explanation text | This document registers two YANG modules in the "YANG Module Names" | |||
registry [RFC6020]. | ||||
7.6. 05-06 | name: iana-crypt-hash | |||
namespace: urn:ietf:params:xml:ns:yang:iana-crypt-hash | ||||
prefix: ianach | ||||
reference: RFC 7317 | ||||
o changed ntp/use-ntp to ntp/enabled | name: ietf-system | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-system | ||||
prefix: sys | ||||
reference: RFC 7317 | ||||
o changed ntp/ntp-server to ntp/server | 8. Security Considerations | |||
o removed /system/platform/nodename leaf | The YANG modules defined in this memo are designed to be accessed via | |||
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | ||||
secure transport layer and the mandatory to implement secure | ||||
transport is SSH [RFC6242]. The NETCONF access control model | ||||
[RFC6536] provides the means to restrict access for particular | ||||
NETCONF users to a pre-configured subset of all available NETCONF | ||||
protocol operations and content. | ||||
o changed /system/name to /system/hostname | There are a number of data nodes defined in the "ietf-system" YANG | |||
module which are writable/creatable/deletable (i.e., config true, | ||||
which is the default). These data nodes may be considered sensitive | ||||
or vulnerable in some network environments. Write operations (e.g., | ||||
edit-config) to these data nodes without proper protection can have a | ||||
negative effect on network operations. These are the subtrees and | ||||
data nodes and their sensitivity/vulnerability: | ||||
o simplified must expression in user-authentication-order | o /system/clock/timezone: This choice contains the objects used to | |||
control the time zone used by the device. | ||||
o added optional rounds to sha hash definition | o /system/ntp: This container contains the objects used to control | |||
the Network Time Protocol servers used by the device. | ||||
o clarified the crypt-hash description | o /system/dns-resolver: This container contains the objects used to | |||
control the Domain Name System servers used by the device. | ||||
o clarified ntp descriptions | o /system/radius: This container contains the objects used to | |||
control the Remote Authentication Dial-In User Service servers | ||||
used by the device. | ||||
o clarified YANG module description to indicate that some system | o /system/authentication/user-authentication-order: This leaf | |||
properties are supported, not the entire system | controls how user login attempts are authenticated by the device. | |||
o clarified that system identification values are vendor specific, | o /system/authentication/user: This list contains the local users | |||
not the data node objects | enabled on the system. | |||
o clarified sec. 2.2 and 2.3 to indicate that the server should also | Some of the readable data nodes in the "ietf-system" YANG module may | |||
be capable of configuring these properties | be considered sensitive or vulnerable in some network environments. | |||
It is thus important to control read access (e.g., via get, | ||||
get-config or notification) to these data nodes. These are the | ||||
subtrees and data nodes and their sensitivity/vulnerability: | ||||
o changed /system/dns/search from inet:host to inet:domain-name | o /system/platform: This container has objects that may help | |||
identify the specific NETCONF server and/or operating system | ||||
implementation used on the device. | ||||
o changed RFC6021 reference to 6021-bis | o /system/authentication/user: This list has objects that may help | |||
identify the specific user names and password information in use | ||||
on the device. | ||||
o changed /system/platform/nodename to /system/platform/hostname | Some of the RPC operations in the "ietf-system" YANG module may be | |||
considered sensitive or vulnerable in some network environments. It | ||||
is thus important to control access to these operations. These are | ||||
the operations and their sensitivity/vulnerability: | ||||
o changed /system/radius/server/{leafs} to be within a choice and | o set-current-datetime: Changes the current date and time on the | |||
'udp' case statement so other transport specific parameters can | device. | |||
augment this list or they can be added by the WG to a future | ||||
version of this module. {leafs} are authentication-port and | ||||
shared-secret. | ||||
o updated YANG tree diagrams for objects added in -05 and -06 | o system-restart: Reboots the device. | |||
7.7. 06-07 | o system-shutdown: Shuts down the device. | |||
o updated the Abstract and Introduction | Since this document describes the use of RADIUS for purposes of | |||
authentication, it is vulnerable to all of the threats that are | ||||
present in other RADIUS applications. For a discussion of such | ||||
threats, see [RFC2865] and [RFC3162], and Section 4 of [RFC3579]. | ||||
o updated Tree diagram notation | This document provides configuration parameters for SSH's "publickey" | |||
o identify all external servers (dns, ntp, radius) by name instead | and "password" authentication mechanisms. Section 9.4 of [RFC4251] | |||
of address, in order to make the data model extensible for | and Section 11 of [RFC4252] discuss security considerations for these | |||
additional transport protocol. | mechanisms. | |||
o updated the Security Considerations section with a reference to | The "iana-crypt-hash" YANG module defines a type "crypt-hash" that | |||
NACM. | can be used to store MD5 hashes. [RFC6151] discusses security | |||
considerations for MD5. The usage of MD5 is NOT RECOMMENDED. | ||||
8. References | 9. References | |||
8.1. Normative References | 9.1. Normative References | |||
[FIPS.180-3.2008] | [FIPS.180-4.2012] | |||
National Institute of Standards and Technology, "Secure | National Institute of Standards and Technology, "Secure | |||
Hash Standard", FIPS PUB 180-3, October 2008, <http:// | Hash Standard (SHS)", FIPS PUB 180-4, March 2012, | |||
csrc.nist.gov/publications/fips/fips180-3/ | <http://csrc.nist.gov/publications/fips/fips180-4/ | |||
fips180-3_final.pdf>. | fips-180-4.pdf>. | |||
[I-D.ietf-netmod-iana-timezones] | ||||
Lange, J., "IANA Timezone Database YANG Module", | ||||
draft-ietf-netmod-iana-timezones-00 (work in progress), | ||||
July 2012. | ||||
[I-D.ietf-netmod-rfc6021-bis] | ||||
Schoenwaelder, J., "Common YANG Data Types", | ||||
draft-ietf-netmod-rfc6021-bis-02 (work in progress), | ||||
May 2013. | ||||
[IEEE-1003.1-2008] | [IEEE-1003.1-2008] | |||
Institute of Electrical and Electronics Engineers, | Institute of Electrical and Electronics Engineers, | |||
"POSIX.1-2008", IEEE Standard 1003.1, March 2008. | "POSIX.1-2008", IEEE Standard 1003.1, March 2008. | |||
[RFC1035] Mockapetris, P., "Domain names - implementation and | ||||
specification", STD 13, RFC 1035, November 1987. | ||||
[RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, | [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, | |||
April 1992. | April 1992. | |||
[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, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson, | [RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson, | |||
"Remote Authentication Dial In User Service (RADIUS)", | "Remote Authentication Dial In User Service (RADIUS)", | |||
RFC 2865, June 2000. | RFC 2865, June 2000. | |||
[RFC3162] Aboba, B., Zorn, G., and D. Mitton, "RADIUS and IPv6", | ||||
RFC 3162, August 2001. | ||||
[RFC3418] Presuhn, R., "Management Information Base (MIB) for the | [RFC3418] Presuhn, R., "Management Information Base (MIB) for the | |||
Simple Network Management Protocol (SNMP)", STD 62, | Simple Network Management Protocol (SNMP)", STD 62, | |||
RFC 3418, December 2002. | RFC 3418, December 2002. | |||
[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) | [RFC4252] Ylonen, T. and C. Lonvick, "The Secure Shell (SSH) | |||
Authentication Protocol", RFC 4252, January 2006. | Authentication Protocol", RFC 4252, January 2006. | |||
[RFC4253] Ylonen, T. and C. Lonvick, "The Secure Shell (SSH) | [RFC4253] Ylonen, T. and C. Lonvick, "The Secure Shell (SSH) | |||
Transport Layer Protocol", RFC 4253, January 2006. | Transport Layer Protocol", RFC 4253, January 2006. | |||
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | ||||
IANA Considerations Section in RFCs", BCP 26, RFC 5226, | ||||
May 2008. | ||||
[RFC5607] Nelson, D. and G. Weber, "Remote Authentication Dial-In | [RFC5607] Nelson, D. and G. Weber, "Remote Authentication Dial-In | |||
User Service (RADIUS) Authorization for Network Access | User Service (RADIUS) Authorization for Network Access | |||
Server (NAS) Management", RFC 5607, July 2009. | Server (NAS) Management", RFC 5607, July 2009. | |||
[RFC5966] Bellis, R., "DNS Transport over TCP - Implementation | ||||
Requirements", RFC 5966, August 2010. | ||||
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the | [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the | |||
Network Configuration Protocol (NETCONF)", RFC 6020, | Network Configuration Protocol (NETCONF)", RFC 6020, | |||
October 2010. | October 2010. | |||
[RFC6151] Turner, S. and L. Chen, "Updated Security Considerations | ||||
for the MD5 Message-Digest and the HMAC-MD5 Algorithms", | ||||
RFC 6151, March 2011. | ||||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
(NETCONF)", RFC 6241, June 2011. | (NETCONF)", RFC 6241, June 2011. | |||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", RFC 6242, June 2011. | Shell (SSH)", RFC 6242, June 2011. | |||
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | |||
Protocol (NETCONF) Access Control Model", RFC 6536, | Protocol (NETCONF) Access Control Model", RFC 6536, | |||
March 2012. | March 2012. | |||
8.2. Informative References | [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, | |||
July 2013. | ||||
9.2. Informative References | ||||
[RFC3579] Aboba, B. and P. Calhoun, "RADIUS (Remote Authentication | ||||
Dial In User Service) Support For Extensible | ||||
Authentication Protocol (EAP)", RFC 3579, September 2003. | ||||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
January 2004. | January 2004. | |||
[RFC6557] Lear, E. and P. Eggert, "Procedures for Maintaining the | [RFC6557] Lear, E. and P. Eggert, "Procedures for Maintaining the | |||
Time Zone Database", BCP 175, RFC 6557, February 2012. | Time Zone Database", BCP 175, RFC 6557, February 2012. | |||
Authors' Addresses | Authors' Addresses | |||
Andy Bierman | Andy Bierman | |||
YumaWorks | YumaWorks | |||
Email: andy@yumaworks.com | EMail: andy@yumaworks.com | |||
Martin Bjorklund | Martin Bjorklund | |||
Tail-f Systems | Tail-f Systems | |||
Email: mbj@tail-f.com | EMail: mbj@tail-f.com | |||
End of changes. 205 change blocks. | ||||
967 lines changed or deleted | 1037 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |