ietf-corpus

rfc-5953

Transport Layer Security (TLS) Transport Model for the Simple Network Management Protocol (SNMP)

W. Hardaker
date2010-08 streamIETF areaapp wgisms statusPROPOSED STANDARD pages65 canonicalhttps://www.rfc-editor.org/rfc/rfc5953 doi10.17487/RFC5953 errataview
This document describes a Transport Model for the Simple Network Management Protocol (SNMP), that uses either the Transport Layer Security protocol or the Datagram Transport Layer Security (DTLS) protocol. The TLS and DTLS protocols provide authentication and privacy services for SNMP applications. This document describes how the TLS Transport Model (TLSTM) implements the needed features of a SNMP Transport Subsystem to make this protection possible in an interoperable way. This Transport Model is designed to meet the security and operational needs of network administrators. It supports the sending of SNMP messages over TLS/TCP and DTLS/UDP. The TLS mode can make use of TCP's improved support for larger packet sizes and the DTLS mode provides potentially superior operation in environments where a connectionless (e.g., UDP) transport is preferred. Both TLS and DTLS integrate well into existing public keying infrastructures. This document also defines a portion of the Management Information Base (MIB) for use with network management protocols. In particular, it defines objects for managing the TLS Transport Model for SNMP. [STANDARDS-TRACK]

obsoleted by

updated by

Extracted elements (31)

design-rationale §1

DTLS was included alongside TLS to serve environments where connectionless UDP transport is preferred (e.g., where existing SNMP infrastructure uses UDP). TLS/TCP is better suited for large data transfers due to TCP's support for larger packet sizes.

snmp, tls, udp, tcp

design-rationale §3.1.3

The TLSTM defines its own tlstmSessionID rather than reusing the (D)TLS internal SessionID because the (D)TLS internal ID can change during renegotiation and may be shared across multiple TLSTM sessions, making it unsuitable as a stable, unique TLSTM session reference.

snmp, tls

design-rationale §7

The use of CommonName for tmSecurityName mapping (snmpTlstmCertCommonName) is deprecated in favor of subjectAltName mappings. This follows RFC 5280's preference for subjectAltName and avoids ambiguity inherent in CommonName fields.

snmp, tls, pkix

interoperability-note §5.3.2

Servers supporting multiple principals at a single port SHOULD use the TLS Server Name Indication extension (RFC 4366 Section 3.1) to allow server-side principal selection, enabling notifications to a specific principal at a given TCP or UDP port.

snmp, tls

interoperability-note §4.1.1

The standard VACM access control model constrains securityNames to 32 octets or less. A tmSecurityName derived from an IPv6 subjectAltName iPAddress (32 hex chars) combined with a TSM transport prefix produces a 36-octet securityName that cannot be used with standard VACM or TARGET MIB modules.

snmp, tls, pkix

normative-requirement §3.1.2 MUST NOT

A TLS Transport Model implementation MUST support message encryption. The NULL integrity and encryption algorithms MUST NOT be used to fulfill security level requests for authentication or privacy.

snmp, tls, security, crypto

normative-requirement §3.1.1 MUST

A TLS Transport Model implementation MUST support the authentication of both the server and the client using X.509 certificates. TLSTM implementations are REQUIRED to support X.509 certificates; other forms of authentication are outside the scope of this specification.

snmp, tls, pkix, security

normative-requirement §4.2 MUST

(D)TLS MUST negotiate a cipher_suite that uses X.509 certificates for authentication, and MUST authenticate both the client and the server. The mandatory-to-implement cipher_suite is specified in the TLS specification (RFC 5246).

snmp, tls, pkix, crypto

normative-requirement §4.2 MUST

For DTLS over UDP, each SNMP message MUST be placed in a single UDP datagram (it MAY be split into multiple DTLS records). The TLSTM implementation SHOULD return an error if the SNMP message does not fit in the UDP datagram.

snmp, tls, udp

normative-requirement §4.2 MUST

For DTLS over UDP, the DTLS server implementation MUST support DTLS cookies; enabling the cookie exchange by default is RECOMMENDED. For DTLS, replay protection MUST be used.

snmp, tls, security, udp

normative-requirement §5.3.1 MUST NOT

The (D)TLS client MUST verify the server's presented certificate and MUST NOT transmit SNMP messages until the server certificate has been authenticated, the client certificate has been transmitted, and the TLS connection has been fully established.

snmp, tls, pkix, security

normative-requirement §5.3.2 MUST

The (D)TLS server MUST request and expect a certificate from the client and MUST NOT accept SNMP messages over the (D)TLS connection until the client has sent a certificate and it has been authenticated. Any verification failure MUST cause session establishment to fail.

snmp, tls, pkix, security

normative-requirement §3.1.3 MUST NOT

The tlstmSessionID MUST NOT change during the entire duration of the session and MUST uniquely identify a single session. The (D)TLS internal SessionID does not meet these requirements, as it can change during renegotiation.

snmp, tls

normative-requirement §4.4.1.1 MUST

The tmSecurityName MUST be a human-readable name in snmpAdminString format and MUST be constant for all traffic passing through a single TLSTM session. Messages MUST NOT be sent through an existing (D)TLS connection established using a different tmSecurityName.

