telemetry-snmp 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/rspec.yml +44 -0
  3. data/.github/workflows/rubocop.yml +28 -0
  4. data/.github/workflows/sourcehawk-scan.yml +20 -0
  5. data/.gitignore +14 -0
  6. data/.rspec +4 -0
  7. data/.rubocop.yml +26 -0
  8. data/CHANGELOG.md +4 -0
  9. data/CODE_OF_CONDUCT.md +75 -0
  10. data/CONTRIBUTING.md +54 -0
  11. data/Gemfile +10 -0
  12. data/INDIVIDUAL_CONTRIBUTOR_LICENSE.md +30 -0
  13. data/LICENSE +201 -0
  14. data/NOTICE.txt +9 -0
  15. data/README.md +54 -0
  16. data/attribution.txt +1 -0
  17. data/config.ru +15 -0
  18. data/exe/snmp_collector +55 -0
  19. data/lib/telemetry/snmp.rb +23 -0
  20. data/lib/telemetry/snmp/api.rb +55 -0
  21. data/lib/telemetry/snmp/auth.rb +54 -0
  22. data/lib/telemetry/snmp/auth/defaults.rb +41 -0
  23. data/lib/telemetry/snmp/client.rb +104 -0
  24. data/lib/telemetry/snmp/controllers/device_creds.rb +105 -0
  25. data/lib/telemetry/snmp/controllers/devices.rb +94 -0
  26. data/lib/telemetry/snmp/controllers/oid_groups.rb +71 -0
  27. data/lib/telemetry/snmp/controllers/oids.rb +80 -0
  28. data/lib/telemetry/snmp/controllers/users.rb +81 -0
  29. data/lib/telemetry/snmp/controllers/walks.rb +89 -0
  30. data/lib/telemetry/snmp/data.rb +69 -0
  31. data/lib/telemetry/snmp/data/default_opts.rb +73 -0
  32. data/lib/telemetry/snmp/data/migrations/001_device_creds.rb +19 -0
  33. data/lib/telemetry/snmp/data/migrations/002_create_devices_table.rb +31 -0
  34. data/lib/telemetry/snmp/data/migrations/003_create_oids_tables.rb +16 -0
  35. data/lib/telemetry/snmp/data/migrations/004_create_oid_groups.rb +15 -0
  36. data/lib/telemetry/snmp/data/migrations/005_create_oids_oid_groups.rb +17 -0
  37. data/lib/telemetry/snmp/data/migrations/006_device_to_oid_group.rb +15 -0
  38. data/lib/telemetry/snmp/data/migrations/007_create_users.rb +20 -0
  39. data/lib/telemetry/snmp/data/migrations/008_create_walks_table.rb +14 -0
  40. data/lib/telemetry/snmp/data/migrations/009_create_tag_name_column.rb +7 -0
  41. data/lib/telemetry/snmp/data/migrations/010_create_user_audit_table.rb +18 -0
  42. data/lib/telemetry/snmp/data/models/device.rb +11 -0
  43. data/lib/telemetry/snmp/data/models/device_cred.rb +11 -0
  44. data/lib/telemetry/snmp/data/models/oid.rb +10 -0
  45. data/lib/telemetry/snmp/data/models/oid_group.rb +10 -0
  46. data/lib/telemetry/snmp/data/models/oid_oid_groups.rb +10 -0
  47. data/lib/telemetry/snmp/data/models/oid_walk.rb +10 -0
  48. data/lib/telemetry/snmp/data/models/user.rb +10 -0
  49. data/lib/telemetry/snmp/data/models/user_audit_log.rb +19 -0
  50. data/lib/telemetry/snmp/mibs/AGENTX-MIB.txt +527 -0
  51. data/lib/telemetry/snmp/mibs/AIRPORT-BASESTATION-3-MIB.txt +461 -0
  52. data/lib/telemetry/snmp/mibs/BRIDGE-MIB.txt +1472 -0
  53. data/lib/telemetry/snmp/mibs/DISMAN-EVENT-MIB.txt +1882 -0
  54. data/lib/telemetry/snmp/mibs/DISMAN-SCHEDULE-MIB.txt +699 -0
  55. data/lib/telemetry/snmp/mibs/DISMAN-SCRIPT-MIB.txt +1764 -0
  56. data/lib/telemetry/snmp/mibs/EtherLike-MIB.txt +1862 -0
  57. data/lib/telemetry/snmp/mibs/HCNUM-TC.txt +118 -0
  58. data/lib/telemetry/snmp/mibs/HOST-RESOURCES-MIB.txt +1540 -0
  59. data/lib/telemetry/snmp/mibs/HOST-RESOURCES-TYPES.txt +389 -0
  60. data/lib/telemetry/snmp/mibs/IANA-ADDRESS-FAMILY-NUMBERS-MIB.txt +123 -0
  61. data/lib/telemetry/snmp/mibs/IANA-LANGUAGE-MIB.txt +123 -0
  62. data/lib/telemetry/snmp/mibs/IANA-RTPROTO-MIB.txt +91 -0
  63. data/lib/telemetry/snmp/mibs/IANAifType-MIB.txt +619 -0
  64. data/lib/telemetry/snmp/mibs/IF-INVERTED-STACK-MIB.txt +149 -0
  65. data/lib/telemetry/snmp/mibs/IF-MIB.txt +1814 -0
  66. data/lib/telemetry/snmp/mibs/INET-ADDRESS-MIB.txt +402 -0
  67. data/lib/telemetry/snmp/mibs/IP-FORWARD-MIB.txt +1277 -0
  68. data/lib/telemetry/snmp/mibs/IP-MIB.txt +4993 -0
  69. data/lib/telemetry/snmp/mibs/IPV6-FLOW-LABEL-MIB.txt +58 -0
  70. data/lib/telemetry/snmp/mibs/IPV6-ICMP-MIB.txt +529 -0
  71. data/lib/telemetry/snmp/mibs/IPV6-MIB.txt +1443 -0
  72. data/lib/telemetry/snmp/mibs/IPV6-TC.txt +67 -0
  73. data/lib/telemetry/snmp/mibs/IPV6-TCP-MIB.txt +211 -0
  74. data/lib/telemetry/snmp/mibs/IPV6-UDP-MIB.txt +141 -0
  75. data/lib/telemetry/snmp/mibs/NET-SNMP-AGENT-MIB.txt +554 -0
  76. data/lib/telemetry/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt +285 -0
  77. data/lib/telemetry/snmp/mibs/NET-SNMP-EXTEND-MIB.txt +325 -0
  78. data/lib/telemetry/snmp/mibs/NET-SNMP-MIB.txt +67 -0
  79. data/lib/telemetry/snmp/mibs/NET-SNMP-PASS-MIB.txt +124 -0
  80. data/lib/telemetry/snmp/mibs/NET-SNMP-TC.txt +128 -0
  81. data/lib/telemetry/snmp/mibs/NET-SNMP-VACM-MIB.txt +154 -0
  82. data/lib/telemetry/snmp/mibs/NOTIFICATION-LOG-MIB.txt +753 -0
  83. data/lib/telemetry/snmp/mibs/PAN-COMMON-MIB.md5 +1 -0
  84. data/lib/telemetry/snmp/mibs/PAN-COMMON-MIB.my +2293 -0
  85. data/lib/telemetry/snmp/mibs/PAN-ENTITY-EXT-MIB.md5 +1 -0
  86. data/lib/telemetry/snmp/mibs/PAN-ENTITY-EXT-MIB.my +293 -0
  87. data/lib/telemetry/snmp/mibs/PAN-GLOBAL-REG-MIB.md5 +1 -0
  88. data/lib/telemetry/snmp/mibs/PAN-GLOBAL-REG-MIB.my +84 -0
  89. data/lib/telemetry/snmp/mibs/PAN-GLOBAL-TC-MIB.md5 +1 -0
  90. data/lib/telemetry/snmp/mibs/PAN-GLOBAL-TC-MIB.my +68 -0
  91. data/lib/telemetry/snmp/mibs/PAN-LC-MIB.md5 +1 -0
  92. data/lib/telemetry/snmp/mibs/PAN-LC-MIB.my +204 -0
  93. data/lib/telemetry/snmp/mibs/PAN-PRODUCT-MIB.md5 +1 -0
  94. data/lib/telemetry/snmp/mibs/PAN-PRODUCT-MIB.my +305 -0
  95. data/lib/telemetry/snmp/mibs/PAN-TRAPS.md5 +1 -0
  96. data/lib/telemetry/snmp/mibs/PAN-TRAPS.my +7809 -0
  97. data/lib/telemetry/snmp/mibs/RFC-1215.txt +38 -0
  98. data/lib/telemetry/snmp/mibs/RFC1155-SMI.txt +119 -0
  99. data/lib/telemetry/snmp/mibs/RFC1213-MIB.txt +2613 -0
  100. data/lib/telemetry/snmp/mibs/RMON-MIB.txt +3980 -0
  101. data/lib/telemetry/snmp/mibs/SCTP-MIB.txt +1342 -0
  102. data/lib/telemetry/snmp/mibs/SMUX-MIB.txt +160 -0
  103. data/lib/telemetry/snmp/mibs/SNMP-COMMUNITY-MIB.txt +429 -0
  104. data/lib/telemetry/snmp/mibs/SNMP-FRAMEWORK-MIB.txt +526 -0
  105. data/lib/telemetry/snmp/mibs/SNMP-MPD-MIB.txt +145 -0
  106. data/lib/telemetry/snmp/mibs/SNMP-NOTIFICATION-MIB.txt +589 -0
  107. data/lib/telemetry/snmp/mibs/SNMP-PROXY-MIB.txt +294 -0
  108. data/lib/telemetry/snmp/mibs/SNMP-TARGET-MIB.txt +660 -0
  109. data/lib/telemetry/snmp/mibs/SNMP-USER-BASED-SM-MIB.txt +912 -0
  110. data/lib/telemetry/snmp/mibs/SNMP-USM-AES-MIB.txt +62 -0
  111. data/lib/telemetry/snmp/mibs/SNMP-USM-DH-OBJECTS-MIB.txt +532 -0
  112. data/lib/telemetry/snmp/mibs/SNMP-VIEW-BASED-ACM-MIB.txt +830 -0
  113. data/lib/telemetry/snmp/mibs/SNMPv2-CONF.txt +322 -0
  114. data/lib/telemetry/snmp/mibs/SNMPv2-MIB.txt +854 -0
  115. data/lib/telemetry/snmp/mibs/SNMPv2-SMI.txt +344 -0
  116. data/lib/telemetry/snmp/mibs/SNMPv2-TC.txt +772 -0
  117. data/lib/telemetry/snmp/mibs/SNMPv2-TM.txt +176 -0
  118. data/lib/telemetry/snmp/mibs/TCP-MIB.txt +785 -0
  119. data/lib/telemetry/snmp/mibs/TRANSPORT-ADDRESS-MIB.txt +421 -0
  120. data/lib/telemetry/snmp/mibs/TUNNEL-MIB.txt +738 -0
  121. data/lib/telemetry/snmp/mibs/UCD-DEMO-MIB.txt +74 -0
  122. data/lib/telemetry/snmp/mibs/UCD-DISKIO-MIB.txt +171 -0
  123. data/lib/telemetry/snmp/mibs/UCD-DLMOD-MIB.txt +124 -0
  124. data/lib/telemetry/snmp/mibs/UCD-IPFWACC-MIB.txt +327 -0
  125. data/lib/telemetry/snmp/mibs/UCD-SNMP-MIB.txt +1712 -0
  126. data/lib/telemetry/snmp/mibs/UDP-MIB.txt +549 -0
  127. data/lib/telemetry/snmp/publisher.rb +130 -0
  128. data/lib/telemetry/snmp/version.rb +7 -0
  129. data/sourcehawk.yml +4 -0
  130. data/telemetry-snmp.gemspec +48 -0
  131. metadata +456 -0
