draft-ietf-netmod-system-mgmt-16.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: November 15, 2014 Tail-f Systems | ISSN: 2070-1721 Tail-f Systems | |||
May 14, 2014 | August 2014 | |||
A YANG Data Model for System Management | A YANG Data Model for System Management | |||
draft-ietf-netmod-system-mgmt-16 | ||||
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 November 15, 2014. | 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) 2014 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 . . . . . . . . . . . . . . . . . . . . 8 | 3.3. DNS Resolver Model .........................................7 | |||
3.4. RADIUS Client Model . . . . . . . . . . . . . . . . . . . 8 | 3.4. RADIUS Client Model ........................................7 | |||
3.5. User Authentication Model . . . . . . . . . . . . . . . . 9 | 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 . . . . . . . . . . 10 | 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. Relationship to the SNMPv2-MIB . . . . . . . . . . . . . . . . 11 | 4. Relationship to the SNMPv2-MIB .................................10 | |||
5. IANA Crypt Hash YANG module . . . . . . . . . . . . . . . . . 12 | 5. IANA Crypt Hash YANG Module ....................................10 | |||
6. System YANG module . . . . . . . . . . . . . . . . . . . . . . 15 | 6. System YANG Module .............................................13 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 | 7. IANA Considerations ............................................31 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 34 | 8. Security Considerations ........................................31 | |||
9. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | 9. References .....................................................33 | |||
9.1. 00-01 . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | 9.1. Normative References ......................................33 | |||
9.2. 01-02 . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | 9.2. Informative References ....................................35 | |||
9.3. 02-03 . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | ||||
9.4. 03-04 . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | ||||
9.5. 04-05 . . . . . . . . . . . . . . . . . . . . . . . . . . 36 | ||||
9.6. 05-06 . . . . . . . . . . . . . . . . . . . . . . . . . . 37 | ||||
9.7. 06-07 . . . . . . . . . . . . . . . . . . . . . . . . . . 37 | ||||
9.8. 07-08 . . . . . . . . . . . . . . . . . . . . . . . . . . 38 | ||||
9.9. 08-09 . . . . . . . . . . . . . . . . . . . . . . . . . . 38 | ||||
9.10. 09-10 . . . . . . . . . . . . . . . . . . . . . . . . . . 38 | ||||
9.11. 11-12 . . . . . . . . . . . . . . . . . . . . . . . . . . 38 | ||||
9.12. 13-14 . . . . . . . . . . . . . . . . . . . . . . . . . . 38 | ||||
9.13. 14-15 . . . . . . . . . . . . . . . . . . . . . . . . . . 38 | ||||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 39 | ||||
10.1. Normative References . . . . . . . . . . . . . . . . . . . 39 | ||||
10.2. Informative References . . . . . . . . . . . . . . . . . . 40 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 41 | ||||
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 | The following terms are defined in [RFC6241] and are not redefined | |||
here: | here: | |||
o client | o client | |||
o configuration data | o configuration data | |||
o server | o server | |||
o state data | 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, "!" | o Symbols after data node names: "?" means an optional node, "!" | |||
means a presence container, and "*" 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 to configure the system to use NTP. | be possible to configure the system to use NTP. | |||
2.3. User Authentication | 2.3. User Authentication | |||
The authentication mechanism needs 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 needs 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 to configure the system | documents or by vendors. It should be possible to configure the | |||
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 in order to control how domain names | the NETCONF server is required in order to control how domain names | |||
are resolved. | are resolved. | |||
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 | |||
skipping to change at page 7, line 51 | skipping to change at page 6, line 34 | |||
| | +--rw address inet:host | | | +--rw address inet:host | |||
| | +--rw port? inet:port-number | | | +--rw port? inet:port-number | |||
| +--rw association-type? enumeration | | +--rw association-type? enumeration | |||
| +--rw iburst? boolean | | +--rw iburst? boolean | |||
| +--rw prefer? boolean | | +--rw prefer? boolean | |||
+--ro system-state | +--ro system-state | |||
+--ro clock | +--ro clock | |||
+--ro current-datetime? yang:date-and-time | +--ro current-datetime? yang:date-and-time | |||
+--ro boot-datetime? yang:date-and-time | +--ro boot-datetime? yang:date-and-time | |||
New "case" statements can be added over time or augmented to the | New "case" statements can be added in future revisions of this data | |||
"transport" choice to support other transport protocols. | 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-and-tcp) | | +--:(udp-and-tcp) | |||
| +--udp-and-tcp | | +--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 over time or augmented to the | New "case" statements can be added in future revisions of this data | |||
"transport" choice to support other transport protocols. | 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 | |||
skipping to change at page 8, line 47 | skipping to change at page 7, line 47 | |||
| | +--:(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 over time or augmented to the | New "case" statements can be added in future revisions of this data | |||
"transport" choice to support other transport protocols. | 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 secure transport | o password for local users over any secure transport | |||
o password for RADIUS users over any secure 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? ianach:crypt-hash | +--rw password? ianach:crypt-hash | |||
+--rw authorized-key* [name] | +--rw authorized-key* [name] | |||
skipping to change at page 9, line 52 | skipping to change at page 9, line 4 | |||
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 | |||
The following operations are defined: | The following operations are defined: | |||
set-current-datetime | set-current-datetime | |||
system-restart | system-restart | |||
system-shutdown | system-shutdown | |||
Two protocol operations are included to restart or shutdown the | 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. Relationship to the SNMPv2-MIB | 4. Relationship to the SNMPv2-MIB | |||
If a device implements the SNMPv2-MIB [RFC3418], there are two | If a device implements the SNMPv2-MIB [RFC3418], there are two | |||
objects that MAY be mapped by the implementation. See the YANG | objects that MAY be mapped by the implementation. See the YANG | |||
module definition in Section 6 for details. The following table | module definition in Section 6 for details. The following table | |||
lists the YANG data nodes with corresponding objects in the SNMPv2- | lists the YANG data nodes with corresponding objects in the | |||
MIB. | SNMPv2-MIB. | |||
+----------------+-------------------+ | +----------------+-------------------+ | |||
| YANG data node | SNMPv2-MIB object | | | YANG data node | SNMPv2-MIB object | | |||
+----------------+-------------------+ | +----------------+-------------------+ | |||
| contact | sysContact | | | contact | sysContact | | |||
| location | sysLocation | | | location | sysLocation | | |||
+----------------+-------------------+ | +----------------+-------------------+ | |||
YANG interface configuration data nodes and related SNMPv2-MIB | YANG Interface Configuration Data Nodes and | |||
objects | Related SNMPv2-MIB Objects | |||
5. IANA Crypt Hash YANG module | 5. IANA Crypt Hash YANG Module | |||
This YANG module references [RFC1321], [IEEE-1003.1-2008], and | This YANG module references [RFC1321], [IEEE-1003.1-2008], and | |||
[FIPS.180-3.2008]. | [FIPS.180-4.2012]. | |||
RFC Ed.: update the date below with the date of RFC publication and | ||||
remove this note. | ||||
<CODE BEGINS> file "iana-crypt-hash@2014-04-04.yang" | <CODE BEGINS> file "iana-crypt-hash@2014-08-06.yang" | |||
module iana-crypt-hash { | module iana-crypt-hash { | |||
namespace "urn:ietf:params:xml:ns:yang:iana-crypt-hash"; | namespace "urn:ietf:params:xml:ns:yang:iana-crypt-hash"; | |||
prefix ianach; | prefix ianach; | |||
organization "IANA"; | organization "IANA"; | |||
contact | contact | |||
" Internet Assigned Numbers Authority | " Internet Assigned Numbers Authority | |||
Postal: ICANN | Postal: ICANN | |||
4676 Admiralty Way, Suite 330 | 12025 Waterfront Drive, Suite 300 | |||
Marina del Rey, CA 90292 | Los Angeles, CA 90094-2536 | |||
United States | ||||
Tel: +1 310 823 9358 | Tel: +1 310 301 5800 | |||
E-Mail: iana&iana.org"; | E-Mail: iana@iana.org>"; | |||
description | description | |||
"This YANG module defines a typedef for storing passwords | "This YANG module defines a type for storing passwords | |||
using a hash function, and features to indicate which hash | using a hash function and features to indicate which hash | |||
functions are supported by an implementation. | functions are supported by an implementation. | |||
The latest revision of this YANG module can be obtained from | The latest revision of this YANG module can be obtained from | |||
the IANA web site. | the IANA web site. | |||
Requests for new values should be made to IANA via | Requests for new values should be made to IANA via | |||
email (iana&iana.org). | email (iana@iana.org). | |||
Copyright (c) 2014 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). | |||
The initial version of this YANG module is part of RFC XXXX; | The initial version of this YANG module is part of RFC 7317; | |||
see 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.: update the date below with the date of RFC publication | revision 2014-08-06 { | |||
// and remove this note. | ||||
revision 2014-04-04 { | ||||
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"; | |||
} | } | |||
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}'; | |||
} | } | |||
skipping to change at page 13, line 43 | 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: | |||
skipping to change at page 14, line 18 | skipping to change at page 12, line 29 | |||
---+---------------+------------------- | ---+---------------+------------------- | |||
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 | |||
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)"; | |||
} | } | |||
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)"; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
6. System YANG module | 6. System YANG Module | |||
This YANG module imports YANG extensions from [RFC6536], and imports | This YANG module imports YANG extensions from [RFC6536] and imports | |||
YANG types from [RFC6991]. It also references [RFC1035], [RFC2865], | YANG types from [RFC6991]. It also references [RFC1035], [RFC2865], | |||
[RFC3418], [RFC5607], [RFC5966], [RFC6557]. | [RFC3418], [RFC5607], [RFC5966], and [RFC6557]. | |||
RFC Ed.: update the date below with the date of RFC publication and | <CODE BEGINS> file "ietf-system@2014-08-06.yang" | |||
remove this note. | ||||
<CODE BEGINS> file "ietf-system@2014-05-14.yang" | module ietf-system { | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-system"; | ||||
prefix "sys"; | ||||
module ietf-system { | import ietf-yang-types { | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-system"; | prefix yang; | |||
prefix "sys"; | } | |||
import ietf-yang-types { | import ietf-inet-types { | |||
prefix yang; | prefix inet; | |||
} | } | |||
import ietf-inet-types { | import ietf-netconf-acm { | |||
prefix inet; | prefix nacm; | |||
} | } | |||
import ietf-netconf-acm { | import iana-crypt-hash { | |||
prefix nacm; | prefix ianach; | |||
} | } | |||
import iana-crypt-hash { | organization | |||
prefix ianach; | "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | |||
} | ||||
organization | contact | |||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | "WG Web: <http://tools.ietf.org/wg/netmod/> | |||
WG List: <mailto:netmod@ietf.org> | ||||
contact | WG Chair: Thomas Nadeau | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | <mailto:tnadeau@lucidvision.com> | |||
WG List: <mailto:netmod@ietf.org> | ||||
WG Chair: Thomas Nadeau | WG Chair: Juergen Schoenwaelder | |||
<mailto:tnadeau@lucidvision.com> | <mailto:j.schoenwaelder@jacobs-university.de> | |||
WG Chair: Juergen Schoenwaelder | Editor: Andy Bierman | |||
<mailto:j.schoenwaelder@jacobs-university.de> | <mailto:andy@yumaworks.com> | |||
Editor: Andy Bierman | Editor: Martin Bjorklund | |||
<mailto:andy@yumaworks.com> | <mailto:mbj@tail-f.com>"; | |||
Editor: Martin Bjorklund | description | |||
<mailto:mbj@tail-f.com>"; | "This module contains a collection of YANG definitions for the | |||
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. | ||||
description | Copyright (c) 2014 IETF Trust and the persons identified as | |||
"This module contains a collection of YANG definitions for the | authors of the code. All rights reserved. | |||
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) 2014 IETF Trust and the persons identified as | Redistribution and use in source and binary forms, with or | |||
authors of the code. All rights reserved. | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | ||||
set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info). | ||||
Redistribution and use in source and binary forms, with or | This version of this YANG module is part of RFC 7317; see | |||
without modification, is permitted pursuant to, and subject | the RFC itself for full legal notices."; | |||
to the license terms contained in, the Simplified BSD License | ||||
set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC XXXX; see | revision 2014-08-06 { | |||
the RFC itself for full legal notices."; | description | |||
"Initial revision."; | ||||
reference | ||||
"RFC 7317: A YANG Data Model for System Management"; | ||||
} | ||||
// RFC Ed.: replace XXXX with actual RFC number and remove this | /* | |||
// note. | * Typedefs | |||
*/ | ||||
// RFC Ed.: remove this note | typedef timezone-name { | |||
// Note: extracted from draft-ietf-netmod-system-mgmt-07.txt | type string; | |||
description | ||||
"A time zone name as used by the Time Zone Database, | ||||
sometimes referred to as the 'Olson Database'. | ||||
// RFC Ed.: update the date below with the date of RFC publication | The exact set of valid values is an implementation-specific | |||
// and remove this note. | matter. Client discovery of the exact set of time zone names | |||
revision "2014-05-14" { | for a particular server is out of scope."; | |||
description | reference | |||
"Initial revision."; | "RFC 6557: Procedures for Maintaining the Time Zone Database"; | |||
reference | ||||
"RFC XXXX: A YANG Data Model for System Management"; | ||||
} | } | |||
/* | /* | |||
* Typedefs | * Features | |||
*/ | */ | |||
typedef timezone-name { | feature radius { | |||
type string; | description | |||
description | "Indicates that the device can be configured as a RADIUS | |||
"A timezone name as used by the Time Zone Database, sometimes | client."; | |||
referred to as the 'Olson Database'. | reference | |||
"RFC 2865: Remote Authentication Dial In User Service (RADIUS)"; | ||||
} | ||||
The exact set of valid values is an implementation-specific | feature authentication { | |||
matter. Client discovery of the exact set of time zone names | description | |||
for a particular server is out of scope."; | "Indicates that the device supports configuration of | |||
reference | user authentication."; | |||
"RFC 6557: Procedures for Maintaining the Time Zone Database"; | } | |||
} | ||||
/* | feature local-users { | |||
* Features | 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 radius { | feature ntp { | |||
description | description | |||
"Indicates that the device can be configured as a RADIUS | "Indicates that the device can be configured to use one or | |||
client."; | more NTP servers to set the system date and time."; | |||
reference | } | |||
"RFC 2865: Remote Authentication Dial In User Service " | ||||
+ "(RADIUS)"; | ||||
} | ||||
feature authentication { | feature ntp-udp-port { | |||
description | if-feature ntp; | |||
"Indicates that the device supports configuration | description | |||
for user authentication."; | "Indicates that the device supports the configuration of | |||
} | the UDP port for NTP servers. | |||
feature local-users { | This is a 'feature', since many implementations do not support | |||
if-feature authentication; | any port other than the default port."; | |||
description | } | |||
"Indicates that the device supports configuration of | ||||
local user authentication."; | ||||
} | ||||
feature radius-authentication { | feature timezone-name { | |||
if-feature radius; | description | |||
if-feature authentication; | "Indicates that the local time zone on the device | |||
description | can be configured to use the TZ database | |||
"Indicates that the device supports configuration of user | to set the time zone and manage daylight saving time."; | |||
authentication over RADIUS."; | reference | |||
reference | "RFC 6557: Procedures for Maintaining the Time Zone Database"; | |||
"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 ntp { | feature dns-udp-tcp-port { | |||
description | description | |||
"Indicates that the device can be configured | "Indicates that the device supports the configuration of | |||
to use one or more NTP servers to set the | the UDP and TCP port for DNS servers. | |||
system date and time."; | ||||
} | ||||
feature ntp-udp-port { | This is a 'feature', since many implementations do not support | |||
if-feature ntp; | any port other than the default port."; | |||
description | } | |||
"Indicates that the device supports the configuration of | /* | |||
the UDP port for NTP servers. | * Identities | |||
*/ | ||||
This is a 'feature' since many implementations do not support | identity authentication-method { | |||
any other port than the default port."; | description | |||
} | "Base identity for user authentication methods."; | |||
} | ||||
feature timezone-name { | identity radius { | |||
description | base authentication-method; | |||
"Indicates that the local timezone on the device | description | |||
can be configured to use the TZ database | "Indicates user authentication using RADIUS."; | |||
to set the timezone and manage daylight savings time."; | reference | |||
reference | "RFC 2865: Remote Authentication Dial In User Service (RADIUS) | |||
"RFC 6557: Procedures for Maintaining the Time Zone Database"; | RFC 5607: Remote Authentication Dial-In User Service (RADIUS) | |||
} | Authorization for Network Access Server (NAS) | |||
Management"; | ||||
} | ||||
feature dns-udp-tcp-port { | identity local-users { | |||
description | base authentication-method; | |||
"Indicates that the device supports the configuration of | description | |||
the UDP and TCP port for DNS servers. | "Indicates password-based authentication of locally | |||
configured users."; | ||||
} | ||||
This is a 'feature' since many implementations do not support | identity radius-authentication-type { | |||
any other port than the default port."; | description | |||
} | "Base identity for RADIUS authentication types."; | |||
} | ||||
/* | identity radius-pap { | |||
* Identities | base radius-authentication-type; | |||
*/ | 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)"; | ||||
} | ||||
identity authentication-method { | /* | |||
description | * Configuration data nodes | |||
"Base identity for user authentication methods."; | */ | |||
} | ||||
identity radius { | container system { | |||
base authentication-method; | description | |||
description | "System group configuration."; | |||
"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 { | leaf contact { | |||
base authentication-method; | type string; | |||
description | description | |||
"Indicates password-based authentication of locally | "The administrator contact information for the system. | |||
configured users."; | ||||
} | ||||
identity radius-authentication-type { | 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 | description | |||
"Base identity for RADIUS authentication types."; | "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. | ||||
identity radius-pap { | A server implementation MAY map this leaf to the sysLocation | |||
base radius-authentication-type; | MIB object. Such an implementation needs to use some | |||
description | mechanism to handle the differences in size and characters | |||
"The device requests PAP authentication from the RADIUS | allowed between this leaf and sysLocation. The definition | |||
server."; | of such a mechanism is outside the scope of this document."; | |||
reference | ||||
"RFC 2865: Remote Authentication Dial In User Service"; | ||||
} | ||||
identity radius-chap { | reference | |||
base radius-authentication-type; | "RFC 3418: Management Information Base (MIB) for the | |||
description | Simple Network Management Protocol (SNMP) | |||
"The device requests CHAP authentication from the RADIUS | SNMPv2-MIB.sysLocation"; | |||
server."; | } | |||
reference | ||||
"RFC 2865: Remote Authentication Dial In User Service"; | ||||
} | ||||
/* | container clock { | |||
* Configuration data nodes | description | |||
*/ | "Configuration of the system date and time properties."; | |||
container system { | choice timezone { | |||
description | description | |||
"System group configuration."; | "The system time zone information."; | |||
leaf contact { | case timezone-name { | |||
type string; | if-feature timezone-name; | |||
description | leaf timezone-name { | |||
"The administrator contact information for the system. | type timezone-name; | |||
description | ||||
"The TZ database name 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 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."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
A server implementation MAY map this leaf to the sysContact | container ntp { | |||
MIB object. Such an implementation needs to use some | if-feature ntp; | |||
mechanism to handle the differences in size and characters | presence | |||
allowed between this leaf and sysContact. The definition of | "Enables the NTP client unless the 'enabled' leaf | |||
such a mechanism is outside the scope of this document."; | (which defaults to 'true') is set to 'false'"; | |||
reference | ||||
"RFC 3418: Management Information Base (MIB) for the | ||||
Simple Network Management Protocol (SNMP) | ||||
SNMPv2-MIB.sysContact"; | ||||
} | ||||
leaf hostname { | ||||
type inet:domain-name; | ||||
description | description | |||
"The name of the host. This name can be a single domain | "Configuration of the NTP client."; | |||
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 | leaf enabled { | |||
MIB object. Such an implementation needs to use some | type boolean; | |||
mechanism to handle the differences in size and characters | default true; | |||
allowed between this leaf and sysLocation. The definition | description | |||
of such a mechanism is outside the scope of this document."; | "Indicates that the system should attempt to | |||
reference | synchronize the system clock with an NTP server | |||
"RFC 3418: Management Information Base (MIB) for the | from the 'ntp/server' list."; | |||
Simple Network Management Protocol (SNMP) | } | |||
SNMPv2-MIB.sysLocation"; | 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."; | ||||
container clock { | leaf name { | |||
description | type string; | |||
"Configuration of the system date and time properties."; | description | |||
"An arbitrary name for the NTP server."; | ||||
} | ||||
choice transport { | ||||
mandatory true; | ||||
description | ||||
"The transport-protocol-specific parameters for this | ||||
server."; | ||||
choice timezone { | case udp { | |||
description | container udp { | |||
"The system timezone information."; | 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."; | ||||
} | ||||
} | ||||
} | ||||
case timezone-name { | container dns-resolver { | |||
if-feature timezone-name; | description | |||
leaf timezone-name { | "Configuration of the DNS resolver."; | |||
type timezone-name; | ||||
description | ||||
"The TZ database name to use for the system, such | ||||
as 'Europe/Stockholm'."; | ||||
} | ||||
} | leaf-list search { | |||
case timezone-utc-offset { | type inet:domain-name; | |||
leaf timezone-utc-offset { | ordered-by user; | |||
type int16 { | description | |||
range "-1500 .. 1500"; | "An ordered list of domains to search when resolving | |||
} | a host name."; | |||
units "minutes"; | } | |||
description | list server { | |||
"The number of minutes to add to UTC time to | key name; | |||
identify the timezone for this system. For example, | ordered-by user; | |||
'UTC - 8:00 hours' would be represented as '-480'. | description | |||
Note that automatic daylight savings time adjustment | "List of the DNS servers that the resolver should query. | |||
is not provided, if this object is used."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
container ntp { | When the resolver is invoked by a calling application, it | |||
if-feature ntp; | sends the query to the first name server in this list. If | |||
presence | no response has been received within 'timeout' seconds, | |||
"Enables the NTP client unless the 'enabled' leaf | the resolver continues with the next server in the list. | |||
(which defaults to 'true') is set to 'false'"; | If no response is received from any server, the resolver | |||
description | continues with the first server again. When the resolver | |||
"Configuration of the NTP client."; | has traversed the list 'attempts' times without receiving | |||
any response, it gives up and returns an error to the | ||||
calling application. | ||||
leaf enabled { | Implementations MAY limit the number of entries in this | |||
type boolean; | 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."; | ||||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"An arbitrary name for the NTP server."; | "An arbitrary name for the DNS server."; | |||
} | } | |||
choice transport { | choice transport { | |||
mandatory true; | mandatory true; | |||
description | description | |||
"The transport protocol specific parameters for this | "The transport-protocol-specific parameters for this | |||
server."; | server."; | |||
case udp { | case udp-and-tcp { | |||
container udp { | container udp-and-tcp { | |||
description | description | |||
"Contains UDP specific configuration parameters | "Contains UDP- and TCP-specific configuration | |||
for NTP."; | parameters for DNS."; | |||
leaf address { | reference | |||
type inet:host; | "RFC 1035: Domain Names - Implementation and | |||
mandatory true; | Specification | |||
description | RFC 5966: DNS Transport over TCP - Implementation | |||
"The address of the NTP server."; | Requirements"; | |||
} | ||||
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."; | ||||
} | ||||
} | leaf address { | |||
default server; | type inet:ip-address; | |||
description | mandatory true; | |||
"The desired association type for this NTP server."; | description | |||
} | "The address of the DNS server."; | |||
leaf iburst { | } | |||
type boolean; | leaf port { | |||
default false; | if-feature dns-udp-tcp-port; | |||
description | type inet:port-number; | |||
"Indicates whether this server should enable burst | default 53; | |||
synchronization or not."; | description | |||
} | "The UDP and TCP port number of the DNS server."; | |||
leaf prefer { | } | |||
type boolean; | } | |||
default false; | } | |||
description | } | |||
"Indicates whether this server should be preferred | } | |||
or not."; | 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; | ||||
container dns-resolver { | description | |||
description | "Configuration of the RADIUS client."; | |||
"Configuration of the DNS resolver."; | ||||
leaf-list search { | list server { | |||
type inet:domain-name; | key name; | |||
ordered-by user; | ordered-by user; | |||
description | description | |||
"An ordered list of domains to search when resolving | "List of RADIUS servers used by the device. | |||
a host name."; | ||||
} | ||||
list server { | ||||
key name; | ||||
ordered-by user; | ||||
description | ||||
"List of the DNS servers that the resolver should query. | ||||
When the resolver is invoked by a calling application, it | When the RADIUS client is invoked by a calling | |||
sends the query to the first name server in this list. If | application, it sends the query to the first server in | |||
no response has been received within 'timeout' seconds, | this list. If no response has been received within | |||
the resolver continues with the next server in the list. | 'timeout' seconds, the client continues with the next | |||
If no response is received from any server, the resolver | server in the list. If no response is received from any | |||
continues with the first server again. When the resolver | server, the client continues with the first server again. | |||
has traversed the list 'attempts' times without receiving | When the client has traversed the list 'attempts' times | |||
any response, it gives up and returns an error to the | without receiving any response, it gives up and returns an | |||
calling application. | error to the calling application."; | |||
Implementations MAY limit the number of entries in this | leaf name { | |||
list."; | type string; | |||
description | ||||
"An arbitrary name for the RADIUS server."; | ||||
} | ||||
choice transport { | ||||
mandatory true; | ||||
description | ||||
"The transport-protocol-specific parameters for this | ||||
server."; | ||||
leaf name { | case udp { | |||
type string; | container udp { | |||
description | description | |||
"An arbitrary name for the DNS server."; | "Contains UDP-specific configuration parameters | |||
} | for RADIUS."; | |||
choice transport { | leaf address { | |||
mandatory true; | type inet:host; | |||
description | mandatory true; | |||
"The transport protocol specific parameters for this | description | |||
server."; | "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."; | ||||
case udp-and-tcp { | leaf timeout { | |||
container udp-and-tcp { | type uint8 { | |||
description | range "1..max"; | |||
"Contains UDP and TCP specific configuration | } | |||
parameters for DNS."; | units "seconds"; | |||
reference | default "5"; | |||
"RFC 1035: Domain Implementation and Specification | description | |||
RFC 5966: DNS over TCP"; | "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."; | ||||
} | ||||
} | ||||
} | ||||
leaf address { | container authentication { | |||
type inet:ip-address; | nacm:default-deny-write; | |||
mandatory true; | if-feature authentication; | |||
description | ||||
"The address of the DNS server."; | description | |||
} | "The authentication configuration subtree."; | |||
leaf port { | ||||
if-feature dns-udp-tcp-port; | leaf-list user-authentication-order { | |||
type inet:port-number; | type identityref { | |||
default 53; | base authentication-method; | |||
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 { | must '(. != "sys:radius" or ../../radius/server)' { | |||
type uint8 { | error-message | |||
range "1..max"; | "When 'radius' is used, a RADIUS server" | |||
} | + " must be configured."; | |||
default "2"; | ||||
description | description | |||
"The number of times the resolver will send a query to | "When 'radius' is used as an authentication method, | |||
all its name servers before giving up and returning an | a RADIUS server must be configured."; | |||
error to the calling application."; | ||||
} | } | |||
} | ordered-by user; | |||
} | ||||
container radius { | description | |||
if-feature radius; | "When the device authenticates a user with a password, | |||
it tries the authentication methods in this leaf-list in | ||||
order. If authentication with one method fails, the next | ||||
method is used. If no method succeeds, the user is | ||||
denied access. | ||||
description | An empty user-authentication-order leaf-list still allows | |||
"Configuration of the RADIUS client."; | authentication of users using mechanisms that do not | |||
involve a password. | ||||
list server { | If the 'radius-authentication' feature is advertised by | |||
the NETCONF server, the 'radius' identity can be added to | ||||
this list. | ||||
If the 'local-users' feature is advertised by the | ||||
NETCONF server, the 'local-users' identity can be | ||||
added to this list."; | ||||
} | ||||
list user { | ||||
if-feature local-users; | ||||
key name; | key name; | |||
ordered-by user; | ||||
description | description | |||
"List of RADIUS servers used by the device. | "The list of local users configured on this device."; | |||
When the RADIUS client is invoked by a calling | ||||
application, it sends the query to the first server in | ||||
this list. If no response has been received within | ||||
'timeout' seconds, the client continues with the next | ||||
server in the list. If no response is received from any | ||||
server, the client continues with the first server again. | ||||
When the client has traversed the list 'attempts' times | ||||
without receiving any response, it gives up and returns an | ||||
error to the calling application."; | ||||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"An arbitrary name for the RADIUS server."; | "The user name string identifying this entry."; | |||
} | } | |||
choice transport { | leaf password { | |||
mandatory true; | type ianach:crypt-hash; | |||
description | description | |||
"The transport protocol specific parameters for this | "The password for this entry."; | |||
server."; | ||||
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 { | list authorized-key { | |||
type identityref { | key name; | |||
base radius-authentication-type; | ||||
} | ||||
default radius-pap; | ||||
description | description | |||
"The authentication type requested from the RADIUS | "A list of public SSH keys for this user. These keys | |||
server."; | are allowed for SSH authentication, as described in | |||
} | RFC 4253."; | |||
} | reference | |||
container options { | "RFC 4253: The Secure Shell (SSH) Transport Layer | |||
description | Protocol"; | |||
"RADIUS client options."; | ||||
leaf timeout { | leaf name { | |||
type uint8 { | type string; | |||
range "1..max"; | description | |||
"An arbitrary name for the SSH key."; | ||||
} | } | |||
units "seconds"; | leaf algorithm { | |||
default "5"; | type string; | |||
description | mandatory true; | |||
"The number of seconds the device will wait for a | description | |||
response from each RADIUS server before trying with a | "The public key algorithm name for this SSH key. | |||
different server."; | ||||
} | Valid values are the values in the IANA 'Secure Shell | |||
leaf attempts { | (SSH) Protocol Parameters' registry, Public Key | |||
type uint8 { | Algorithm Names."; | |||
range "1..max"; | 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.: | ||||
string certificate or public key format | ||||
identifier | ||||
byte[n] key/certificate data."; | ||||
reference | ||||
"RFC 4253: The Secure Shell (SSH) Transport Layer | ||||
Protocol"; | ||||
} | } | |||
default "2"; | ||||
description | ||||
"The number of times the device will send a query to | ||||
all its RADIUS servers before giving up."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | ||||
container authentication { | /* | |||
nacm:default-deny-write; | * Operational state data nodes | |||
if-feature authentication; | */ | |||
description | ||||
"The authentication configuration subtree."; | ||||
leaf-list user-authentication-order { | ||||
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; | ||||
description | ||||
"When the device authenticates a user with a password, | ||||
it tries the authentication methods in this leaf-list in | ||||
order. If authentication with one method fails, the next | ||||
method is used. If no method succeeds, the user is | ||||
denied access. | ||||
An empty user-authentication-order leaf-list still allows | ||||
authentication of users using mechanisms that do not | ||||
involve a password. | ||||
If the 'radius-authentication' feature is advertised by | ||||
the NETCONF server, the 'radius' identity can be added to | ||||
this list. | ||||
If the 'local-users' feature is advertised by the | ||||
NETCONF server, the 'local-users' identity can be | ||||
added to this list."; | ||||
} | ||||
list user { | ||||
if-feature local-users; | ||||
key name; | ||||
description | ||||
"The list of local users configured on this 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"; | ||||
leaf name { | container system-state { | |||
type string; | config false; | |||
description | description | |||
"An arbitrary name for the SSH key."; | "System group operational state."; | |||
} | ||||
leaf algorithm { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"The public key algorithm name for this SSH key. | ||||
Valid values are the values in the IANA Secure Shell | container platform { | |||
(SSH) Protocol Parameters registry, Public Key | description | |||
Algorithm Names"; | "Contains vendor-specific information for | |||
reference | identifying the system platform and operating system."; | |||
"IANA Secure Shell (SSH) Protocol Parameters registry, | reference | |||
Public Key Algorithm Names"; | "IEEE Std 1003.1-2008 - sys/utsname.h"; | |||
} | ||||
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.,: | ||||
string certificate or public key format | leaf os-name { | |||
identifier | type string; | |||
byte[n] key/certificate data | description | |||
"; | "The name of the operating system in use - | |||
reference | for example, 'Linux'."; | |||
"RFC 4253: The Secure Shell (SSH) Transport Layer | reference | |||
Protocol"; | "IEEE Std 1003.1-2008 - utsname.sysname"; | |||
} | ||||
} | ||||
} | ||||
} | } | |||
} | leaf os-release { | |||
type string; | ||||
/* | description | |||
* Operational state data nodes | "The current release level of the operating | |||
*/ | system in use. This string MAY indicate | |||
the OS source code revision."; | ||||
container system-state { | reference | |||
config false; | "IEEE Std 1003.1-2008 - utsname.release"; | |||
description | } | |||
"System group operational state."; | leaf os-version { | |||
type string; | ||||
container platform { | description | |||
description | "The current version level of the operating | |||
"Contains vendor-specific information for | system in use. This string MAY indicate | |||
identifying the system platform and operating system."; | the specific OS build date and target variant | |||
reference | information."; | |||
"IEEE Std 1003.1-2008 - sys/utsname.h"; | 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"; | ||||
} | ||||
} | ||||
leaf os-name { | container clock { | |||
type string; | description | |||
description | "Monitoring of the system date and time properties."; | |||
"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"; | ||||
} | ||||
} | ||||
container clock { | leaf current-datetime { | |||
description | type yang:date-and-time; | |||
"Monitoring of the system | description | |||
date and time properties."; | "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."; | ||||
} | ||||
} | ||||
} | ||||
leaf current-datetime { | rpc set-current-datetime { | |||
type yang:date-and-time; | nacm:default-deny-all; | |||
description | description | |||
"The current system date and time."; | "Set the /system-state/clock/current-datetime leaf | |||
} | to the specified value. | |||
leaf boot-datetime { | ||||
type yang:date-and-time; | ||||
description | ||||
"The system date and time when the system last restarted."; | ||||
} | ||||
} | ||||
} | ||||
rpc set-current-datetime { | If the system is using NTP (i.e., /system/ntp/enabled | |||
nacm:default-deny-all; | is set to 'true'), then this operation will fail with | |||
description | error-tag 'operation-failed' and error-app-tag value of | |||
"Set the /system-state/clock/current-datetime leaf | 'ntp-active'."; | |||
to the specified value. | input { | |||
leaf current-datetime { | ||||
type yang:date-and-time; | ||||
mandatory true; | ||||
description | ||||
"The current system date and time."; | ||||
} | ||||
} | ||||
} | ||||
If the system is using NTP (i.e., /system/ntp/enabled | rpc system-restart { | |||
is set to 'true'), then this operation will | nacm:default-deny-all; | |||
fail with error-tag 'operation-failed', | description | |||
and error-app-tag value of 'ntp-active'"; | "Request that the entire system be restarted immediately. | |||
input { | A server SHOULD send an rpc reply to the client before | |||
leaf current-datetime { | restarting the system."; | |||
type yang:date-and-time; | } | |||
mandatory true; | ||||
description | ||||
"The current system date and time."; | ||||
} | ||||
} | ||||
} | ||||
rpc system-restart { | rpc system-shutdown { | |||
nacm:default-deny-all; | nacm:default-deny-all; | |||
description | description | |||
"Request that the entire system be restarted immediately. | "Request that the entire system be shut down immediately. | |||
A server SHOULD send an rpc reply to the client before | A server SHOULD send an rpc reply to the client before | |||
restarting the system."; | shutting down 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."; | ||||
} | ||||
} | ||||
<CODE ENDS> | <CODE ENDS> | |||
7. IANA Considerations | 7. IANA Considerations | |||
IANA is requested to create an IANA-maintained YANG Module called | IANA has created an IANA-maintained YANG module called | |||
"iana-crypt-hash", based on the contents of Section 5, which will | "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". | allow for new hash algorithms to be added to the type "crypt-hash". | |||
The registration procedure will be Expert Review, as defined by | The registration procedure will be Expert Review, as defined by | |||
[RFC5226]. | [RFC5226]. | |||
This document registers two URIs in the IETF XML registry [RFC3688]. | This document registers two URIs in the "IETF XML Registry" | |||
Following the format in RFC 3688, the following registrations are | [RFC3688]. Following the format in RFC 3688, the following | |||
requested to be made. | registrations have been made. | |||
URI: urn:ietf:params:xml:ns:yang:iana-crypt-hash | URI: urn:ietf:params:xml:ns:yang:iana-crypt-hash | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
URI: urn:ietf:params:xml:ns:yang:ietf-system | URI: urn:ietf:params:xml:ns:yang:ietf-system | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
This document registers two YANG modules in the YANG Module Names | This document registers two YANG modules in the "YANG Module Names" | |||
registry [RFC6020]. | registry [RFC6020]. | |||
name: iana-crypt-hash | name: iana-crypt-hash | |||
namespace: urn:ietf:params:xml:ns:yang:iana-crypt-hash | namespace: urn:ietf:params:xml:ns:yang:iana-crypt-hash | |||
prefix: ianach | prefix: ianach | |||
reference: RFC XXXX | reference: RFC 7317 | |||
name: ietf-system | name: ietf-system | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-system | namespace: urn:ietf:params:xml:ns:yang:ietf-system | |||
prefix: sys | prefix: sys | |||
reference: RFC XXXX | reference: RFC 7317 | |||
8. Security Considerations | 8. Security Considerations | |||
The YANG modules defined in this memo are designed to be accessed via | The YANG modules defined in this memo are designed to be accessed via | |||
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | |||
secure transport layer and the mandatory-to-implement secure | secure transport layer and the mandatory to implement secure | |||
transport is SSH [RFC6242]. Authorization for access to specific | transport is SSH [RFC6242]. The NETCONF access control model | |||
portions of conceptual data and operations within this module is | [RFC6536] provides the means to restrict access for particular | |||
provided by the NETCONF access control model (NACM) [RFC6536]. | NETCONF users to a pre-configured subset of all available NETCONF | |||
protocol operations and content. | ||||
There are a number of data nodes defined in the "ietf-system" YANG | There are a number of data nodes defined in the "ietf-system" YANG | |||
module which are writable/creatable/deletable (i.e., config true, | module which are writable/creatable/deletable (i.e., config true, | |||
which is the default). These data nodes may be considered sensitive | which is the default). These data nodes may be considered sensitive | |||
or vulnerable in some network environments. Write operations to | or vulnerable in some network environments. Write operations (e.g., | |||
these data nodes can have a negative effect on network operations. | edit-config) to these data nodes without proper protection can have a | |||
It is thus important to control write access (e.g., via edit-config) | negative effect on network operations. These are the subtrees and | |||
to these data nodes. These are the subtrees and data nodes and their | data nodes and their sensitivity/vulnerability: | |||
sensitivity/vulnerability: | ||||
o /system/clock/timezone: This choice contains the objects used to | o /system/clock/timezone: This choice contains the objects used to | |||
control the timezone used by the device. | control the time zone used by the device. | |||
o /system/ntp: This container contains the objects used to control | o /system/ntp: This container contains the objects used to control | |||
the Network Time Protocol servers used by the device. | the Network Time Protocol servers used by the device. | |||
o /system/dns-resolver: This container contains the objects used to | o /system/dns-resolver: This container contains the objects used to | |||
control the Domain Name System servers used by the device. | control the Domain Name System servers used by the device. | |||
o /system/radius: This container contains the objects used to | o /system/radius: This container contains the objects used to | |||
control the Remote Authentication Dial-In User Service servers | control the Remote Authentication Dial-In User Service servers | |||
used by the device. | used by the device. | |||
o /system/authentication/user-authentication-order: This leaf | o /system/authentication/user-authentication-order: This leaf | |||
controls how user login attempts are authenticated by the device. | controls how user login attempts are authenticated by the device. | |||
o /system/authentication/user: This list contains the local users | o /system/authentication/user: This list contains the local users | |||
enabled on the system. | enabled on the system. | |||
Some of the readable data nodes in the "ietf-system" YANG module may | Some of the readable data nodes in the "ietf-system" YANG module may | |||
be considered sensitive or vulnerable in some network environments. | be considered sensitive or vulnerable in some network environments. | |||
It is thus important to control read access (e.g., via get, get- | It is thus important to control read access (e.g., via get, | |||
config, or notification) to these data nodes. These are the subtrees | get-config or notification) to these data nodes. These are the | |||
and data nodes and their sensitivity/vulnerability: | subtrees and data nodes and their sensitivity/vulnerability: | |||
o /system/platform: This container has objects which may help | o /system/platform: This container has objects that may help | |||
identify the specific NETCONF server and/or operating system | identify the specific NETCONF server and/or operating system | |||
implementation used on the device. | implementation used on the device. | |||
o /system/authentication/user: This list has objects that may help | o /system/authentication/user: This list has objects that may help | |||
identify the specific user names and password information in use | identify the specific user names and password information in use | |||
on the device. | on the device. | |||
Some of the remote procedure call (RPC) operations in the | Some of the RPC operations in the "ietf-system" YANG module may be | |||
"ietf-system" YANG module may be considered sensitive or vulnerable | considered sensitive or vulnerable in some network environments. It | |||
in some network environments. It is thus important to control access | is thus important to control access to these operations. These are | |||
to these operations. These are the operations and their sensitivity/ | the operations and their sensitivity/vulnerability: | |||
vulnerability: | ||||
o set-current-datetime: Changes the current date and time on the | o set-current-datetime: Changes the current date and time on the | |||
device. | device. | |||
o system-restart: Reboots the device. | o system-restart: Reboots the device. | |||
o system-shutdown: Shuts down the device. | o system-shutdown: Shuts down the device. | |||
Since this document describes the use of RADIUS for purposes of | Since this document describes the use of RADIUS for purposes of | |||
authentication, it is vulnerable to all of the threats that are | authentication, it is vulnerable to all of the threats that are | |||
present in other RADIUS applications. For a discussion of such | present in other RADIUS applications. For a discussion of such | |||
threats, see [RFC2865] and [RFC3162], and section 4 of [RFC3579]. | threats, see [RFC2865] and [RFC3162], and Section 4 of [RFC3579]. | |||
This document provides configuration parameters for SSH's "publickey" | This document provides configuration parameters for SSH's "publickey" | |||
and "password" authentication mechanisms. Section 9.4 of [RFC4251] | and "password" authentication mechanisms. Section 9.4 of [RFC4251] | |||
and section 11 of [RFC4252] discuss security considerations for these | and Section 11 of [RFC4252] discuss security considerations for these | |||
mechanisms. | mechanisms. | |||
The "iana-crypt-hash" YANG module defines a type "crypt-hash" that | The "iana-crypt-hash" YANG module defines a type "crypt-hash" that | |||
can be used to store MD5 hashes. [RFC6151] discusses security | can be used to store MD5 hashes. [RFC6151] discusses security | |||
considerations for MD5. The usage of MD5 is NOT RECOMMENDED. | considerations for MD5. The usage of MD5 is NOT RECOMMENDED. | |||
9. Change Log | 9. References | |||
-- RFC Ed.: remove this section before publication. | ||||
9.1. 00-01 | ||||
o added configuration-source identities | ||||
o added configuration-source leaf to ntp and dns (via grouping) to | ||||
choose configuration source | ||||
o added association-type, iburst, prefer, and true leafs to the ntp- | ||||
server list | ||||
o extended the ssh keys for a user to a list of keys. support all | ||||
defined key algorithms, not just dsa and rsa | ||||
o clarified timezone-utc-offset description-stmt | ||||
o removed '/system/ntp/server/true' leaf from data model | ||||
9.2. 01-02 | ||||
o added default-stmts to ntp-server/iburst and ntp-server/prefer | ||||
leafs | ||||
o changed timezone-location leaf to use iana-timezone typedef | ||||
instead of a string | ||||
9.3. 02-03 | ||||
o removed configuration-source identities and leafs | ||||
9.4. 03-04 | ||||
o removed ndots dns resolver option | ||||
o added radius-authentication-type identity, and identities for pap | ||||
and chap, and a leaf to control which authentication type to use | ||||
when communicating with the radius server | ||||
o made 0 an invalid value for timeouts and attempts | ||||
9.5. 04-05 | ||||
o updated tree diagram explanation text | ||||
9.6. 05-06 | ||||
o changed ntp/use-ntp to ntp/enabled | ||||
o changed ntp/ntp-server to ntp/server | ||||
o removed /system/platform/nodename leaf | ||||
o changed /system/name to /system/hostname | ||||
o simplified must expression in user-authentication-order | ||||
o added optional rounds to sha hash definition | ||||
o clarified the crypt-hash description | ||||
o clarified ntp descriptions | ||||
o clarified YANG module description to indicate that some system | ||||
properties are supported, not the entire system | ||||
o clarified that system identification values are vendor specific, | ||||
not the data node objects | ||||
o clarified sec. 2.2 and 2.3 to indicate that the server should also | ||||
be capable of configuring these properties | ||||
o changed /system/dns/search from inet:host to inet:domain-name | ||||
o changed RFC6021 reference to 6021-bis | ||||
o changed /system/platform/nodename to /system/platform/hostname | ||||
o changed /system/radius/server/{leafs} to be within a choice and | ||||
'udp' case statement so other transport specific parameters can | ||||
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 | ||||
9.7. 06-07 | ||||
o updated the Abstract and Introduction | ||||
o updated Tree diagram notation | ||||
o identify all external servers (dns, ntp, radius) by name instead | ||||
of address, in order to make the data model extensible for | ||||
additional transport protocol. | ||||
o updated the Security Considerations section with a reference to | ||||
NACM. | ||||
9.8. 07-08 | ||||
o renamed the DNS transport to 'udp-and-tcp' and added references. | ||||
o moved the operational state nodes into /system-state. | ||||
9.9. 08-09 | ||||
o made "ntp" node a presence container | ||||
o added reference to RFC 6151 | ||||
o updated reference from 6021-bis to RFC 6991 | ||||
o cleaned up usage of config false in the YANG module | ||||
9.10. 09-10 | ||||
o clarified relationship with SNMPv2-MIB | ||||
9.11. 11-12 | ||||
o added typedef "timezone-name", and removed reference to | ||||
draft-ietf-netmod-iana-timezones | ||||
9.12. 13-14 | ||||
o moved the "crypt-hash" typedef to an IANA maintained module. | ||||
o updated security considerations to mention RADIUS threats. | ||||
9.13. 14-15 | ||||
o updated security considerations to mention SSH authentication | ||||
method threats. | ||||
10. References | ||||
10.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>. | |||
[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 | [RFC1035] Mockapetris, P., "Domain names - implementation and | |||
specification", STD 13, RFC 1035, November 1987. | 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. | |||
skipping to change at page 40, line 32 | skipping to change at page 35, line 5 | |||
[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. | |||
[RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, | [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, | |||
July 2013. | July 2013. | |||
10.2. Informative References | 9.2. Informative References | |||
[RFC3579] Aboba, B. and P. Calhoun, "RADIUS (Remote Authentication | [RFC3579] Aboba, B. and P. Calhoun, "RADIUS (Remote Authentication | |||
Dial In User Service) Support For Extensible | Dial In User Service) Support For Extensible | |||
Authentication Protocol (EAP)", RFC 3579, September 2003. | 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. 172 change blocks. | ||||
1047 lines changed or deleted | 872 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/ |