snmp, tls, security

normative-requirement §4.2 MUST NOT

TLS renegotiation with different certificates MUST NOT be done. Implementations MUST either disable renegotiation completely (RECOMMENDED) or present the same certificate during renegotiation and verify the peer also presented the same certificate.

snmp, tls, security, pkix

normative-requirement §4.1.1 MUST

Trusted public keys from CA certificates and/or self-signed certificates MUST be installed into the server through a trusted out-of-band mechanism and their authenticity MUST be verified before access is granted.

snmp, tls, pkix, security

normative-requirement §5.4 MUST

When closing a session, (D)TLS MUST send a close_notify TLS Alert to inform the other side that session cleanup may be performed.

snmp, tls

normative-requirement §5.1.1 MUST

When establishing a new DTLS session, implementations MUST use a different UDP source port number for each active connection to a remote destination IP-address/port-number combination to ensure the remote entity can disambiguate between multiple connections.

snmp, tls, udp

protocol-element §7

SnmpTLSFingerprint is a textual convention composed of a 1-octet hashing algorithm identifier (from the IANA TLS HashAlgorithm Registry per RFC 5246) followed by the fingerprint value. A zero-length value is permitted for use in optional-fingerprint contexts.

snmp, tls, pkix, registry

protocol-element §4.1.1

The snmpTlstmCertToTSNTable maps incoming (D)TLS client certificates to tmSecurityNames via defined transformations: mapping subjectAltName (rfc822Name, dNSName, iPAddress) or CommonName to a tmSecurityName, or mapping a certificate fingerprint to a directly specified tmSecurityName.

snmp, tls, pkix, security

protocol-element §3.1.3

tlstmSessionID is a locally chosen unique session identifier stored in the LCD and tmStateReference. For DTLS/UDP, it is indexed by the combination of transportDomain, transportAddress, tmSecurityName, and requestedSecurityLevel. It must not reuse identifiers while still referenced.

snmp, tls

protocol-element §4.4.1.1

tmSecurityName is a per-session cached value derived from the peer's X.509 certificate using the snmpTlstmCertToTSNTable. On the server side it is derived from the client certificate; on the client side it is provided by the security model via tmStateReference.

snmp, tls, pkix, security

registry §7

The SNMP-TLS-TM-MIB defines six certificate-to-tmSecurityName mapping algorithm identities under snmpTlstmCertToTSNMIdentities: snmpTlstmCertSpecified, snmpTlstmCertSANRFC822Name, snmpTlstmCertSANDNSName, snmpTlstmCertSANIpAddress, snmpTlstmCertSANAny, and snmpTlstmCertCommonName.

snmp, tls, pkix, registry

registry §7

The SNMP-TLS-TM-MIB is assigned OID mib-2 198. It defines snmpTLSTCPDomain (snmpDomains 8) for SNMP over TLS/TCP and snmpDTLSUDPDomain (snmpDomains 9) for SNMP over DTLS/UDP as new transport domain object identities.

snmp, tls, registry

security-consideration §9.4

Access to writable MIB objects in the SNMP-TLS-TM-MIB (e.g., snmpTlstmCertToTSNTable, snmpTlstmAddrTable, snmpTlstmParamsTable) must be carefully controlled, as misconfiguration can allow unauthorized principals to be authenticated or valid sessions to be rejected.

snmp, tls, security

security-consideration §9.2.1

Implementations MUST use TLS version 1.0 or higher (section 9.2.1 references RFC 5246 TLS 1.2 as the specification). The NULL integrity and encryption algorithms MUST NOT be used; cipher suites providing both authentication and privacy are recommended to satisfy all security level requests.

snmp, tls, security, crypto

security-consideration §9.2.2

Perfect Forward Secrecy (PFS): implementations SHOULD use cipher suites that provide PFS (e.g., DHE or ECDHE key exchange) so that compromise of long-term keys does not compromise past session traffic.

snmp, tls, security, crypto

security-consideration §9.3

Use of TLSTM with SNMPv1 or SNMPv2c messages is strongly discouraged; those message formats lack per-message security and community strings are sent in cleartext, undermining the security provided by the TLS transport layer.

snmp, tls, security

state-machine §5.4

Session close: (1) increment snmpTlstmSessionClientCloses or snmpTlstmSessionServerCloses, (2) look up session by tmSessionID, (3) if no open session, stop, (4) have (D)TLS close the connection including sending close_notify.

snmp, tls

state-machine §5.3.1

Session establishment as client: (1) increment snmpTlstmSessionOpens, (2) select certificate and cipher_suites, (3) initiate (D)TLS handshake, (4) verify server certificate, (5) fail and increment snmpTlstmSessionInvalidServerCertificates on any verification failure, (6) set tlstmSessionID on success.

snmp, tls, pkix

wire-format §7

SnmpTLSAddress is an OCTET STRING (SIZE 1..255) encoding an IPv4 dotted-decimal address, an IPv6 colon-separated address in square brackets, or a US-ASCII hostname, each followed by a colon and a decimal port number. Internationalized hostnames are encoded via the ToASCII operation with UseSTD3ASCIIRules.

snmp, tls, ip