@@ -0,0 +1,62 @@
1
+ SNMP-USM-AES-MIB DEFINITIONS ::= BEGIN
2
+ IMPORTS
3
+ MODULE-IDENTITY, OBJECT-IDENTITY,
4
+ snmpModules FROM SNMPv2-SMI -- [RFC2578]
5
+ snmpPrivProtocols FROM SNMP-FRAMEWORK-MIB; -- [RFC3411]
6
+
7
+ snmpUsmAesMIB MODULE-IDENTITY
8
+ LAST-UPDATED "200406140000Z"
9
+ ORGANIZATION "IETF"
10
+ CONTACT-INFO "Uri Blumenthal
11
+ Lucent Technologies / Bell Labs
12
+ 67 Whippany Rd.
13
+ 14D-318
14
+ Whippany, NJ 07981, USA
15
+ 973-386-2163
16
+ uri@bell-labs.com
17
+
18
+ Fabio Maino
19
+ Andiamo Systems, Inc.
20
+ 375 East Tasman Drive
21
+ San Jose, CA 95134, USA
22
+ 408-853-7530
23
+ fmaino@andiamo.com
24
+
25
+ Keith McCloghrie
26
+ Cisco Systems, Inc.
27
+ 170 West Tasman Drive
28
+ San Jose, CA 95134-1706, USA
29
+
30
+ 408-526-5260
31
+ kzm@cisco.com"
32
+ DESCRIPTION "Definitions of Object Identities needed for
33
+ the use of AES by SNMP's User-based Security
34
+ Model.
35
+
36
+ Copyright (C) The Internet Society (2004).
37
+
38
+ This version of this MIB module is part of RFC 3826;
39
+ see the RFC itself for full legal notices.
40
+ Supplementary information may be available on
41
+ http://www.ietf.org/copyrights/ianamib.html."
42
+
43
+ REVISION "200406140000Z"
44
+ DESCRIPTION "Initial version, published as RFC3826"
45
+ ::= { snmpModules 20 }
46
+
47
+ usmAesCfb128Protocol OBJECT-IDENTITY
48
+ STATUS current
49
+ DESCRIPTION "The CFB128-AES-128 Privacy Protocol."
50
+ REFERENCE "- Specification for the ADVANCED ENCRYPTION
51
+ STANDARD. Federal Information Processing
52
+ Standard (FIPS) Publication 197.
53
+ (November 2001).
54
+
55
+ - Dworkin, M., NIST Recommendation for Block
56
+ Cipher Modes of Operation, Methods and
57
+ Techniques. NIST Special Publication 800-38A
58
+ (December 2001).
59
+ "
60
+ ::= { snmpPrivProtocols 4 }
61
+
62
+ END
@@ -0,0 +1,532 @@
1
+ SNMP-USM-DH-OBJECTS-MIB DEFINITIONS ::= BEGIN
2
+
3
+ IMPORTS
4
+ MODULE-IDENTITY, OBJECT-TYPE,
5
+ -- OBJECT-IDENTITY,
6
+ experimental, Integer32
7
+ FROM SNMPv2-SMI
8
+ TEXTUAL-CONVENTION
9
+ FROM SNMPv2-TC
10
+ MODULE-COMPLIANCE, OBJECT-GROUP
11
+ FROM SNMPv2-CONF
12
+ usmUserEntry
13
+ FROM SNMP-USER-BASED-SM-MIB
14
+ SnmpAdminString
15
+ FROM SNMP-FRAMEWORK-MIB;
16
+
17
+ snmpUsmDHObjectsMIB MODULE-IDENTITY
18
+ LAST-UPDATED "200003060000Z" -- 6 March 2000, Midnight
19
+ ORGANIZATION "Excite@Home"
20
+ CONTACT-INFO "Author: Mike StJohns
21
+ Postal: Excite@Home
22
+ 450 Broadway
23
+ Redwood City, CA 94063
24
+ Email: stjohns@corp.home.net
25
+ Phone: +1-650-556-5368"
26
+ DESCRIPTION
27
+ "The management information definitions for providing forward
28
+ secrecy for key changes for the usmUserTable, and for providing a
29
+ method for 'kickstarting' access to the agent via a Diffie-Helman
30
+ key agreement."
31
+
32
+ REVISION "200003060000Z"
33
+ DESCRIPTION
34
+ "Initial version published as RFC 2786."
35
+ ::= { experimental 101 } -- IANA DHKEY-CHANGE 101
36
+
37
+ -- Administrative assignments
38
+
39
+ usmDHKeyObjects OBJECT IDENTIFIER ::= { snmpUsmDHObjectsMIB 1 }
40
+ usmDHKeyConformance OBJECT IDENTIFIER ::= { snmpUsmDHObjectsMIB 2 }
41
+
42
+ -- Textual conventions
43
+
44
+ DHKeyChange ::= TEXTUAL-CONVENTION
45
+ STATUS current
46
+ DESCRIPTION
47
+ "Upon initialization, or upon creation of a row containing an
48
+ object of this type, and after any successful SET of this value, a
49
+ GET of this value returns 'y' where y = g^xa MOD p, and where g is
50
+ the base from usmDHParameters, p is the prime from
51
+ usmDHParameters, and xa is a new random integer selected by the
52
+ agent in the interval 2^(l-1) <= xa < 2^l < p-1. 'l' is the
53
+ optional privateValueLength from usmDHParameters in bits. If 'l'
54
+ is omitted, then xa (and xr below) is selected in the interval 0
55
+ <= xa < p-1. y is expressed as an OCTET STRING 'PV' of length 'k'
56
+ which satisfies
57
+
58
+ k
59
+ y = SUM 2^(8(k-i)) PV'i
60
+ i=1
61
+
62
+ where PV1,...,PVk are the octets of PV from first to last, and
63
+ where PV1 <> 0.
64
+
65
+ A successful SET consists of the value 'y' expressed as an OCTET
66
+ STRING as above concatenated with the value 'z'(expressed as an
67
+ OCTET STRING in the same manner as y) where z = g^xr MOD p, where
68
+ g, p and l are as above, and where xr is a new random integer
69
+ selected by the manager in the interval 2^(l-1) <= xr < 2^l <
70
+ p-1. A SET to an object of this type will fail with the error
71
+ wrongValue if the current 'y' does not match the 'y' portion of
72
+ the value of the varbind for the object. (E.g. GET yout, SET
73
+ concat(yin, z), yout <> yin).
74
+
75
+ Note that the private values xa and xr are never transmitted from
76
+ manager to device or vice versa, only the values y and z.
77
+ Obviously, these values must be retained until a successful SET on
78
+ the associated object.
79
+
80
+ The shared secret 'sk' is calculated at the agent as sk = z^xa MOD
81
+ p, and at the manager as sk = y^xr MOD p.
82
+
83
+ Each object definition of this type MUST describe how to map from
84
+ the shared secret 'sk' to the operational key value used by the
85
+ protocols and operations related to the object. In general, if n
86
+ bits of key are required, the author suggests using the n
87
+ right-most bits of the shared secret as the operational key value."
88
+ REFERENCE
89
+ "-- Diffie-Hellman Key-Agreement Standard, PKCS #3;
90
+ RSA Laboratories, November 1993"
91
+ SYNTAX OCTET STRING
92
+
93
+ -- Diffie Hellman public values
94
+
95
+ usmDHPublicObjects OBJECT IDENTIFIER ::= { usmDHKeyObjects 1 }
96
+
97
+ usmDHParameters OBJECT-TYPE
98
+ SYNTAX OCTET STRING
99
+ MAX-ACCESS read-write
100
+ STATUS current
101
+ DESCRIPTION
102
+ "The public Diffie-Hellman parameters for doing a Diffie-Hellman
103
+ key agreement for this device. This is encoded as an ASN.1
104
+ DHParameter per PKCS #3, section 9. E.g.
105
+
106
+ DHParameter ::= SEQUENCE {
107
+ prime INTEGER, -- p
108
+ base INTEGER, -- g
109
+ privateValueLength INTEGER OPTIONAL }
110
+
111
+ Implementors are encouraged to use either the values from
112
+ Oakley Group 1 or the values of from Oakley Group 2 as specified
113
+ in RFC-2409, The Internet Key Exchange, Section 6.1, 6.2 as the
114
+ default for this object. Other values may be used, but the
115
+ security properties of those values MUST be well understood and
116
+ MUST meet the requirements of PKCS #3 for the selection of
117
+ Diffie-Hellman primes.
118
+
119
+ In addition, any time usmDHParameters changes, all values of
120
+ type DHKeyChange will change and new random numbers MUST be
121
+ generated by the agent for each DHKeyChange object."
122
+ REFERENCE
123
+ "-- Diffie-Hellman Key-Agreement Standard, PKCS #3,
124
+ RSA Laboratories, November 1993
125
+ -- The Internet Key Exchange, RFC 2409, November 1998,
126
+ Sec 6.1, 6.2"
127
+ ::= { usmDHPublicObjects 1 }
128
+
129
+ usmDHUserKeyTable OBJECT-TYPE
130
+ SYNTAX SEQUENCE OF UsmDHUserKeyEntry
131
+ MAX-ACCESS not-accessible
132
+ STATUS current
133
+ DESCRIPTION
134
+ "This table augments and extends the usmUserTable and provides
135
+ 4 objects which exactly mirror the objects in that table with the
136
+ textual convention of 'KeyChange'. This extension allows key
137
+ changes to be done in a manner where the knowledge of the current
138
+ secret plus knowledge of the key change data exchanges (e.g. via
139
+ wiretapping) will not reveal the new key."
140
+ ::= { usmDHPublicObjects 2 }
141
+
142
+ usmDHUserKeyEntry OBJECT-TYPE
143
+ SYNTAX UsmDHUserKeyEntry
144
+ MAX-ACCESS not-accessible
145
+ STATUS current
146
+ DESCRIPTION
147
+ "A row of DHKeyChange objects which augment or replace the
148
+ functionality of the KeyChange objects in the base table row."
149
+ AUGMENTS { usmUserEntry }
150
+ ::= {usmDHUserKeyTable 1 }
151
+
152
+ UsmDHUserKeyEntry ::= SEQUENCE {
153
+ usmDHUserAuthKeyChange DHKeyChange,
154
+ usmDHUserOwnAuthKeyChange DHKeyChange,
155
+ usmDHUserPrivKeyChange DHKeyChange,
156
+ usmDHUserOwnPrivKeyChange DHKeyChange
157
+ }
158
+
159
+ usmDHUserAuthKeyChange OBJECT-TYPE
160
+ SYNTAX DHKeyChange
161
+ MAX-ACCESS read-create
162
+ STATUS current
163
+ DESCRIPTION
164
+ "The object used to change any given user's Authentication Key
165
+ using a Diffie-Hellman key exchange.
166
+
167
+ The right-most n bits of the shared secret 'sk', where 'n' is the
168
+ number of bits required for the protocol defined by
169
+ usmUserAuthProtocol, are installed as the operational
170
+ authentication key for this row after a successful SET."
171
+ ::= { usmDHUserKeyEntry 1 }
172
+
173
+ usmDHUserOwnAuthKeyChange OBJECT-TYPE
174
+ SYNTAX DHKeyChange
175
+ MAX-ACCESS read-create
176
+ STATUS current
177
+ DESCRIPTION
178
+ "The object used to change the agents own Authentication Key
179
+ using a Diffie-Hellman key exchange.
180
+
181
+ The right-most n bits of the shared secret 'sk', where 'n' is the
182
+ number of bits required for the protocol defined by
183
+ usmUserAuthProtocol, are installed as the operational
184
+ authentication key for this row after a successful SET."
185
+ ::= { usmDHUserKeyEntry 2 }
186
+
187
+ usmDHUserPrivKeyChange OBJECT-TYPE
188
+ SYNTAX DHKeyChange
189
+ MAX-ACCESS read-create
190
+ STATUS current
191
+ DESCRIPTION
192
+ "The object used to change any given user's Privacy Key using
193
+ a Diffie-Hellman key exchange.
194
+
195
+ The right-most n bits of the shared secret 'sk', where 'n' is the
196
+ number of bits required for the protocol defined by
197
+ usmUserPrivProtocol, are installed as the operational privacy key
198
+ for this row after a successful SET."
199
+ ::= { usmDHUserKeyEntry 3 }
200
+
201
+ usmDHUserOwnPrivKeyChange OBJECT-TYPE
202
+ SYNTAX DHKeyChange
203
+ MAX-ACCESS read-create
204
+ STATUS current
205
+ DESCRIPTION
206
+ "The object used to change the agent's own Privacy Key using a
207
+ Diffie-Hellman key exchange.
208
+
209
+ The right-most n bits of the shared secret 'sk', where 'n' is the
210
+ number of bits required for the protocol defined by
211
+ usmUserPrivProtocol, are installed as the operational privacy key
212
+ for this row after a successful SET."
213
+ ::= { usmDHUserKeyEntry 4 }
214
+
215
+ usmDHKickstartGroup OBJECT IDENTIFIER ::= { usmDHKeyObjects 2 }
216
+
217
+ usmDHKickstartTable OBJECT-TYPE
218
+ SYNTAX SEQUENCE OF UsmDHKickstartEntry
219
+ MAX-ACCESS not-accessible
220
+ STATUS current
221
+ DESCRIPTION
222
+ "A table of mappings between zero or more Diffie-Helman key
223
+ agreement values and entries in the usmUserTable. Entries in this
224
+ table are created by providing the associated device with a
225
+ Diffie-Helman public value and a usmUserName/usmUserSecurityName
226
+ pair during initialization. How these values are provided is
227
+ outside the scope of this MIB, but could be provided manually, or
228
+ through a configuration file. Valid public value/name pairs
229
+ result in the creation of a row in this table as well as the
230
+ creation of an associated row (with keys derived as indicated) in
231
+ the usmUserTable. The actual access the related usmSecurityName
232
+ has is dependent on the entries in the VACM tables. In general,
233
+ an implementor will specify one or more standard security names
234
+ and will provide entries in the VACM tables granting various
235
+ levels of access to those names. The actual content of the VACM
236
+
237
+ table is beyond the scope of this MIB.
238
+
239
+ Note: This table is expected to be readable without authentication
240
+ using the usmUserSecurityName 'dhKickstart'. See the conformance
241
+ statements for details."
242
+ ::= { usmDHKickstartGroup 1 }
243
+
244
+ usmDHKickstartEntry OBJECT-TYPE
245
+ SYNTAX UsmDHKickstartEntry
246
+ MAX-ACCESS not-accessible
247
+ STATUS current
248
+ DESCRIPTION
249
+ "An entry in the usmDHKickstartTable. The agent SHOULD either
250
+ delete this entry or mark it as inactive upon a successful SET of
251
+ any of the KeyChange-typed objects in the usmUserEntry or upon a
252
+ successful SET of any of the DHKeyChange-typed objects in the
253
+ usmDhKeyChangeEntry where the related usmSecurityName (e.g. row of
254
+ usmUserTable or row of ushDhKeyChangeTable) equals this entry's
255
+ usmDhKickstartSecurityName. In otherwords, once you've changed
256
+ one or more of the keys for a row in usmUserTable with a
257
+ particular security name, the row in this table with that same
258
+ security name is no longer useful or meaningful."
259
+ INDEX { usmDHKickstartIndex }
260
+ ::= {usmDHKickstartTable 1 }
261
+
262
+ UsmDHKickstartEntry ::= SEQUENCE {
263
+ usmDHKickstartIndex Integer32,
264
+ usmDHKickstartMyPublic OCTET STRING,
265
+ usmDHKickstartMgrPublic OCTET STRING,
266
+ usmDHKickstartSecurityName SnmpAdminString
267
+ }
268
+
269
+ usmDHKickstartIndex OBJECT-TYPE
270
+ SYNTAX Integer32 (1..2147483647)
271
+ MAX-ACCESS not-accessible
272
+ STATUS current
273
+ DESCRIPTION
274
+ "Index value for this row."
275
+ ::= { usmDHKickstartEntry 1 }
276
+
277
+ usmDHKickstartMyPublic OBJECT-TYPE
278
+ SYNTAX OCTET STRING
279
+ MAX-ACCESS read-only
280
+ STATUS current
281
+ DESCRIPTION
282
+ "The agent's Diffie-Hellman public value for this row. At
283
+
284
+ initialization, the agent generates a random number and derives
285
+ its public value from that number. This public value is published
286
+ here. This public value 'y' equals g^r MOD p where g is the from
287
+ the set of Diffie-Hellman parameters, p is the prime from those
288
+ parameters, and r is a random integer selected by the agent in the
289
+ interval 2^(l-1) <= r < p-1 < 2^l. If l is unspecified, then r is
290
+ a random integer selected in the interval 0 <= r < p-1
291
+
292
+ The public value is expressed as an OCTET STRING 'PV' of length
293
+ 'k' which satisfies
294
+
295
+ k
296
+ y = SUM 2^(8(k-i)) PV'i
297
+ i = 1
298
+
299
+ where PV1,...,PVk are the octets of PV from first to last, and
300
+ where PV1 != 0.
301
+
302
+ The following DH parameters (Oakley group #2, RFC 2409, sec 6.1,
303
+ 6.2) are used for this object:
304
+
305
+ g = 2
306
+ p = FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1
307
+ 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD
308
+ EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245
309
+ E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED
310
+ EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381
311
+ FFFFFFFF FFFFFFFF
312
+ l=1024
313
+ "
314
+ REFERENCE
315
+ "-- Diffie-Hellman Key-Agreement Standard, PKCS#3v1.4;
316
+ RSA Laboratories, November 1993
317
+ -- The Internet Key Exchange, RFC2409;
318
+ Harkins, D., Carrel, D.; November 1998"
319
+ ::= { usmDHKickstartEntry 2 }
320
+
321
+ usmDHKickstartMgrPublic OBJECT-TYPE
322
+ SYNTAX OCTET STRING
323
+ MAX-ACCESS read-only
324
+ STATUS current
325
+ DESCRIPTION
326
+ "The manager's Diffie-Hellman public value for this row. Note
327
+ that this value is not set via the SNMP agent, but may be set via
328
+ some out of band method, such as the device's configuration file.
329
+
330
+ The manager calculates this value in the same manner and using the
331
+ same parameter set as the agent does. E.g. it selects a random
332
+ number 'r', calculates y = g^r mod p and provides 'y' as the
333
+ public number expressed as an OCTET STRING. See
334
+ usmDHKickstartMyPublic for details.
335
+
336
+ When this object is set with a valid value during initialization,
337
+ a row is created in the usmUserTable with the following values:
338
+
339
+ usmUserEngineID localEngineID
340
+ usmUserName [value of usmDHKickstartSecurityName]
341
+ usmUserSecurityName [value of usmDHKickstartSecurityName]
342
+ usmUserCloneFrom ZeroDotZero
343
+ usmUserAuthProtocol usmHMACMD5AuthProtocol
344
+ usmUserAuthKeyChange -- derived from set value
345
+ usmUserOwnAuthKeyChange -- derived from set value
346
+ usmUserPrivProtocol usmDESPrivProtocol
347
+ usmUserPrivKeyChange -- derived from set value
348
+ usmUserOwnPrivKeyChange -- derived from set value
349
+ usmUserPublic ''
350
+ usmUserStorageType permanent
351
+ usmUserStatus active
352
+
353
+ A shared secret 'sk' is calculated at the agent as sk =
354
+ mgrPublic^r mod p where r is the agents random number and p is the
355
+ DH prime from the common parameters. The underlying privacy key
356
+ for this row is derived from sk by applying the key derivation
357
+ function PBKDF2 defined in PKCS#5v2.0 with a salt of 0xd1310ba6,
358
+ and iterationCount of 500, a keyLength of 16 (for
359
+ usmDESPrivProtocol), and a prf (pseudo random function) of
360
+ 'id-hmacWithSHA1'. The underlying authentication key for this row
361
+ is derived from sk by applying the key derivation function PBKDF2
362
+ with a salt of 0x98dfb5ac , an interation count of 500, a
363
+ keyLength of 16 (for usmHMAC5AuthProtocol), and a prf of
364
+ 'id-hmacWithSHA1'. Note: The salts are the first two words in the
365
+ ks0 [key schedule 0] of the BLOWFISH cipher from 'Applied
366
+ Cryptography' by Bruce Schnier - they could be any relatively
367
+ random string of bits.
368
+
369
+ The manager can use its knowledge of its own random number and the
370
+ agent's public value to kickstart its access to the agent in a
371
+ secure manner. Note that the security of this approach is
372
+ directly related to the strength of the authorization security of
373
+ the out of band provisioning of the managers public value
374
+ (e.g. the configuration file), but is not dependent at all on the
375
+ strength of the confidentiality of the out of band provisioning
376
+ data."
377
+ REFERENCE
378
+ "-- Password-Based Cryptography Standard, PKCS#5v2.0;
379
+ RSA Laboratories, March 1999
380
+ -- Applied Cryptography, 2nd Ed.; B. Schneier,
381
+ Counterpane Systems; John Wiley & Sons, 1996"
382
+ ::= { usmDHKickstartEntry 3 }
383
+
384
+ usmDHKickstartSecurityName OBJECT-TYPE
385
+ SYNTAX SnmpAdminString
386
+ MAX-ACCESS read-only
387
+ STATUS current
388
+ DESCRIPTION
389
+ "The usmUserName and usmUserSecurityName in the usmUserTable
390
+ associated with this row. This is provided in the same manner and
391
+ at the same time as the usmDHKickstartMgrPublic value -
392
+ e.g. possibly manually, or via the device's configuration file."
393
+ ::= { usmDHKickstartEntry 4 }
394
+
395
+ -- Conformance Information
396
+
397
+ usmDHKeyMIBCompliances OBJECT IDENTIFIER ::= { usmDHKeyConformance 1 }
398
+ usmDHKeyMIBGroups OBJECT IDENTIFIER ::= { usmDHKeyConformance 2 }
399
+
400
+ -- Compliance statements
401
+
402
+ usmDHKeyMIBCompliance MODULE-COMPLIANCE
403
+ STATUS current
404
+ DESCRIPTION
405
+ "The compliance statement for this module."
406
+ MODULE
407
+ GROUP usmDHKeyMIBBasicGroup
408
+ DESCRIPTION
409
+ "This group MAY be implemented by any agent which
410
+ implements the usmUserTable and which wishes to provide the
411
+ ability to change user and agent authentication and privacy
412
+ keys via Diffie-Hellman key exchanges."
413
+
414
+ GROUP usmDHKeyParamGroup
415
+ DESCRIPTION
416
+ "This group MUST be implemented by any agent which
417
+ implements a MIB containing the DHKeyChange Textual
418
+ Convention defined in this module."
419
+
420
+ GROUP usmDHKeyKickstartGroup
421
+ DESCRIPTION
422
+ "This group MAY be implemented by any agent which
423
+ implements the usmUserTable and which wishes the ability to
424
+ populate the USM table based on out-of-band provided DH
425
+ ignition values.
426
+
427
+ Any agent implementing this group is expected to provide
428
+ preinstalled entries in the vacm tables as follows:
429
+
430
+ In the usmUserTable: This entry allows access to the
431
+ system and dhKickstart groups
432
+
433
+ usmUserEngineID localEngineID
434
+ usmUserName 'dhKickstart'
435
+ usmUserSecurityName 'dhKickstart'
436
+ usmUserCloneFrom ZeroDotZero
437
+ usmUserAuthProtocol none
438
+ usmUserAuthKeyChange ''
439
+ usmUserOwnAuthKeyChange ''
440
+ usmUserPrivProtocol none
441
+ usmUserPrivKeyChange ''
442
+ usmUserOwnPrivKeyChange ''
443
+ usmUserPublic ''
444
+ usmUserStorageType permanent
445
+ usmUserStatus active
446
+
447
+ In the vacmSecurityToGroupTable: This maps the initial
448
+ user into the accessible objects.
449
+
450
+ vacmSecurityModel 3 (USM)
451
+ vacmSecurityName 'dhKickstart'
452
+ vacmGroupName 'dhKickstart'
453
+ vacmSecurityToGroupStorageType permanent
454
+ vacmSecurityToGroupStatus active
455
+
456
+ In the vacmAccessTable: Group name to view name translation.
457
+
458
+ vacmGroupName 'dhKickstart'
459
+ vacmAccessContextPrefix ''
460
+ vacmAccessSecurityModel 3 (USM)
461
+ vacmAccessSecurityLevel noAuthNoPriv
462
+ vacmAccessContextMatch exact
463
+ vacmAccessReadViewName 'dhKickRestricted'
464
+ vacmAccessWriteViewName ''
465
+ vacmAccessNotifyViewName 'dhKickRestricted'
466
+ vacmAccessStorageType permanent
467
+ vacmAccessStatus active
468
+
469
+ In the vacmViewTreeFamilyTable: Two entries to allow the
470
+ initial entry to access the system and kickstart groups.
471
+
472
+ vacmViewTreeFamilyViewName 'dhKickRestricted'
473
+ vacmViewTreeFamilySubtree 1.3.6.1.2.1.1 (system)
474
+ vacmViewTreeFamilyMask ''
475
+
476
+ vacmViewTreeFamilyType 1
477
+ vacmViewTreeFamilyStorageType permanent
478
+ vacmViewTreeFamilyStatus active
479
+
480
+ vacmViewTreeFamilyViewName 'dhKickRestricted'
481
+ vacmViewTreeFamilySubtree (usmDHKickstartTable OID)
482
+ vacmViewTreeFamilyMask ''
483
+ vacmViewTreeFamilyType 1
484
+ vacmViewTreeFamilyStorageType permanent
485
+ vacmViewTreeFamilyStatus active
486
+ "
487
+
488
+ OBJECT usmDHParameters
489
+ MIN-ACCESS read-only
490
+ DESCRIPTION
491
+ "It is compliant to implement this object as read-only for
492
+ any device."
493
+ ::= { usmDHKeyMIBCompliances 1 }
494
+
495
+ -- Units of Compliance
496
+
497
+ usmDHKeyMIBBasicGroup OBJECT-GROUP
498
+ OBJECTS {
499
+ usmDHUserAuthKeyChange,
500
+ usmDHUserOwnAuthKeyChange,
501
+ usmDHUserPrivKeyChange,
502
+ usmDHUserOwnPrivKeyChange
503
+ }
504
+ STATUS current
505
+ DESCRIPTION
506
+ ""
507
+ ::= { usmDHKeyMIBGroups 1 }
508
+
509
+ usmDHKeyParamGroup OBJECT-GROUP
510
+ OBJECTS {
511
+ usmDHParameters
512
+ }
513
+ STATUS current
514
+ DESCRIPTION
515
+ "The mandatory object for all MIBs which use the DHKeyChange
516
+ textual convention."
517
+ ::= { usmDHKeyMIBGroups 2 }
518
+
519
+ usmDHKeyKickstartGroup OBJECT-GROUP
520
+ OBJECTS {
521
+ usmDHKickstartMyPublic,
522
+ usmDHKickstartMgrPublic,
523
+ usmDHKickstartSecurityName
524
+ }
525
+ STATUS current
526
+ DESCRIPTION
527
+ "The objects used for kickstarting one or more SNMPv3 USM
528
+ associations via a configuration file or other out of band,
529
+ non-confidential access."
530
+ ::= { usmDHKeyMIBGroups 3 }
531
+
532
+ END