Hi all,

below you'll find a patch that adds basic SNMPv3 support to OpenBSD's
snmpd(8). When I say "basic" that's because of some limitations:

- Traps are still sent via SNMPv2 protocol. They can neither be
         authenticated nor encrypted.

- Transport mode is still UDP. Not additional transport subsystems
         were added.

- Only the User-based Security Model (USM, RFC3414) is supported.
         View-Based Access Control (VACM, RFC3415) is not included.


Just to provide you a little background, I'll explain some details
below.

Three security levels are defined in RFC3411:

1) noAuthNoPriv: no authentication, no encryption
2) authNoPriv: with authentication, without encryption
3) authPriv: with authentication, with encryption

There is a new keyword 'seclevel' in snmpd.conf(5) that allows to
define the minimum security level required by snmpd(8). Any requirement
higher than noAuthNoPriv will disable SNMPv2 support.


The USM offers:

- Verification of message contents and authentication of the sender

         USM adds a HMAC to the SNMP message. The HMAC is calculated over
         the whole message with the HMAC portion set to zeroes.
         According to RFC3414 the defined HMAC algorithms are HMAC-MD5-96
         and HMAC-SHA-96. The key is derived from an authentication
         passphrase.


- Encryption of the PDU

         USM encypts only a part of the message, the scoped PDU while the
         SNMP header remains plaintext. RFC3414 defines only CBC DES but
         RFC3826 adds CFB128 AES 128 encryption (although this is not
         part of STD62). The IV is derived from an encryption passphrase.


- Protection agains replay attacks

         The non-authoritative SNMP engines have to synchronize their
         clocks with the authoritative SNMP engine. RFC3414 demands
         to reject any SNMPv3 message that has a timestamp that differs
         more than 150 seconds from the local clock.


The USM users together with their HMAC and encryption passphrases
have to be defined in snmpd.conf(5). The code already supports multiple
users, though without VACM there's not much sense to it.


Gerhard

[demime 1.01d removed an attachment of type application/octet-stream which had 
a name of snmpv3.patch]

Reply via email to