配置snmptrapd以接收SNMPv3通知
一、SNMPv3 INFORMs(通知) 和 SNMP TRAPs
具有基于用户的安全模型(USM)的SNMPv3为SNMPv3应用程序使用具有权威性的EngineID标识符(即控制信息流的标识符):
对于SNMPv3 TRAPs,权威引擎是发送trap的引擎
使用SNMPv3 INFORMs,权威引擎是接收trap的引擎
SNMPv3 USM用户由权威EngineID和用户名的组合唯一定义
二、配置snmptrapd以接收SNMPv3通知
2.1、配置SNMPv3 trap用户
由于发送trap的应用程序是授权的,这意味着在snmptrapd中创建的用户必须绑定到发送trap的EngineID。您可以在
/var/net- snmp/snmptrapd.conf
文件中创建一行,如下所示:
createUser -e engineID myuser SHA "my authentication pass" AES "my encryption pass"
# engineID 将要发送trap的应用程序的EngineID
# myuser 将要发送trap的USM用户名
# SHA 身份验证类型(SHA或MD5,其中SHA更好)
# my authentication pass 用于生成机密身份验证密钥的身份验证密码短语。如果包含空格,请用引号将其括起来
# AES 要使用的加密类型(AES或DES,AES更好)
# my encryption pass 用于生成机密加密密钥的加密密码短语。如果包含空格,请用引号将其括起来。如果您将其禁用,它将设置为与身份验证密码相同的密码短语。
2.2、配置SNMPv3 INFORM (通知)用户
由于接收通知的应用程序是权威的,这意味着snmptrapd应用程序的EngineID将用于帮助唯一标识用户。只需在
/var/net-snmp/snmptrapd.conf
文件中创建一行,即可在snmptrapd应用程序中创建一个新的SNMPv3用户,该用户与snmptrapd引擎相关联
createUser myuser SHA "my authentication pass" AES "my encryption pass"
三、授权用户对收到的通知执行操作
现在您的用户已经被正确创建,您仍然需要允许snmptrapd处理traps,并通知被发送的用户。例如,仅仅因为已经收到请求并且(加密)验证了它是真实的,如果不允许的话,snmptrapd仍然不会对通知做任何事情, 在
/etc/snmp/snmptrapd.conf
设置
authUser log,execute,net myuser
#这一行允许snmptrapd接收通过myuser密码日志验证的traps,执行命令并转发它们。(默认情况下,snmptrapd只记录收到的通知,但可以设置为执行命令并将通知转发到其他地方)
#如果要接收随noAuthNoPriv发送的v3 traps(或通知),则需要将noauth添加到authUser行
authUser log,execute,net myuser noauth
四、案例
4.1、SNMPv3 TRAP
1、为此,我编写一个engineID使用:
0x800000001020304
)
在/tmp/snmptrapd.conf
文件中,输入
createUser -e 0x8000000001020304 traptest SHA mypassword AES
authuser log traptest
2、然后启动指向该文件的snmptrapd(在前台运行,仅使用该配置文件并记录到stderr)
snmptrapd -f -C -c /tmp/snmptrapd.conf -Le
3、然后运行snmptrap(在另一个窗口中)发送链接trap
snmptrap -v 3 -n "" -a SHA -A mypassword -x AES -X mypassword -l authPriv -u traptest -e 0x8000000001020304 localhost 0 linkUp.0
4、可以在运行snmptrapd的窗口的输出中看到这一点
2021-12-01 14:34:49 localhost [UDP: [127.0.0.1]:54815->[127.0.0.1]:162]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::snmpTrapOID.0 = OID: IF-MIB::linkUp.0
Success!
4.2、SNMPv3 INFORM (通知)
1、在
/tmp/snmptrapd.conf
文件中,输入
createUser informtest SHA mypassword AES
authuser log informtest
2、然后启动指向该文件的snmptrapd(在前台运行,仅使用该配置文件并记录到stderr)
snmptrapd -f -C -c /tmp/snmptrapd.conf -Le
3、然后运行snmptrap(在另一个窗口中)发送链接通知(-Ci开关使snmptrap发送通知)
snmptrap -Ci -v 3 -a SHA -A mypassword -x AES -X mypassword -l authPriv -u informtest localhost 0 linkUp.0
4、可以在运行snmptrapd的窗口的输出中看到这一点
2021-12-01 14:44:04 localhost [UDP: [127.0.0.1]:60098->[127.0.0.1]:162]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::snmpTrapOID.0 = OID: IF-MIB::linkUp.0
Success!