idnits 2.17.1 draft-ietf-netconf-ssh-client-server-08.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (October 22, 2018) is 2013 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-34) exists of draft-ietf-netconf-crypto-types-01 == Outdated reference: A later version (-35) exists of draft-ietf-netconf-keystore-06 == Outdated reference: A later version (-28) exists of draft-ietf-netconf-trust-anchors-01 Summary: 0 errors (**), 0 flaws (~~), 4 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 NETCONF Working Group K. Watsen 3 Internet-Draft Juniper Networks 4 Intended status: Standards Track G. Wu 5 Expires: April 25, 2019 Cisco Systems 6 L. Xia 7 Huawei 8 October 22, 2018 10 YANG Groupings for SSH Clients and SSH Servers 11 draft-ietf-netconf-ssh-client-server-08 13 Abstract 15 This document defines three YANG modules: the first defines groupings 16 for a generic SSH client, the second defines groupings for a generic 17 SSH server, and the third defines common identities and groupings 18 used by both the client and the server. It is intended that these 19 groupings will be used by applications using the SSH protocol. 21 Editorial Note (To be removed by RFC Editor) 23 This draft contains many placeholder values that need to be replaced 24 with finalized values at the time of publication. This note 25 summarizes all of the substitutions that are needed. No other RFC 26 Editor instructions are specified elsewhere in this document. 28 This document contains references to other drafts in progress, both 29 in the Normative References section, as well as in body text 30 throughout. Please update the following references to reflect their 31 final RFC assignments: 33 o I-D.ietf-netconf-trust-anchors 35 o I-D.ietf-netconf-keystore 37 Artwork in this document contains shorthand references to drafts in 38 progress. Please apply the following replacements: 40 o "XXXX" --> the assigned RFC value for this draft 42 o "YYYY" --> the assigned RFC value for I-D.ietf-netconf-trust- 43 anchors 45 o "ZZZZ" --> the assigned RFC value for I-D.ietf-netconf-keystore 47 Artwork in this document contains placeholder values for the date of 48 publication of this draft. Please apply the following replacement: 50 o "2018-10-22" --> the publication date of this draft 52 The following Appendix section is to be removed prior to publication: 54 o Appendix A. Change Log 56 Status of This Memo 58 This Internet-Draft is submitted in full conformance with the 59 provisions of BCP 78 and BCP 79. 61 Internet-Drafts are working documents of the Internet Engineering 62 Task Force (IETF). Note that other groups may also distribute 63 working documents as Internet-Drafts. The list of current Internet- 64 Drafts is at https://datatracker.ietf.org/drafts/current/. 66 Internet-Drafts are draft documents valid for a maximum of six months 67 and may be updated, replaced, or obsoleted by other documents at any 68 time. It is inappropriate to use Internet-Drafts as reference 69 material or to cite them other than as "work in progress." 71 This Internet-Draft will expire on April 25, 2019. 73 Copyright Notice 75 Copyright (c) 2018 IETF Trust and the persons identified as the 76 document authors. All rights reserved. 78 This document is subject to BCP 78 and the IETF Trust's Legal 79 Provisions Relating to IETF Documents 80 (https://trustee.ietf.org/license-info) in effect on the date of 81 publication of this document. Please review these documents 82 carefully, as they describe your rights and restrictions with respect 83 to this document. Code Components extracted from this document must 84 include Simplified BSD License text as described in Section 4.e of 85 the Trust Legal Provisions and are provided without warranty as 86 described in the Simplified BSD License. 88 Table of Contents 90 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 91 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 92 3. The SSH Client Model . . . . . . . . . . . . . . . . . . . . 4 93 3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 4 94 3.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 5 95 3.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 8 96 4. The SSH Server Model . . . . . . . . . . . . . . . . . . . . 12 97 4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 12 98 4.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 12 99 4.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 16 100 5. The SSH Common Model . . . . . . . . . . . . . . . . . . . . 20 101 5.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 22 102 5.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 23 103 5.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 23 104 6. Security Considerations . . . . . . . . . . . . . . . . . . . 33 105 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 106 7.1. The IETF XML Registry . . . . . . . . . . . . . . . . . . 34 107 7.2. The YANG Module Names Registry . . . . . . . . . . . . . 34 108 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 35 109 8.1. Normative References . . . . . . . . . . . . . . . . . . 35 110 8.2. Informative References . . . . . . . . . . . . . . . . . 36 111 Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 38 112 A.1. 00 to 01 . . . . . . . . . . . . . . . . . . . . . . . . 38 113 A.2. 01 to 02 . . . . . . . . . . . . . . . . . . . . . . . . 38 114 A.3. 02 to 03 . . . . . . . . . . . . . . . . . . . . . . . . 38 115 A.4. 03 to 04 . . . . . . . . . . . . . . . . . . . . . . . . 38 116 A.5. 04 to 05 . . . . . . . . . . . . . . . . . . . . . . . . 39 117 A.6. 05 to 06 . . . . . . . . . . . . . . . . . . . . . . . . 39 118 A.7. 06 to 07 . . . . . . . . . . . . . . . . . . . . . . . . 39 119 A.8. 07 to 08 . . . . . . . . . . . . . . . . . . . . . . . . 39 120 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 39 121 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 40 123 1. Introduction 125 This document defines three YANG 1.1 [RFC7950] modules: the first 126 defines a grouping for a generic SSH client, the second defines a 127 grouping for a generic SSH server, and the third defines identities 128 and groupings common to both the client and the server. It is 129 intended that these groupings will be used by applications using the 130 SSH protocol [RFC4252], [RFC4253], and [RFC4254]. For instance, 131 these groupings could be used to help define the data model for an 132 OpenSSH [OPENSSH] server or a NETCONF over SSH [RFC6242] based 133 server. 135 The client and server YANG modules in this document each define one 136 grouping, which is focused on just SSH-specific configuration, and 137 specifically avoids any transport-level configuration, such as what 138 ports to listen on or connect to. This affords applications the 139 opportunity to define their own strategy for how the underlying TCP 140 connection is established. For instance, applications supporting 141 NETCONF Call Home [RFC8071] could use the "ssh-server-grouping" 142 grouping for the SSH parts it provides, while adding data nodes for 143 the TCP-level call-home configuration. 145 The modules defined in this document uses groupings defined in 146 [I-D.ietf-netconf-keystore] enabling keys to be either locally 147 defined or a reference to globally configured values. 149 The modules defined in this document optionally support [RFC6187] 150 enabling X.509v3 certificate based host keys and public keys. 152 2. Terminology 154 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 155 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 156 "OPTIONAL" in this document are to be interpreted as described in BCP 157 14 [RFC2119] [RFC8174] when, and only when, they appear in all 158 capitals, as shown here. 160 3. The SSH Client Model 162 3.1. Tree Diagram 164 This section provides a tree diagram [RFC8340] for the "ietf-ssh- 165 client" module that does not have groupings expanded. 167 module: ietf-ssh-client 169 grouping transport-params-grouping 170 +-- transport-params {ssh-client-transport-params-config}? 171 +---u transport-params-grouping 172 grouping client-identity-grouping 173 +-- client-identity 174 +-- username? string 175 +-- (auth-type) 176 +--:(password) 177 | +-- password? string 178 +--:(public-key) 179 | +-- public-key 180 | +---u client-identity-grouping 181 +--:(certificate) 182 +-- certificate {sshcmn:ssh-x509-certs}? 183 +---u client-identity-grouping 184 grouping ssh-client-grouping 185 +---u client-identity-grouping 186 +---u server-auth-grouping 187 +---u transport-params-grouping 188 grouping server-auth-grouping 189 +-- server-auth 190 +-- pinned-ssh-host-keys? ta:pinned-host-keys-ref 191 | {ta:ssh-host-keys}? 192 +-- pinned-ca-certs? ta:pinned-certificates-ref 193 | {sshcmn:ssh-x509-certs,ta:x509-certificates}? 194 +-- pinned-server-certs? ta:pinned-certificates-ref 195 {sshcmn:ssh-x509-certs,ta:x509-certificates}? 197 3.2. Example Usage 199 This section presents two examples showing the ssh-client-grouping 200 populated with some data. These examples are effectively the same 201 except the first configures the client identity using a local key 202 while the second uses a key configured in a keystore. Both examples 203 are consistent with the examples presented in Section 3 of 204 [I-D.ietf-netconf-trust-anchors] and Section 3.2 of 205 [I-D.ietf-netconf-keystore]. 207 The following example configures the client identity using a local 208 key: 210 [Note: '\' line wrapping for formatting only] 212 216 217 218 foobar 219 220 ct:rsa2048 222 base64encodedvalue== 223 base64encodedvalue== 224 225 227 228 229 explicitly-trusted-ssh-host-keys 231 233 234 235 algs:ssh-rsa 236 237 238 239 algs:diffie-hellman-group-exchange-sha256 240 241 242 243 algs:aes256-ctr 244 algs:aes192-ctr 245 algs:aes128-ctr 246 algs:aes256-cbc 247 algs:aes192-cbc 248 algs:aes128-cbc 249 250 251 algs:hmac-sha2-256 252 algs:hmac-sha2-512 253 254 256 257 The following example configures the client identity using a key from 258 the keystore: 260 [Note: '\' line wrapping for formatting only] 262 266 267 268 foobar 269 270 ex-rsa-key 271 272 274 275 276 explicitly-trusted-ssh-host-keys 278 280 281 282 algs:ssh-rsa 283 284 285 286 algs:diffie-hellman-group-exchange-sha256 287 288 289 290 algs:aes256-ctr 291 algs:aes192-ctr 292 algs:aes128-ctr 293 algs:aes256-cbc 294 algs:aes192-cbc 295 algs:aes128-cbc 296 297 298 algs:hmac-sha2-256 299 algs:hmac-sha2-512 300 301 303 305 3.3. YANG Module 307 This YANG module has normative references to 308 [I-D.ietf-netconf-trust-anchors], and [I-D.ietf-netconf-keystore]. 310 file "ietf-ssh-client@2018-10-22.yang" 311 module ietf-ssh-client { 312 yang-version 1.1; 314 namespace "urn:ietf:params:xml:ns:yang:ietf-ssh-client"; 315 prefix "sshc"; 317 import ietf-ssh-common { 318 prefix sshcmn; 319 revision-date 2018-10-22; // stable grouping definitions 320 reference 321 "RFC XXXX: YANG Groupings for SSH Clients and SSH Servers"; 322 } 324 import ietf-trust-anchors { 325 prefix ta; 326 reference 327 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 328 } 330 import ietf-keystore { 331 prefix ks; 332 reference 333 "RFC ZZZZ: 334 YANG Data Model for a Centralized Keystore Mechanism"; 335 } 337 organization 338 "IETF NETCONF (Network Configuration) Working Group"; 340 contact 341 "WG Web: 342 WG List: 344 Author: Kent Watsen 345 347 Author: Gary Wu 348 "; 350 description 351 "This module defines a reusable grouping for a SSH client that 352 can be used as a basis for specific SSH client instances. 354 Copyright (c) 2018 IETF Trust and the persons identified as 355 authors of the code. All rights reserved. 357 Redistribution and use in source and binary forms, with or 358 without modification, is permitted pursuant to, and subject 359 to the license terms contained in, the Simplified BSD 360 License set forth in Section 4.c of the IETF Trust's 361 Legal Provisions Relating to IETF Documents 362 (http://trustee.ietf.org/license-info). 364 This version of this YANG module is part of RFC XXXX; see 365 the RFC itself for full legal notices."; 367 revision "2018-10-22" { 368 description 369 "Initial version"; 370 reference 371 "RFC XXXX: YANG Groupings for SSH Clients and SSH Servers"; 372 } 374 // features 376 feature ssh-client-transport-params-config { 377 description 378 "SSH transport layer parameters are configurable on an SSH 379 client."; 380 } 382 // groupings 384 grouping ssh-client-grouping { 385 description 386 "A reusable grouping for configuring a SSH client without 387 any consideration for how an underlying TCP session is 388 established."; 389 uses client-identity-grouping; 390 uses server-auth-grouping; 391 uses transport-params-grouping; 392 } 394 grouping client-identity-grouping { 395 description 396 "A reusable grouping for configuring a SSH client identity."; 397 container client-identity { 398 description 399 "The credentials used by the client to authenticate to 400 the SSH server."; 401 leaf username { 402 type string; 403 description 404 "The username of this user. This will be the username 405 used, for instance, to log into an SSH server."; 406 } 407 choice auth-type { 408 mandatory true; 409 description 410 "The authentication type."; 411 leaf password { 412 type string; 413 description 414 "A password to be used for client authentication."; 415 } 416 container public-key { 417 uses ks:local-or-keystore-asymmetric-key-grouping; 418 description 419 "A locally-defined or referenced asymmetric key pair 420 to be used for client authentication."; 421 reference 422 "RFC ZZZZ: 423 YANG Data Model for a Centralized Keystore Mechanism"; 424 } 425 container certificate { 426 if-feature sshcmn:ssh-x509-certs; 427 uses ks:local-or-keystore-end-entity-cert-with-key-grouping; 428 description 429 "A locally-defined or referenced certificate 430 to be used for client authentication."; 431 reference 432 "RFC ZZZZ 433 YANG Data Model for a Centralized Keystore Mechanism"; 434 } 435 } // end auth-type 436 } // end client-identity 437 } // end client-identity-grouping 439 grouping server-auth-grouping { 440 description 441 "A reusable grouping for configuring SSH server 442 authentication."; 443 container server-auth { 444 must 'pinned-ssh-host-keys or pinned-ca-certs or ' 445 + 'pinned-server-certs'; 446 description 447 "Trusted server identities."; 449 leaf pinned-ssh-host-keys { 450 if-feature "ta:ssh-host-keys"; 451 type ta:pinned-host-keys-ref; 452 description 453 "A reference to a list of SSH host keys used by the 454 SSH client to authenticate SSH server host keys. 455 A server host key is authenticated if it is an exact 456 match to a configured SSH host key."; 457 reference 458 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 459 } 460 leaf pinned-ca-certs { 461 if-feature sshcmn:ssh-x509-certs; 462 if-feature "ta:x509-certificates"; 463 type ta:pinned-certificates-ref; 464 description 465 "A reference to a list of certificate authority (CA) 466 certificates used by the SSH client to authenticate 467 SSH server certificates. A server certificate is 468 authenticated if it has a valid chain of trust to 469 a configured CA certificate."; 470 reference 471 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 472 } 474 leaf pinned-server-certs { 475 if-feature sshcmn:ssh-x509-certs; 476 if-feature "ta:x509-certificates"; 477 type ta:pinned-certificates-ref; 478 description 479 "A reference to a list of server certificates used by 480 the SSH client to authenticate SSH server certificates. 481 A server certificate is authenticated if it is an 482 exact match to a configured server certificate."; 483 reference 484 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 485 } 486 } // end server-auth 487 } // end server-auth-grouping 489 grouping transport-params-grouping { 490 description 491 "A reusable grouping for configuring a SSH transport 492 parameters."; 493 container transport-params { 494 if-feature ssh-client-transport-params-config; 495 description 496 "Configurable parameters of the SSH transport layer."; 498 uses sshcmn:transport-params-grouping; 499 } 500 } // end transport-params-grouping 502 } 503 505 4. The SSH Server Model 507 4.1. Tree Diagram 509 This section provides a tree diagram [RFC8340] for the "ietf-ssh- 510 server" module that does not have groupings expanded. 512 module: ietf-ssh-server 514 grouping transport-params-grouping 515 +-- transport-params {ssh-server-transport-params-config}? 516 +---u transport-params-grouping 517 grouping client-auth-grouping 518 +-- client-cert-auth {sshcmn:ssh-x509-certs}? 519 +-- pinned-ca-certs? ta:pinned-certificates-ref 520 | {ta:x509-certificates}? 521 +-- pinned-client-certs? ta:pinned-certificates-ref 522 {ta:x509-certificates}? 523 grouping server-identity-grouping 524 +-- server-identity 525 +-- host-key* [name] 526 +-- name? string 527 +-- (host-key-type) 528 +--:(public-key) 529 | +-- public-key 530 | +---u server-identity-grouping 531 +--:(certificate) 532 +-- certificate {sshcmn:ssh-x509-certs}? 533 +---u server-identity-grouping 534 grouping ssh-server-grouping 535 +---u server-identity-grouping 536 +---u client-auth-grouping 537 +---u transport-params-grouping 539 4.2. Example Usage 541 This section presents two examples showing the ssh-server-grouping 542 populated with some data. These examples are effectively the same 543 except the first configures the server identity using a local key 544 while the second uses a key configured in a keystore. Both examples 545 are consistent with the examples presented in Section 3 of 547 [I-D.ietf-netconf-trust-anchors] and Section 3.2 of 548 [I-D.ietf-netconf-keystore]. 550 The following example configures the server identity using a local 551 key: 553 [Note: '\' line wrapping for formatting only] 555 558 559 560 561 deployment-specific-certificate 562 563 ct:rsa2048 565 base64encodedvalue== 566 base64encodedvalue== 567 568 569 571 572 573 explicitly-trusted-client-ca-certs 575 explicitly-trusted-client-certs 577 579 580 581 algs:ssh-rsa 582 583 584 585 algs:diffie-hellman-group-exchange-sha256 586 587 588 589 algs:aes256-ctr 590 algs:aes192-ctr 591 algs:aes128-ctr 592 algs:aes256-cbc 593 algs:aes192-cbc 594 algs:aes128-cbc 595 596 597 algs:hmac-sha2-256 598 algs:hmac-sha2-512 599 600 602 604 The following example configures the server identity using a key from 605 the keystore: 607 [Note: '\' line wrapping for formatting only] 609 612 613 614 615 deployment-specific-certificate 616 617 ex-rsa-key 618 619 620 622 623 624 explicitly-trusted-client-ca-certs 626 explicitly-trusted-client-certs 628 630 631 632 algs:ssh-rsa 633 634 635 636 algs:diffie-hellman-group-exchange-sha256 637 638 639 640 algs:aes256-ctr 641 algs:aes192-ctr 642 algs:aes128-ctr 643 algs:aes256-cbc 644 algs:aes192-cbc 645 algs:aes128-cbc 646 647 648 algs:hmac-sha2-256 649 algs:hmac-sha2-512 650 651 653 655 4.3. YANG Module 657 This YANG module has normative references to 658 [I-D.ietf-netconf-trust-anchors] and [I-D.ietf-netconf-keystore] and 659 informative references to [RFC4253] and [RFC7317]. 661 file "ietf-ssh-server@2018-10-22.yang" 662 module ietf-ssh-server { 663 yang-version 1.1; 665 namespace "urn:ietf:params:xml:ns:yang:ietf-ssh-server"; 666 prefix "sshs"; 668 import ietf-ssh-common { 669 prefix sshcmn; 670 revision-date 2018-10-22; // stable grouping definitions 671 reference 672 "RFC XXXX: YANG Groupings for SSH Clients and SSH Servers"; 673 } 675 import ietf-trust-anchors { 676 prefix ta; 677 reference 678 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 679 } 681 import ietf-keystore { 682 prefix ks; 683 reference 684 "RFC ZZZZ: 685 YANG Data Model for a Centralized Keystore Mechanism"; 686 } 688 organization 689 "IETF NETCONF (Network Configuration) Working Group"; 691 contact 692 "WG Web: 693 WG List: 695 Author: Kent Watsen 696 698 Author: Gary Wu 699 "; 701 description 702 "This module defines a reusable grouping for a SSH server that 703 can be used as a basis for specific SSH server instances. 705 Copyright (c) 2018 IETF Trust and the persons identified as 706 authors of the code. All rights reserved. 708 Redistribution and use in source and binary forms, with or 709 without modification, is permitted pursuant to, and subject 710 to the license terms contained in, the Simplified BSD 711 License set forth in Section 4.c of the IETF Trust's 712 Legal Provisions Relating to IETF Documents 713 (http://trustee.ietf.org/license-info). 715 This version of this YANG module is part of RFC XXXX; see 716 the RFC itself for full legal notices."; 718 revision "2018-10-22" { 719 description 720 "Initial version"; 721 reference 722 "RFC XXXX: YANG Groupings for SSH Clients and SSH Servers"; 723 } 725 // features 727 feature ssh-server-transport-params-config { 728 description 729 "SSH transport layer parameters are configurable on an SSH 730 server."; 731 } 733 // groupings 735 grouping ssh-server-grouping { 736 description 737 "A reusable grouping for configuring a SSH server without 738 any consideration for how underlying TCP sessions are 739 established."; 740 uses server-identity-grouping; 741 uses client-auth-grouping; 742 uses transport-params-grouping; 743 } 745 grouping server-identity-grouping { 746 description 747 "A reusable grouping for configuring an SSH server identity."; 748 container server-identity { 749 description 750 "The list of host-keys the SSH server will present when 751 establishing a SSH connection."; 752 list host-key { 753 key name; 754 min-elements 1; 755 ordered-by user; 756 description 757 "An ordered list of host keys the SSH server will use to 758 construct its ordered list of algorithms, when sending 759 its SSH_MSG_KEXINIT message, as defined in Section 7.1 760 of RFC 4253."; 761 reference 762 "RFC 4253: The Secure Shell (SSH) Transport Layer 763 Protocol"; 764 leaf name { 765 type string; 766 description 767 "An arbitrary name for this host-key"; 768 } 769 choice host-key-type { 770 mandatory true; 771 description 772 "The type of host key being specified"; 773 container public-key { 774 uses ks:local-or-keystore-asymmetric-key-grouping; 775 description 776 "A locally-defined or referenced asymmetric key pair 777 to be used for the SSH server's host key."; 778 reference 779 "RFC ZZZZ: YANG Data Model for a Centralized 780 Keystore Mechanism"; 781 } 782 container certificate { 783 if-feature sshcmn:ssh-x509-certs; 784 uses 785 ks:local-or-keystore-end-entity-cert-with-key-grouping; 786 description 787 "A locally-defined or referenced end-entity 788 certificate to be used for the SSH server's 789 host key."; 790 reference 791 "RFC ZZZZ: YANG Data Model for a Centralized 792 Keystore Mechanism"; 793 } 794 } 795 } 796 } // end server-identity 797 } // end server-identity-grouping 798 grouping client-auth-grouping { 799 description 800 "A reusable grouping for configuring a SSH client 801 authentication."; 802 container client-cert-auth { 803 if-feature sshcmn:ssh-x509-certs; 804 description 805 "A reference to a list of pinned certificate authority (CA) 806 certificates and a reference to a list of pinned client 807 certificates. 809 Note: password and public-key based client authentication 810 are not configured in this YANG module as they are 811 expected to be configured by the ietf-system module 812 defined in RFC 7317."; 813 reference 814 "RFC 7317: A YANG Data Model for System Management"; 815 leaf pinned-ca-certs { 816 if-feature "ta:x509-certificates"; 817 type ta:pinned-certificates-ref; 818 description 819 "A reference to a list of certificate authority (CA) 820 certificates used by the SSH server to authenticate 821 SSH client certificates. A client certificate is 822 authenticated if it has a valid chain of trust to 823 a configured pinned CA certificate."; 824 reference 825 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 826 } 827 leaf pinned-client-certs { 828 if-feature "ta:x509-certificates"; 829 type ta:pinned-certificates-ref; 830 description 831 "A reference to a list of client certificates used by 832 the SSH server to authenticate SSH client certificates. 833 A clients certificate is authenticated if it is an 834 exact match to a configured pinned client certificate."; 835 reference 836 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 837 } 838 } 839 } // end client-auth-grouping 841 grouping transport-params-grouping { 842 description 843 "A reusable grouping for configuring a SSH transport 844 parameters."; 845 container transport-params { 846 if-feature ssh-server-transport-params-config; 847 description 848 "Configurable parameters of the SSH transport layer."; 849 uses sshcmn:transport-params-grouping; 850 } 851 } // end transport-params-grouping 853 } 854 856 5. The SSH Common Model 858 The SSH common model presented in this section contains identities 859 and groupings common to both SSH clients and SSH servers. The 860 transport-params-grouping can be used to configure the list of SSH 861 transport algorithms permitted by the SSH client or SSH server. The 862 lists of algorithms are ordered such that, if multiple algorithms are 863 permitted by the client, the algorithm that appears first in its list 864 that is also permitted by the server is used for the SSH transport 865 layer connection. The ability to restrict the the algorithms allowed 866 is provided in this grouping for SSH clients and SSH servers that are 867 capable of doing so and may serve to make SSH clients and SSH servers 868 compliant with security policies. 870 [I-D.ietf-netconf-crypto-types] defines six categories of 871 cryptographic algorithms (hash-algorithm, symmetric-key-encryption- 872 algorithm, mac-algorithm, asymmetric-key-encryption-algorithm, 873 signature-algorithm, key-negotiation-algorithm) and lists several 874 widely accepted algorithms for each of them. The SSH client and 875 server models use one or more of these algorithms. The SSH common 876 model includes four parameters for configuring its permitted SSH 877 algorithms, which are: host-key-alg, key-exchange-alg, encryption-alg 878 and mac-alg. The following tables are provided, in part, to define 879 the subset of algorithms defined in the crypto-types model used by 880 SSH and, in part, to ensure compatibility of configured SSH 881 cryptographic parameters for configuring its permitted SSH algorithms 882 ("sshcmn" representing SSH common model, and "ct" representing 883 crypto-types model which the SSH client/server model is based on): 885 +-------------------------------+-------------------------------+ 886 | sshcmn:host-key-alg | ct:signature-algorithm | 887 +-------------------------------+-------------------------------+ 888 | dsa-sha1 | dsa-sha1 | 889 | rsa-pkcs1-sha1 | rsa-pkcs1-sha1 | 890 | rsa-pkcs1-sha256 | rsa-pkcs1-sha256 | 891 | rsa-pkcs1-sha512 | rsa-pkcs1-sha512 | 892 | ecdsa-secp256r1-sha256 | ecdsa-secp256r1-sha256 | 893 | ecdsa-secp384r1-sha384 | ecdsa-secp384r1-sha384 | 894 | ecdsa-secp521r1-sha512 | ecdsa-secp521r1-sha512 | 895 | x509v3-rsa-pkcs1-sha1 | x509v3-rsa-pkcs1-sha1 | 896 | x509v3-rsa2048-pkcs1-sha256 | x509v3-rsa2048-pkcs1-sha1 | 897 | x509v3-ecdsa-secp256r1-sha256 | x509v3-ecdsa-secp256r1-sha256 | 898 | x509v3-ecdsa-secp384r1-sha384 | x509v3-ecdsa-secp384r1-sha384 | 899 | x509v3-ecdsa-secp521r1-sha512 | x509v3-ecdsa-secp521r1-sha512 | 900 +-------------------------------+-------------------------------+ 902 Table 1 The SSH Host-key-alg Compatibility Matrix 904 +-------------------------------+-------------------------------+ 905 | sshcmn:key-exchange-alg | ct:key-negotiation-algorithm | 906 +-------------------------------+-------------------------------+ 907 | diffie-hellman-group14-sha1 | diffie-hellman-group14-sha1 | 908 | diffie-hellman-group14-sha256 | diffie-hellman-group14-sha256 | 909 | diffie-hellman-group15-sha512 | diffie-hellman-group15-sha512 | 910 | diffie-hellman-group16-sha512 | diffie-hellman-group16-sha512 | 911 | diffie-hellman-group17-sha512 | diffie-hellman-group17-sha512 | 912 | diffie-hellman-group18-sha512 | diffie-hellman-group18-sha512 | 913 | ecdh-sha2-secp256r1 | ecdh-sha2-secp256r1 | 914 | ecdh-sha2-secp384r1 | ecdh-sha2-secp384r1 | 915 +-------------------------------+-------------------------------+ 917 Table 2 The SSH Key-exchange-alg Compatibility Matrix 919 +-----------------------+---------------------------------------+ 920 | sshcmn:encryption-alg | ct:symmetric-key-encryption-algorithm | 921 +-----------------------+---------------------------------------+ 922 | aes-128-cbc | aes-128-cbc | 923 | aes-192-cbc | aes-192-cbc | 924 | aes-256-cbc | aes-256-cbc | 925 | aes-128-ctr | aes-128-ctr | 926 | aes-192-ctr | aes-192-ctr | 927 | aes-256-ctr | aes-256-ctr | 928 +-----------------------+---------------------------------------+ 930 Table 3 The SSH Encryption-alg Compatibility Matrix 931 +----------------+-------------------+ 932 | sshcmn:mac-alg | ct:mac-algorithm | 933 +----------------+-------------------+ 934 | hmac-sha1 | hmac-sha1 | 935 | hmac-sha1-96 | hmac-sha1-96 | 936 | hmac-sha2-256 | hmac-sha2-256 | 937 | hmac-sha2-512 | hmac-sha2-512 | 938 +----------------+-------------------+ 940 Table 4 The SSH Mac-alg Compatibility Matrix 942 As is seen in the tables above, the names of the "sshcmn" algorithms 943 are all identical to the names of algorithms defined in 944 [I-D.ietf-netconf-crypto-types]. While appearing to be redundant, it 945 is important to realize that not all the algorithms defined in 946 [I-D.ietf-netconf-crypto-types] are supported by SSH. That is, the 947 algorithms supported by SSH are a subset of the algorithms defined in 948 [I-D.ietf-netconf-crypto-types]. The algorithms used by SSH are 949 redefined in this document in order to constrain the algorithms that 950 may be selected to just the ones used by SSH. 952 Features are defined for algorithms that are OPTIONAL or are not 953 widely supported by popular implementations. Note that the list of 954 algorithms is not exhaustive. As well, some algorithms that are 955 REQUIRED by [RFC4253] are missing, notably "ssh-dss" and "diffie- 956 hellman-group1-sha1" due to their weak security and there being 957 alternatives that are widely supported. 959 5.1. Tree Diagram 961 The following tree diagram [RFC8340] provides an overview of the data 962 model for the "ietf-ssh-common" module. 964 module: ietf-ssh-common 966 grouping transport-params-grouping 967 +-- host-key 968 | +-- host-key-alg* identityref 969 +-- key-exchange 970 | +-- key-exchange-alg* identityref 971 +-- encryption 972 | +-- encryption-alg* identityref 973 +-- mac 974 +-- mac-alg* identityref 976 5.2. Example Usage 978 This following example illustrates how the transport-params-grouping 979 appears when populated with some data. 981 984 985 algs:x509v3-rsa2048-sha256 986 algs:ssh-rsa 987 988 989 990 algs:diffie-hellman-group-exchange-sha256 991 992 993 994 algs:aes256-ctr 995 algs:aes192-ctr 996 algs:aes128-ctr 997 algs:aes256-cbc 998 algs:aes192-cbc 999 algs:aes128-cbc 1000 1001 1002 algs:hmac-sha2-256 1003 algs:hmac-sha2-512 1004 1005 1007 5.3. YANG Module 1009 This YANG module has normative references to [RFC4253], [RFC4344], 1010 [RFC4419], [RFC5656], [RFC6187], and [RFC6668]. 1012 file "ietf-ssh-common@2018-10-22.yang" 1013 module ietf-ssh-common { 1014 yang-version 1.1; 1016 namespace "urn:ietf:params:xml:ns:yang:ietf-ssh-common"; 1017 prefix "sshcmn"; 1019 organization 1020 "IETF NETCONF (Network Configuration) Working Group"; 1022 contact 1023 "WG Web: 1024 WG List: 1026 Author: Kent Watsen 1027 1029 Author: Gary Wu 1030 "; 1032 description 1033 "This module defines a common features, identities, and 1034 groupings for Secure Shell (SSH). 1036 Copyright (c) 2018 IETF Trust and the persons identified as 1037 authors of the code. All rights reserved. 1039 Redistribution and use in source and binary forms, with or 1040 without modification, is permitted pursuant to, and subject 1041 to the license terms contained in, the Simplified BSD 1042 License set forth in Section 4.c of the IETF Trust's 1043 Legal Provisions Relating to IETF Documents 1044 (http://trustee.ietf.org/license-info). 1046 This version of this YANG module is part of RFC XXXX; see 1047 the RFC itself for full legal notices."; 1049 revision "2018-10-22" { 1050 description 1051 "Initial version"; 1052 reference 1053 "RFC XXXX: YANG Groupings for SSH Clients and SSH Servers"; 1054 } 1056 // features 1058 feature ssh-ecc { 1059 description 1060 "Elliptic Curve Cryptography is supported for SSH."; 1061 reference 1062 "RFC 5656: Elliptic Curve Algorithm Integration in the 1063 Secure Shell Transport Layer"; 1064 } 1066 feature ssh-x509-certs { 1067 description 1068 "X.509v3 certificates are supported for SSH per RFC 6187."; 1069 reference 1070 "RFC 6187: X.509v3 Certificates for Secure Shell 1071 Authentication"; 1073 } 1075 feature ssh-dh-group-exchange { 1076 description 1077 "Diffie-Hellman Group Exchange is supported for SSH."; 1078 reference 1079 "RFC 4419: Diffie-Hellman Group Exchange for the 1080 Secure Shell (SSH) Transport Layer Protocol"; 1081 } 1083 feature ssh-ctr { 1084 description 1085 "SDCTR encryption mode is supported for SSH."; 1086 reference 1087 "RFC 4344: The Secure Shell (SSH) Transport Layer 1088 Encryption Modes"; 1089 } 1091 feature ssh-sha2 { 1092 description 1093 "The SHA2 family of cryptographic hash functions is 1094 supported for SSH."; 1095 reference 1096 "FIPS PUB 180-4: Secure Hash Standard (SHS)"; 1097 } 1099 // identities 1101 identity public-key-alg-base { 1102 description 1103 "Base identity used to identify public key algorithms."; 1104 } 1106 identity ssh-dss { 1107 base public-key-alg-base; 1108 description 1109 "Digital Signature Algorithm using SHA-1 as the 1110 hashing algorithm."; 1111 reference 1112 "RFC 4253: 1113 The Secure Shell (SSH) Transport Layer Protocol"; 1114 } 1116 identity ssh-rsa { 1117 base public-key-alg-base; 1118 description 1119 "RSASSA-PKCS1-v1_5 signature scheme using SHA-1 as the 1120 hashing algorithm."; 1122 reference 1123 "RFC 4253: 1124 The Secure Shell (SSH) Transport Layer Protocol"; 1125 } 1127 identity ecdsa-sha2-nistp256 { 1128 base public-key-alg-base; 1129 if-feature "ssh-ecc and ssh-sha2"; 1130 description 1131 "Elliptic Curve Digital Signature Algorithm (ECDSA) using the 1132 nistp256 curve and the SHA2 family of hashing algorithms."; 1133 reference 1134 "RFC 5656: Elliptic Curve Algorithm Integration in the 1135 Secure Shell Transport Layer"; 1136 } 1138 identity ecdsa-sha2-nistp384 { 1139 base public-key-alg-base; 1140 if-feature "ssh-ecc and ssh-sha2"; 1141 description 1142 "Elliptic Curve Digital Signature Algorithm (ECDSA) using the 1143 nistp384 curve and the SHA2 family of hashing algorithms."; 1144 reference 1145 "RFC 5656: Elliptic Curve Algorithm Integration in the 1146 Secure Shell Transport Layer"; 1147 } 1149 identity ecdsa-sha2-nistp521 { 1150 base public-key-alg-base; 1151 if-feature "ssh-ecc and ssh-sha2"; 1152 description 1153 "Elliptic Curve Digital Signature Algorithm (ECDSA) using the 1154 nistp521 curve and the SHA2 family of hashing algorithms."; 1155 reference 1156 "RFC 5656: Elliptic Curve Algorithm Integration in the 1157 Secure Shell Transport Layer"; 1158 } 1160 identity x509v3-ssh-rsa { 1161 base public-key-alg-base; 1162 if-feature ssh-x509-certs; 1163 description 1164 "RSASSA-PKCS1-v1_5 signature scheme using a public key stored 1165 in an X.509v3 certificate and using SHA-1 as the hashing 1166 algorithm."; 1167 reference 1168 "RFC 6187: X.509v3 Certificates for Secure Shell 1169 Authentication"; 1171 } 1173 identity x509v3-rsa2048-sha256 { 1174 base public-key-alg-base; 1175 if-feature "ssh-x509-certs and ssh-sha2"; 1176 description 1177 "RSASSA-PKCS1-v1_5 signature scheme using a public key stored 1178 in an X.509v3 certificate and using SHA-256 as the hashing 1179 algorithm. RSA keys conveyed using this format MUST have a 1180 modulus of at least 2048 bits."; 1181 reference 1182 "RFC 6187: X.509v3 Certificates for Secure Shell 1183 Authentication"; 1184 } 1186 identity x509v3-ecdsa-sha2-nistp256 { 1187 base public-key-alg-base; 1188 if-feature "ssh-ecc and ssh-x509-certs and ssh-sha2"; 1189 description 1190 "Elliptic Curve Digital Signature Algorithm (ECDSA) 1191 using the nistp256 curve with a public key stored in 1192 an X.509v3 certificate and using the SHA2 family of 1193 hashing algorithms."; 1194 reference 1195 "RFC 6187: X.509v3 Certificates for Secure Shell 1196 Authentication"; 1197 } 1199 identity x509v3-ecdsa-sha2-nistp384 { 1200 base public-key-alg-base; 1201 if-feature "ssh-ecc and ssh-x509-certs and ssh-sha2"; 1202 description 1203 "Elliptic Curve Digital Signature Algorithm (ECDSA) 1204 using the nistp384 curve with a public key stored in 1205 an X.509v3 certificate and using the SHA2 family of 1206 hashing algorithms."; 1207 reference 1208 "RFC 6187: X.509v3 Certificates for Secure Shell 1209 Authentication"; 1210 } 1212 identity x509v3-ecdsa-sha2-nistp521 { 1213 base public-key-alg-base; 1214 if-feature "ssh-ecc and ssh-x509-certs and ssh-sha2"; 1215 description 1216 "Elliptic Curve Digital Signature Algorithm (ECDSA) 1217 using the nistp521 curve with a public key stored in 1218 an X.509v3 certificate and using the SHA2 family of 1219 hashing algorithms."; 1220 reference 1221 "RFC 6187: X.509v3 Certificates for Secure Shell 1222 Authentication"; 1223 } 1225 identity key-exchange-alg-base { 1226 description 1227 "Base identity used to identify key exchange algorithms."; 1228 } 1230 identity diffie-hellman-group14-sha1 { 1231 base key-exchange-alg-base; 1232 description 1233 "Diffie-Hellman key exchange with SHA-1 as HASH and 1234 Oakley Group 14 (2048-bit MODP Group)."; 1235 reference 1236 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1237 } 1239 identity diffie-hellman-group-exchange-sha1 { 1240 base key-exchange-alg-base; 1241 if-feature ssh-dh-group-exchange; 1242 description 1243 "Diffie-Hellman Group and Key Exchange with SHA-1 as HASH."; 1244 reference 1245 "RFC 4419: Diffie-Hellman Group Exchange for the 1246 Secure Shell (SSH) Transport Layer Protocol"; 1247 } 1249 identity diffie-hellman-group-exchange-sha256 { 1250 base key-exchange-alg-base; 1251 if-feature "ssh-dh-group-exchange and ssh-sha2"; 1252 description 1253 "Diffie-Hellman Group and Key Exchange with SHA-256 as HASH."; 1254 reference 1255 "RFC 4419: Diffie-Hellman Group Exchange for the 1256 Secure Shell (SSH) Transport Layer Protocol"; 1257 } 1259 identity ecdh-sha2-nistp256 { 1260 base key-exchange-alg-base; 1261 if-feature "ssh-ecc and ssh-sha2"; 1262 description 1263 "Elliptic Curve Diffie-Hellman (ECDH) key exchange using the 1264 nistp256 curve and the SHA2 family of hashing algorithms."; 1265 reference 1266 "RFC 5656: Elliptic Curve Algorithm Integration in the 1267 Secure Shell Transport Layer"; 1268 } 1270 identity ecdh-sha2-nistp384 { 1271 base key-exchange-alg-base; 1272 if-feature "ssh-ecc and ssh-sha2"; 1273 description 1274 "Elliptic Curve Diffie-Hellman (ECDH) key exchange using the 1275 nistp384 curve and the SHA2 family of hashing algorithms."; 1276 reference 1277 "RFC 5656: Elliptic Curve Algorithm Integration in the 1278 Secure Shell Transport Layer"; 1279 } 1281 identity ecdh-sha2-nistp521 { 1282 base key-exchange-alg-base; 1283 if-feature "ssh-ecc and ssh-sha2"; 1284 description 1285 "Elliptic Curve Diffie-Hellman (ECDH) key exchange using the 1286 nistp521 curve and the SHA2 family of hashing algorithms."; 1287 reference 1288 "RFC 5656: Elliptic Curve Algorithm Integration in the 1289 Secure Shell Transport Layer"; 1290 } 1292 identity encryption-alg-base { 1293 description 1294 "Base identity used to identify encryption algorithms."; 1295 } 1297 identity triple-des-cbc { 1298 base encryption-alg-base; 1299 description 1300 "Three-key 3DES in CBC mode."; 1301 reference 1302 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1303 } 1305 identity aes128-cbc { 1306 base encryption-alg-base; 1307 description 1308 "AES in CBC mode, with a 128-bit key."; 1309 reference 1310 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1311 } 1313 identity aes192-cbc { 1314 base encryption-alg-base; 1315 description 1316 "AES in CBC mode, with a 192-bit key."; 1317 reference 1318 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1319 } 1321 identity aes256-cbc { 1322 base encryption-alg-base; 1323 description 1324 "AES in CBC mode, with a 256-bit key."; 1325 reference 1326 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1327 } 1329 identity aes128-ctr { 1330 base encryption-alg-base; 1331 if-feature ssh-ctr; 1332 description 1333 "AES in SDCTR mode, with 128-bit key."; 1334 reference 1335 "RFC 4344: The Secure Shell (SSH) Transport Layer Encryption 1336 Modes"; 1337 } 1339 identity aes192-ctr { 1340 base encryption-alg-base; 1341 if-feature ssh-ctr; 1342 description 1343 "AES in SDCTR mode, with 192-bit key."; 1344 reference 1345 "RFC 4344: The Secure Shell (SSH) Transport Layer Encryption 1346 Modes"; 1347 } 1349 identity aes256-ctr { 1350 base encryption-alg-base; 1351 if-feature ssh-ctr; 1352 description 1353 "AES in SDCTR mode, with 256-bit key."; 1354 reference 1355 "RFC 4344: The Secure Shell (SSH) Transport Layer Encryption 1356 Modes"; 1357 } 1359 identity mac-alg-base { 1360 description 1361 "Base identity used to identify message authentication 1362 code (MAC) algorithms."; 1364 } 1366 identity hmac-sha1 { 1367 base mac-alg-base; 1368 description 1369 "HMAC-SHA1"; 1370 reference 1371 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1372 } 1374 identity hmac-sha2-256 { 1375 base mac-alg-base; 1376 if-feature "ssh-sha2"; 1377 description 1378 "HMAC-SHA2-256"; 1379 reference 1380 "RFC 6668: SHA-2 Data Integrity Verification for the 1381 Secure Shell (SSH) Transport Layer Protocol"; 1382 } 1384 identity hmac-sha2-512 { 1385 base mac-alg-base; 1386 if-feature "ssh-sha2"; 1387 description 1388 "HMAC-SHA2-512"; 1389 reference 1390 "RFC 6668: SHA-2 Data Integrity Verification for the 1391 Secure Shell (SSH) Transport Layer Protocol"; 1392 } 1394 // groupings 1396 grouping transport-params-grouping { 1397 description 1398 "A reusable grouping for SSH transport parameters."; 1399 reference 1400 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1401 container host-key { 1402 description 1403 "Parameters regarding host key."; 1404 leaf-list host-key-alg { 1405 type identityref { 1406 base public-key-alg-base; 1407 } 1408 ordered-by user; 1409 description 1410 "Acceptable host key algorithms in order of descending 1411 preference. The configured host key algorithms should 1412 be compatible with the algorithm used by the configured 1413 private key. Please see Section 5 of RFC XXXX for 1414 valid combinations. 1416 If this leaf-list is not configured (has zero elements) 1417 the acceptable host key algorithms are implementation- 1418 defined."; 1419 reference 1420 "RFC XXXX: YANG Groupings for SSH Clients and SSH Servers"; 1421 } 1422 } 1423 container key-exchange { 1424 description 1425 "Parameters regarding key exchange."; 1426 leaf-list key-exchange-alg { 1427 type identityref { 1428 base key-exchange-alg-base; 1429 } 1430 ordered-by user; 1431 description 1432 "Acceptable key exchange algorithms in order of descending 1433 preference. 1435 If this leaf-list is not configured (has zero elements) 1436 the acceptable key exchange algorithms are implementation 1437 defined."; 1438 } 1439 } 1440 container encryption { 1441 description 1442 "Parameters regarding encryption."; 1443 leaf-list encryption-alg { 1444 type identityref { 1445 base encryption-alg-base; 1446 } 1447 ordered-by user; 1448 description 1449 "Acceptable encryption algorithms in order of descending 1450 preference. 1452 If this leaf-list is not configured (has zero elements) 1453 the acceptable encryption algorithms are implementation 1454 defined."; 1455 } 1456 } 1457 container mac { 1458 description 1459 "Parameters regarding message authentication code (MAC)."; 1461 leaf-list mac-alg { 1462 type identityref { 1463 base mac-alg-base; 1464 } 1465 ordered-by user; 1466 description 1467 "Acceptable MAC algorithms in order of descending 1468 preference. 1470 If this leaf-list is not configured (has zero elements) 1471 the acceptable MAC algorithms are implementation- 1472 defined."; 1473 } 1474 } 1476 } // transport-params-grouping 1478 } 1479 1481 6. Security Considerations 1483 The YANG modules defined in this document are designed to be accessed 1484 via YANG based management protocols, such as NETCONF [RFC6241] and 1485 RESTCONF [RFC8040]. Both of these protocols have mandatory-to- 1486 implement secure transport layers (e.g., SSH, TLS) with mutual 1487 authentication. 1489 The NETCONF access control model (NACM) [RFC8341] provides the means 1490 to restrict access for particular users to a pre-configured subset of 1491 all available protocol operations and content. 1493 Since the modules defined in this document define only groupings, 1494 these considerations are primarily for the designers of other modules 1495 that use these groupings. 1497 There are a number of data nodes defined in the YANG modules that are 1498 writable/creatable/deletable (i.e., config true, which is the 1499 default). These data nodes may be considered sensitive or vulnerable 1500 in some network environments. Write operations (e.g., edit-config) 1501 to these data nodes without proper protection can have a negative 1502 effect on network operations. These are the subtrees and data nodes 1503 and their sensitivity/vulnerability: 1505 /: The entire data tree defined by all the modules defined in this 1506 draft are sensitive to write operations. For instance, the 1507 addition or removal of references to keys, certificates, 1508 trusted anchors, etc., can dramatically alter the implemented 1509 security policy. However, no NACM annotations are applied as 1510 the data SHOULD be editable by users other than a designated 1511 'recovery session'. 1513 Some of the readable data nodes in the YANG modules may be considered 1514 sensitive or vulnerable in some network environments. It is thus 1515 important to control read access (e.g., via get, get-config, or 1516 notification) to these data nodes. These are the subtrees and data 1517 nodes and their sensitivity/vulnerability: 1519 /client-auth/password: This node in the 'ietf-ssh-client' module 1520 is additionally sensitive to read operations such that, in 1521 normal use cases, it should never be returned to a client. The 1522 only time this node should be returned is to support backup/ 1523 restore type workflows. However, no NACM annotations are 1524 applied as the data SHOULD be writable by users other than a 1525 designated 'recovery session'. 1527 Some of the RPC operations in this YANG module may be considered 1528 sensitive or vulnerable in some network environments. It is thus 1529 important to control access to these operations. These are the 1530 operations and their sensitivity/vulnerability: 1532 NONE 1534 7. IANA Considerations 1536 7.1. The IETF XML Registry 1538 This document registers three URIs in the "ns" subregistry of the 1539 IETF XML Registry [RFC3688]. Following the format in [RFC3688], the 1540 following registrations are requested: 1542 URI: urn:ietf:params:xml:ns:yang:ietf-ssh-client 1543 Registrant Contact: The NETCONF WG of the IETF. 1544 XML: N/A, the requested URI is an XML namespace. 1545 URI: urn:ietf:params:xml:ns:yang:ietf-ssh-server 1546 Registrant Contact: The NETCONF WG of the IETF. 1547 XML: N/A, the requested URI is an XML namespace. 1548 URI: urn:ietf:params:xml:ns:yang:ietf-ssh-common 1549 Registrant Contact: The NETCONF WG of the IETF. 1550 XML: N/A, the requested URI is an XML namespace. 1552 7.2. The YANG Module Names Registry 1554 This document registers three YANG modules in the YANG Module Names 1555 registry [RFC6020]. Following the format in [RFC6020], the the 1556 following registrations are requested: 1558 name: ietf-ssh-client 1559 namespace: urn:ietf:params:xml:ns:yang:ietf-ssh-client 1560 prefix: sshc 1561 reference: RFC XXXX 1562 name: ietf-ssh-server 1563 namespace: urn:ietf:params:xml:ns:yang:ietf-ssh-server 1564 prefix: sshs 1565 reference: RFC XXXX 1566 name: ietf-ssh-common 1567 namespace: urn:ietf:params:xml:ns:yang:ietf-ssh-common 1568 prefix: sshcmn 1569 reference: RFC XXXX 1571 8. References 1573 8.1. Normative References 1575 [I-D.ietf-netconf-crypto-types] 1576 Watsen, K., "Common YANG Data Types for Cryptography", 1577 draft-ietf-netconf-crypto-types-01 (work in progress), 1578 September 2018. 1580 [I-D.ietf-netconf-keystore] 1581 Watsen, K., "YANG Data Model for a Centralized Keystore 1582 Mechanism", draft-ietf-netconf-keystore-06 (work in 1583 progress), September 2018. 1585 [I-D.ietf-netconf-trust-anchors] 1586 Watsen, K., "YANG Data Model for Global Trust Anchors", 1587 draft-ietf-netconf-trust-anchors-01 (work in progress), 1588 September 2018. 1590 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1591 Requirement Levels", BCP 14, RFC 2119, 1592 DOI 10.17487/RFC2119, March 1997, 1593 . 1595 [RFC4344] Bellare, M., Kohno, T., and C. Namprempre, "The Secure 1596 Shell (SSH) Transport Layer Encryption Modes", RFC 4344, 1597 DOI 10.17487/RFC4344, January 2006, 1598 . 1600 [RFC4419] Friedl, M., Provos, N., and W. Simpson, "Diffie-Hellman 1601 Group Exchange for the Secure Shell (SSH) Transport Layer 1602 Protocol", RFC 4419, DOI 10.17487/RFC4419, March 2006, 1603 . 1605 [RFC5656] Stebila, D. and J. Green, "Elliptic Curve Algorithm 1606 Integration in the Secure Shell Transport Layer", 1607 RFC 5656, DOI 10.17487/RFC5656, December 2009, 1608 . 1610 [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for 1611 the Network Configuration Protocol (NETCONF)", RFC 6020, 1612 DOI 10.17487/RFC6020, October 2010, 1613 . 1615 [RFC6187] Igoe, K. and D. Stebila, "X.509v3 Certificates for Secure 1616 Shell Authentication", RFC 6187, DOI 10.17487/RFC6187, 1617 March 2011, . 1619 [RFC6668] Bider, D. and M. Baushke, "SHA-2 Data Integrity 1620 Verification for the Secure Shell (SSH) Transport Layer 1621 Protocol", RFC 6668, DOI 10.17487/RFC6668, July 2012, 1622 . 1624 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1625 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1626 . 1628 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1629 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1630 May 2017, . 1632 [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration 1633 Access Control Model", STD 91, RFC 8341, 1634 DOI 10.17487/RFC8341, March 2018, 1635 . 1637 8.2. Informative References 1639 [OPENSSH] "OpenSSH", 2016, . 1641 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1642 DOI 10.17487/RFC3688, January 2004, 1643 . 1645 [RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) 1646 Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, 1647 January 2006, . 1649 [RFC4253] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) 1650 Transport Layer Protocol", RFC 4253, DOI 10.17487/RFC4253, 1651 January 2006, . 1653 [RFC4254] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) 1654 Connection Protocol", RFC 4254, DOI 10.17487/RFC4254, 1655 January 2006, . 1657 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1658 and A. Bierman, Ed., "Network Configuration Protocol 1659 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1660 . 1662 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1663 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1664 . 1666 [RFC7317] Bierman, A. and M. Bjorklund, "A YANG Data Model for 1667 System Management", RFC 7317, DOI 10.17487/RFC7317, August 1668 2014, . 1670 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1671 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1672 . 1674 [RFC8071] Watsen, K., "NETCONF Call Home and RESTCONF Call Home", 1675 RFC 8071, DOI 10.17487/RFC8071, February 2017, 1676 . 1678 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1679 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1680 . 1682 Appendix A. Change Log 1684 A.1. 00 to 01 1686 o Noted that '0.0.0.0' and '::' might have special meanings. 1688 o Renamed "keychain" to "keystore". 1690 A.2. 01 to 02 1692 o Removed the groupings 'listening-ssh-client-grouping' and 1693 'listening-ssh-server-grouping'. Now modules only contain the 1694 transport-independent groupings. 1696 o Simplified the "client-auth" part in the ietf-ssh-client module. 1697 It now inlines what it used to point to keystore for. 1699 o Added cipher suites for various algorithms into new 'ietf-ssh- 1700 common' module. 1702 A.3. 02 to 03 1704 o Removed 'RESTRICTED' enum from 'password' leaf type. 1706 o Added a 'must' statement to container 'server-auth' asserting that 1707 at least one of the various auth mechanisms must be specified. 1709 o Fixed description statement for leaf 'trusted-ca-certs'. 1711 A.4. 03 to 04 1713 o Change title to "YANG Groupings for SSH Clients and SSH Servers" 1715 o Added reference to RFC 6668 1717 o Added RFC 8174 to Requirements Language Section. 1719 o Enhanced description statement for ietf-ssh-server's "trusted-ca- 1720 certs" leaf. 1722 o Added mandatory true to ietf-ssh-client's "client-auth" 'choice' 1723 statement. 1725 o Changed the YANG prefix for module ietf-ssh-common from 'sshcom' 1726 to 'sshcmn'. 1728 o Removed the compression algorithms as they are not commonly 1729 configurable in vendors' implementations. 1731 o Updating descriptions in transport-params-grouping and the 1732 servers's usage of it. 1734 o Now tree diagrams reference ietf-netmod-yang-tree-diagrams 1736 o Updated YANG to use typedefs around leafrefs to common keystore 1737 paths 1739 o Now inlines key and certificates (no longer a leafref to keystore) 1741 A.5. 04 to 05 1743 o Merged changes from co-author. 1745 A.6. 05 to 06 1747 o Updated to use trust anchors from trust-anchors draft (was 1748 keystore draft) 1750 o Now uses new keystore grouping enabling asymmetric key to be 1751 either locally defined or a reference to the keystore. 1753 A.7. 06 to 07 1755 o factored the ssh-[client|server]-groupings into more reusable 1756 groupings. 1758 o added if-feature statements for the new "ssh-host-keys" and 1759 "x509-certificates" features defined in draft-ietf-netconf-trust- 1760 anchors. 1762 A.8. 07 to 08 1764 o Added a number of compatibility matricies to Section 5 (thanks 1765 Frank!) 1767 o Claified that any configured "host-key-alg" values need to be 1768 compatible with the configured private key. 1770 Acknowledgements 1772 The authors would like to thank for following for lively discussions 1773 on list and in the halls (ordered by last name): Andy Bierman, Martin 1774 Bjorklund, Benoit Claise, Mehmet Ersue, Balazs Kovacs, David 1775 Lamparter, Alan Luchuk, Ladislav Lhotka, Radek Krejci, Tom Petch, 1776 Juergen Schoenwaelder, Phil Shafer, Sean Turner, Michal Vasko, and 1777 Bert Wijnen. 1779 Authors' Addresses 1781 Kent Watsen 1782 Juniper Networks 1784 EMail: kwatsen@juniper.net 1786 Gary Wu 1787 Cisco Systems 1789 EMail: garywu@cisco.com 1791 Liang Xia 1792 Huawei 1794 EMail: frank.xialiang@huawei.com