RFC 5608
Remote Authentication Dial-In User Service (RADIUS) Usage for Simple Network Management Protocol (SNMP) Transport Models
Network Working Group, RFC 5608 π¦
Title: Remote Authentication Dial-In User Service (RADIUS) Usage for Simple Network Management Protocol (SNMP) Transport Models
Authors: K. Narayan (Cisco Systems, Inc.) and D. Nelson (Elbrys Networks, Inc.)
Category: Standards Track
Date: August 2009
Obsoletes/Updates: The title block doesn't list anything this RFC obsoletes or updates, so there's nothing to report there. πΈ
Abstract β¨
okay so this memo is all about using a Remote Authentication Dial-In User Service (RADIUS) authentication and authorization service together with Simple Network Management Protocol (SNMP) secure Transport Models. the goal is to authenticate users and authorize them to create secure transport sessions π the recs are generally useful for a whole broad class of SNMP Transport Models, but the examples focus on the Secure Shell (SSH) Transport Model π
Status of This Memo π
this doc specifies an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements π¬ for the current standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) π§ and distribution of this memo is unlimited!!
Copyright Notice π
Copyright (c) 2009 IETF Trust and the persons identified as the document authors. All rights reserved. β¨
this document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents, as they were in effect on the date this document was published (http://trustee.ietf.org/license-info). pls read these carefully bestie, because they spell out your rights and restrictions for this doc π«Ά
also, this document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. the person(s) controlling the copyright in some of that material may not have given the IETF Trust permission to allow modifications outside the IETF Standards Process. so unless you get an adequate license from whoever controls that copyright, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process either π the only exceptions are formatting it for publication as an RFC or translating it into languages other than English. no notes, it's a whole legal vibe π
Table of Contents π
1. Introduction ....................................................2
1.1. General ....................................................2
1.2. Requirements Language ......................................3
1.3. System Block Diagram .......................................3
1.4. RADIUS Operational Model ...................................3
1.5. RADIUS Usage with Secure Transports ........................5
1.6. Domain of Applicability ....................................5
1.7. SNMP Transport Models ......................................6
2. RADIUS Usage for SNMP Transport Models ..........................7
2.1. RADIUS Authentication for Transport Protocols ..............8
2.2. RADIUS Authorization for Transport Protocols ...............8
2.3. SNMP Service Authorization .................................9
3. Table of Attributes ............................................11
4. Security Considerations ........................................12
5. Acknowledgements ...............................................13
6. References .....................................................13
6.1. Normative References ......................................13
6.2. Informative References ....................................13
1. Introduction β¨
1.1. General π
okay so this memo describes how a Remote Authentication Dial-In User Service (RADIUS) authentication and authorization service gets used by Simple Network Management Protocol (SNMP) secure Transport Models. the whole point is to authenticate users and authorize them to create secure transport sessions π the recs are generally applicable to a broad class of SNMP Transport Models, but the examples focus on the Secure Shell Transport Model π
in the context of this doc, a Network Access Server (NAS) is a network device or host that contains an SNMP engine implementation and uses SNMP Transport Models. SNMP docs usually say which subsystem does which processing tasks. here though, we leave those decisions to the implementer, which is customary for RADIUS docs, and we just specify NAS behavior π§ that processing would quite likely end up in the secure transport module, fr fr.
1.2. Requirements Language π
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. these are the official key words, so read them exactly as written π«Ά
1.3. System Block Diagram π
a block diagram of the major system components referenced in this doc may be useful for understanding the text that follows, so here it is!! π¦
+--------+
+......................... |RADIUS |....+
. |Server | .
Shared +--------+ .
User | .
Credentials RADIUS | Shared
. | RADIUS
. | Secret
. | .
+-------------+ +-----------------+
| Network | | RADIUS Client / |
| Management | SNMP | SNMP Engine / |
| Application |------------------| Network Device |
+-------------+ SSH +-----------------+
Block Diagram
this diagram shows that a network management application talks to a network device (the managed entity) using SNMP over SSH π‘ the network device uses RADIUS to talk to a RADIUS server, which authenticates the network management application (or the user whose credentials that application provides), and it also gets authorization info for SNMP access to manage the device π₯ other secure transport protocols might be used instead of SSH, so SSH isn't the only option, bestie π
1.4. RADIUS Operational Model π
the RADIUS protocol [RFC2865] provides authentication and authorization services for network access devices, which are usually called a Network Access Server (NAS) β¨ at its simplest, RADIUS is a request-response mechanism. RADIUS clients inside the NAS start a transaction by sending a RADIUS Access-Request message to a RADIUS server they share credentials with. the RADIUS server responds with either an Access-Accept message or an Access-Reject message π
RADIUS supports authentication methods compatible with plaintext username and password mechanisms, MD5 Challenge/Response mechanisms, Extensible Authentication Protocol (EAP) mechanisms, and HTTP Digest mechanisms π§ once the identity and credentials are presented, the user is either accepted or rejected. RADIUS servers signal a successful authentication by returning an Access-Accept message, and an Access-Reject message means the authentication didn't work π
Access-Accept messages carry one or more service provisioning attributes, which control the type and extent of service the user gets at the NAS π you can think of the authorization part as service provisioning. based on how the user's account is configured on the RADIUS server, the NAS gets instructions after authentication about what kind of service to give the user πΈ now here's the important bit: when that service provisioning doesn't match the capabilities of the NAS, or of the particular interface to the NAS the user is requesting access over, RFC 2865 [RFC2865] requires that the NAS MUST reject the access request. no exceptions, periodt π RFC 2865 describes service provisioning attributes for management access to a NAS, plus various terminal emulation and packet forwarding services on the NAS. this memo describes specific RADIUS service provisioning attributes that are useful with secure transports and SNMP Transport Models, so that's the glow up π¦
RADIUS servers are often deployed enterprise-wide or organization-wide, covering a bunch of different use cases π in those setups, all the NASes and all the users get served by a common pool of RADIUS servers. in lots of deployments, one RADIUS server handles requests from many different types of NASes, with different capabilities and different types of interfaces, services, and protocol support. a lot going on, iykyk π
for a RADIUS server to make the correct authorization decision in every case, it usually needs to know a few things: the type of NAS where the user is requesting access, the type of service the user is requesting, and the user's role in the organization β¨ for example, lots of users may be authorized to get network access through a Remote Access Server (RAS), a Virtual Private Network (VPN) server, or a LAN access switch. but only a small subset of all users are typically authorized to access the administrative interfaces of network infrastructure devices, like the Command Line Interface (CLI) or the SNMP engine of switches and routers π
so the RADIUS server knows what kind of access is being requested, it's common for the NAS (aka the RADIUS client) to include "hint" attributes in the RADIUS Access-Request message. those describe the NAS and the type of service being requested π§
this document recommends appropriate "hint" attributes for the SNMP service type π
1.5. RADIUS Usage with Secure Transports
okay so some secure transport protocols that can work with SNMP Transport Models have defined authentication protocols that support several authentication methods πβ¨ For example, the Secure Shell (SSH) Authentication protocol [RFC4252] supports multiple methods (including public key, password, and host-based) to authenticate SSH clients π
SSH Server integration with RADIUS traditionally uses the username and password mechanism π
Secure transport protocols don't, however, specify how the transport interfaces to authentication clients, so that part is left up to implementations π For example, the "password" method of SSH authentication mostly describes how passwords get pulled from the SSH client and sent to the SSH server. How the password is interpreted and checked against password databases is up to the SSH server implementations π§ SSH server implementations often use the Pluggable Authentication Modules [PAM] interface that operating systems like Linux and Solaris provide, so they can plug into password-based network authentication mechanisms like RADIUS, TACACS+ (Terminal Access Controller Access-Control System Plus), Kerberos, etc. π₯
Secure transports don't usually specify how to use authorization information from a AAA service, such as RADIUS π More often, user authentication is enough to get the secure transport server to start delivering service to the user. Access control in these situations is handled by the application the secure transport server session is attached to. For example, if the application is a Linux shell, the user's access rights are controlled by that account's group membership and the file system access protections π This doesn't closely follow the traditional service provisioning model of AAA systems, such as RADIUS π
1.6. Domain of Applicability
Most of the RADIUS Attributes referenced in this document have broad applicability for provisioning remote management access to NAS devices using SNMP πΈ The selection of secure transport protocols, though, has special considerations. This document doesn't specify details of how secure transport protocols get integrated with a RADIUS client in the NAS implementation. However, there are functional requirements for correct application of framed management protocols and secure transport protocols, and those will limit which protocols can be considered for use with RADIUS π Since the RADIUS user credentials are obtained by the RADIUS client from the secure transport protocol server, or in some cases directly from the SNMP engine, the secure transport protocol, and its implementation in the NAS, MUST support forms of credentials that are compatible with the authentication methods supported by RADIUS π«Ά
RADIUS currently supports the following user authentication methods, although others may be added in the future:
- Password - RFC 2865
- CHAP (Challenge Handshake Authentication Protocol) - RFC 2865
- ARAP (Apple Remote Access Protocol) - RFC 2869
- EAP (Extensible Authentication Protocol) - RFC 2869, RFC 3579
- HTTP Digest - RFC 5090
The secure transport protocols picked for use with RADIUS and SNMP obviously need to support user authentication methods that match the ones in RADIUS π The RADIUS authentication methods most likely to be usable with these protocols are Password, CHAP, and possibly HTTP Digest, with Password being the distinct common denominator π There are lots of secure transports that support other, more robust, authentication mechanisms, such as public key. RADIUS has no support for public key authentication, except within the context of an EAP Method. The applicability statement for EAP says it isn't meant to be used as an application-layer authentication mechanism, so using it with the mechanisms described in this document is NOT RECOMMENDED π ββοΈ In some cases, Password may be the only compatible RADIUS authentication method available.
1.7. SNMP Transport Models
The Transport Subsystem for SNMP [RFC5590] defines a mechanism for providing transport layer security (TLS) for SNMP, which lets protocols like SSH and TLS secure SNMP communication π¦ The Transport Subsystem allows the modular definition of Transport Models for multiple secure transport protocols. Transport Models rely on the underlying secure transport for user authentication services. The Transport Model (TM) then maps the authenticated identity to a model-independent principal, which it stores in the tmStateReference. When the selected security model is the Transport Security Model (TSM), the expected behavior is for the securityName to be set by the TSM from the authenticated principal information that the TM stored in the tmStateReference.
The Secure Shell protocol provides a secure transport channel with support for channel authentication via local accounts, plus integration with various external authentication and authorization services such as RADIUS, Kerberos, etc. β¨ The Secure Shell Transport Model [RFC5592] defines the use of the Secure Shell protocol as the basis for a Transport Model.
2. RADIUS Usage for SNMP Transport Models
There are two use cases for RADIUS support of management access via SNMP. These are (a) service authorization and (b) access control authorization π RADIUS almost always involves user authentication as a prerequisite to authorization, and there is a user authentication phase for each of these two use cases. The first use case is discussed in detail in this memo, while the second use case is a topic of current research and beyond the scope of this document. This document describes the way in which RADIUS attributes and messages are applied to the specific application area of SNMP Transport Models. User authentication and service authorization via RADIUS are handled by the secure transport module that underlies the SNMP Transport Model.
User authentication for SNMP Transport Models has the same syntax and semantics as user authentication for any other network service. In the context of SNMP, the "user" is thought of as a "principal" and may represent a host, an application, or a human π§βπ»
Service authorization allows a RADIUS server to authorize an authenticated principal to use SNMP, optionally over a secure transport, typically using an SNMP Transport Model. This memo describes mechanisms by which such information can be requested from a RADIUS server and enforced within the NAS. An SNMP architecture, [RFC3411], does not make a distinction between user authentication and service authorization. For existing, deployed security models, such as the User-based Security Model (USM), this distinction isn't significant. For SNMP Transport Models, though, this distinction is relevant and important π¨
It's relevant because of the way SSH implementations have traditionally integrated with RADIUS clients π₯Ή Those SSH implementations traditionally try to get user authentication (e.g., validation of a username and password) from an outside authentication service, often via a PAM-style interface. The service authorization in traditional SSH server implementations comes from the restrictions that the operating system (OS) shell (and file system, etc.) puts on the user through access controls tied to the username or the username's membership in various user groups. These OS-style access controls are distinct from the service provisioning features of RADIUS. If we want to use existing SSH server implementations, or slightly adapt them, for SNMP Transport Models, and we also want to support RADIUS-provisioned service authorization, we need to be aware that the relevant SNMP models will need to get the RADIUS service authorization information from the SSH module π«
One reason RADIUS-provisioned service authorization matters is that in many deployments, the RADIUS server's back-end authentication database holds credentials for many classes of users, only a small portion of which may be authorized to access the management interfaces of managed entities (NASes) via SNMP. This is different from how USM for SNMP works, where every principal entered into the local configuration data-store is authorized for access to the managed entity. Without RADIUS-provisioned service authorization, network management access may be granted to unauthorized, but properly authenticated, users π¬ With SNMPv3, an appropriately configured Access Control Model would help reduce the risk of unauthorized access.
2.1. RADIUS Authentication for Transport Protocols
This document will rely on implementation specific integration of the transport protocols with RADIUS clients for user authentication π§
It is REQUIRED that the integration of RADIUS clients with transport protocols utilize appropriate "hint" attributes in RADIUS Access-Request messages, to signal to the RADIUS server the type of service being requested over the transport session π£ Specific attributes for use with SNMP Transport Models are recommended in this document.
RADIUS servers, compliant to this specification, MAY use RADIUS "hint" attributes, as described herein, to inform the decision whether to accept or reject the authentication request π€
2.2. RADIUS Authorization for Transport Protocols
In compliance with RFC 2865, NASes MUST enforce implicitly mandatory attributes, such as Service-Type, within an Access-Accept message π‘οΈ NASes MUST treat Access-Accept messages that attempt to provision unsupported services as if they were an Access-Reject. NASes SHOULD treat unknown attributes as if they were provisioning unsupported services. See [RFC5080] for additional details.
A NAS that is compliant to this specification MUST treat any RADIUS Access-Accept message that provisions a level of transport protection (e.g., SSH) that cannot be provided, and/or application service (e.g., SNMP) that cannot be provided over that transport, as if an Access-Reject message had been received instead π« The RADIUS Service-Type Attribute is the primary indicator of the service being provisioned, although other attributes may also convey service provisioning information.
For traditional SSH usage, RADIUS servers typically provision management access service, as SSH is often used to access the command line shell of a host system, e.g., the NAS π RFC 2865 defines two types of management access service attributes, one for privileged access to the Command Line Interface (CLI) of the NAS and one for non-privileged CLI access. These traditional management access services are not used with SNMP. [RFC5607] describes further RADIUS service provisioning attributes for management access to the NAS, including SNMP access π§ββοΈ
2.3. SNMP Service Authorization β¨
Okay so the Transport Subsystem for SNMP [RFC5590] talks about sessions, but it leaves the details of how sessions get managed up to the Transport Models π§. It sets some basic requirements for transport protocols around creating and deleting sessions. This memo adds more requirements for session creation and for session termination π .
RADIUS servers that follow this spec MUST use RADIUS service provisioning attributes, as described here, to specify SNMP access over a secure transport π. These servers MAY also look at the RADIUS "hint" attributes in the Access-Request message, as described here, when they decide what service (if any) to provision π.
NASes that follow this spec MUST use the RADIUS service provisioning attributes described in this section whenever they show up in a RADIUS Access-Accept message, to decide whether the session can be created. They MUST also enforce the service provisioning decisions the RADIUS server makes π.
These RADIUS attributes MUST be used as "hint" attributes in the Access-Request message to signal that you want SNMP over a secure transport (aka authPriv) π:
- Service-Type with a value of
Framed-Management. - Framed-Management-Protocol with a value of
SNMP. - Management-Transport-Protection with a value of
Integrity-Confidentiality-Protection.
These RADIUS attributes MUST be used in an Access-Accept message to provision SNMP over a secure transport that gives you both integrity and confidentiality (authPriv) π₯:
- Service-Type with a value of
Framed-Management. - Framed-Management-Protocol with a value of
SNMP. - Management-Transport-Protection with a value of
Integrity-Confidentiality-Protection.
These RADIUS attributes MUST be optionally used to authorize SNMP without protection (aka authNoPriv) π:
- Service-Type with a value of
Framed-Management. - Framed-Management-Protocol with a value of
SNMP. - Management-Transport-Protection with a value of
No-Protection.
There are no combos of RADIUS attributes that count as the equivalent of SNMP noAuthNoPriv access, and that's because RADIUS always involves authenticating a user (aka a principal) before authorization happens π. RADIUS can do an "Authorize-Only" service, but only when the request has a "cookie" from an earlier successful authentication with that same RADIUS server (aka the RADIUS State Attribute) π.
These RADIUS attributes limit how long a secure transport session carrying SNMP traffic can last, in combination with an SNMP Transport Model β°:
- Session-Timeout
- Inactivity-Timeout.
Check out [RFC2865] for the full details on these attributes π. Session-Timeout is the max number of seconds a session can exist before it gets unconditionally disconnected. Inactivity-Timeout is the max number of seconds a transport session can exist without any protocol activity (messages sent or received) before it's disconnected. The NAS is the one enforcing these timeouts π¦.
3. Table of Attributes πΈ
Table 1 gives you the tea on which attributes can show up in which kinds of packets, and how many of each π.
Access-
Request Accept Reject Challenge # Attribute
---------------------------------------------------------------------
0-1 0 0 0 1 User-Name [RFC2865]
0-1 0 0 0 2 User-Password [RFC2865]
0-1 * 0 0 0 4 NAS-IP-Address [RFC2865]
0-1 * 0 0 0 95 NAS-IPv6-Address [RFC3162]
0-1 * 0 0 0 32 NAS-Identifier [RFC2865]
0-1 0-1 0 0 6 Service-Type [RFC2865]
0-1 0-1 0 0-1 24 State [RFC2865]
0 0-1 0 0 27 Session-Timeout [RFC2865]
0 0-1 0 0 28 Idle-Timeout [RFC2865]
0-1 0-1 0-1 0-1 80 Message-Authenticator [RFC3579]
0-1 0-1 0 0 133 Framed-Management-Protocol
[RFC5607]
0-1 0-1 0 0 134 Management-Transport-Protection
[RFC5607]
Table 1
Table 2 explains what the entries in Table 1 mean π§ .
0 This attribute MUST NOT be present in a packet.
0+ Zero or more instances of this attribute MAY be present in
a packet.
0-1 Zero or one instance of this attribute MAY be present in
a packet.
1 Exactly one instance of this attribute MUST be present in
a packet.
* Only one of these attribute options SHOULD be included.
Table 2
SSH integration with RADIUS traditionally uses usernames and passwords (with the User-Password Attribute) π. Other secure transports could use different authentication mechanisms, though, and they'd include the RADIUS authentication attributes that fit that mechanism instead of User-Password π§.
This document doesn't cover RADIUS Accounting or Dynamic RADIUS Re-Authorization π ββοΈ. Those usages aren't really envisioned for SNMP right now, so they're out of scope here π« .
4. Security Considerations π¨
This spec describes using RADIUS for authentication and authorization π. The threats and security issues for this application are covered in [RFC3579] and [RFC3580], and the security issues you run into while roaming are covered in [RFC2607] π.
The extra security considerations for SNMP with secure Transport Models [RFC5590] and the Transport Security Model [RFC5591] live in the "Security Considerations" sections of those documents π.
If the SNMPv1 or SNMPv2c Security Model is used, then securityName comes from the community name, per RFC 3584 β οΈ. If the User-based Security Model is selected, then securityName is determined using USM. This might not be what you expect when you're using an SNMP secure Transport Model with an external authentication service, like RADIUS π.
Using a secure transport with RADIUS authentication and authorization at the same time as the SNMPv1, SNMPv2c, or USM security models is NOT RECOMMENDED. Check the "Coexistence, Security Parameters, and Access Control" section of [RFC5590] for more π«.
There are good reasons to provision USM access to back up AAA-based access, though π. When the network is under duress, or the AAA service is unreachable for any reason, it's really important to have access credentials stored in the local configuration data-store of the managed entity π«‘. USM credentials are a likely way to meet that need. Think of it like a local "root" password in the "/etc/passwd" file of a UNIX workstation, which works as a backup login for when the Network Information Service (NIS) authentication service is down π§.
The Message-Authenticator (80) Attribute [RFC3579] SHOULD be used with the RADIUS messages described in this memo π‘οΈ. This matters because Message-Authenticator is the best mechanism RADIUS has right now for tamper-evident integrity protection of the service provisioning attributes in an Access-Accept packet π. It's slightly less important for Access-Request packets, though it may still be worth protecting any "hint" attributes in those messages β¨. This protection covers the fact that RADIUS messages aren't encrypted, and that an adversary in a position to intercept the packet could add, delete, or modify attributes π±.
5. Acknowledgements π«Ά
The authors want to thank David Harrington and Juergen Schoenwaelder for all their helpful chats in this space, and Wes Hardaker for his thoughtful review comments π.
6. References π
6.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2865] Rigney, C., Willens, S., Rubens, A., and W. Simpson,
"Remote Authentication Dial In User Service (RADIUS)",
RFC 2865, June 2000.
[RFC5080] Nelson, D. and A. DeKok, "Common Remote Authentication
Dial In User Service (RADIUS) Implementation Issues and
Suggested Fixes", RFC 5080, December 2007.
[RFC5590] Harrington, D. and J. Schoenwaelder, "Transport Subsystem
for the Simple Network Management Protocol (SNMP)",
RFC 5590, June 2009.
[RFC5591] Harrington, D. and W. Hardaker, "Transport Security Model
for Simple Network Management Protocol (SNMP)", RFC 5591,
June 2009.
[RFC5607] Nelson, D. and G. Weber, "Remote Authentication Dial-In
User Service (RADIUS) Authorization for Network Access
Server (NAS) Management", RFC 5607, July 2009.
6.2. Informative References
[PAM] Samar, V. and R. Schemers, "UNIFIED LOGIN WITH PLUGGABLE
AUTHENTICATION MODULES (PAM)", Open Group RFC 86.0,
October 1995,
<http://www.opengroup.org/rfc/mirror-rfc/rfc86.0.txt>.
[RFC2607] Aboba, B. and J. Vollbrecht, "Proxy Chaining and Policy
Implementation in Roaming", RFC 2607, June 1999.
[RFC3162] Aboba, B., Zorn, G., and D. Mitton, "RADIUS and IPv6",
RFC 3162, August 2001.
[RFC3411] Harrington, D., Presuhn, R., and B. Wijnen, "An
Architecture for Describing Simple Network Management
Protocol (SNMP) Management Frameworks", STD 62, RFC 3411,
December 2002.
[RFC3579] Aboba, B. and P. Calhoun, "RADIUS (Remote Authentication
Dial In User Service) Support For Extensible
Authentication Protocol (EAP)", RFC 3579, September 2003.
[RFC3580] Congdon, P., Aboba, B., Smith, A., Zorn, G., and J. Roese,
"IEEE 802.1X Remote Authentication Dial In User Service
(RADIUS) Usage Guidelines", RFC 3580, September 2003.
[RFC4252] Ylonen, T. and C. Lonvick, "The Secure Shell (SSH)
Authentication Protocol", RFC 4252, January 2006.
[RFC5592] Harrington, D., Salowey, J., and W. Hardaker, "Secure
Shell Transport Model for Simple Network Management
Protocol (SNMP)", RFC 5592, June 2009.
Authors' Addresses π
Kaushik Narayan
Cisco Systems, Inc.
10 West Tasman Drive
San Jose, CA 95134
USA
Phone: +1.408.526.8168
EMail: kaushik_narayan@yahoo.com
David Nelson
Elbrys Networks, Inc.
282 Corporate Drive
Portsmouth, NH 03801
USA
Phone: +1.603.570.2636
EMail: dnelson@elbrysnetworks.com
π¦ where this page comes from
- ietf: rfc5608 2009-08
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms