auth和priv不适用于snmpv3陷阱

t5fffqht  于 2021-06-27  发布在  Java
关注(0)|答案(0)|浏览(305)

我正在将v3陷阱发送到我的netsnmp容器。当我将securitylevel设置为1时,我得到:

0.....0...1x....
..........-0+...
..p.....3.8.....
....myuser..s...f'

## ..{-..0~.....p

.........Mon Jan
04 18:42:16 CET
20210...+.....me
ssage

安全级别1是noauthnopriv所以它可以工作,没关系。当我将安全级别设置为2时,我使用用户名和authpassword登录,然后它再次工作!但是,当我在用户名中输入了一个拼写错误时,我发现它也能正常工作:(因此,我可以编写user:someone,而不是有效的凭据)password:something and 它仍然有效。当涉及到安全级别3时,无论我尝试什么,我都不能让它工作。它总是和上面复制的结果一样,但是在日志的末尾有一行哈希代码,而不是“message”。这是否意味着它将凭据视为错误的凭据,这就是为什么要对其进行编码?我怎么也解不出来?总之,对于authnopriv,它每次都工作,它不关心auth password是否正确,对于authpriv,它从不工作,它不关心priv password是否正确。我试着把我的代码和网络上的代码混合起来,但没用。这是我的密码:

TransportMapping transport = new DefaultUdpTransportMapping();
        transport.listen();
        Snmp snmp = new Snmp(transport);

        USM usm = new USM(SecurityProtocols.getInstance().addDefaultProtocols(),
                new OctetString(MPv3.createLocalEngineID()), 0);
        SecurityProtocols.getInstance().addPrivacyProtocol(new PrivAES192());
        SecurityProtocols.getInstance().addPrivacyProtocol(new PrivAES256());
        SecurityProtocols.getInstance().addPrivacyProtocol(new Priv3DES());
        SecurityModels.getInstance().addSecurityModel(usm);

        String username = "myuser";

        snmp.getUSM().addUser( =
                new OctetString(username),
                new UsmUser(new OctetString(username), AuthMD5.ID, new OctetString(
                        "myAuthPasswd"), PrivAES128.ID, new OctetString("myPrivPasswd")));

        UserTarget target = new UserTarget();
        target.setAddress(new UdpAddress(ipAddress + "/" + port));
        target.setRetries(1);
        target.setTimeout(11500);
        target.setVersion(SnmpConstants.version3);
        target.setSecurityLevel(3);
        target.setSecurityName(new OctetString(username));

        PDU pdu = new ScopedPDU();
        pdu.setType(ScopedPDU.TRAP);
        pdu.add(new VariableBinding(SnmpConstants.snmpTrapOID,
                SnmpConstants.linkDown));
        pdu.add(new VariableBinding(new OID(trapOid), new OctetString("message")));

        snmp.send(pdu, target);
        System.out.println("Sending Trap to (IP:Port)=> " + ipAddress + ":"
                + port);

        snmp.close();
    }

另外,以下是我从容器的用户表中得到的信息:

SNMP-USER-BASED-SM-MIB::usmUserAuthProtocol.".....~"!x..._...."."myuser" = OID: SNMP-USER-BASED-SM-MIB::usmHMACMD5AuthProtocol

所以这个用户有md5authoprotocol。和

SNMP-USER-BASED-SM-MIB::usmUserPrivProtocol.".....~"!x..._...."."myuser" = OID: SNMP-USER-BASED-SM-MIB::usmDESPrivProtocol

此用户具有des priv协议。有人能帮忙吗?提前谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题