SNMPv3 bei HP Laserjets konfigurieren

Letzte Aktualisierung am 08.06.2021, 10:06:21 Uhr

Ich stelle seit einigen Wochen alle SNMPv2c Konfigurationen von Netzwerkdruckern auf SNMPv3 um. Gestern bzw. Heute standen zwei HP Laserjet P2055DN auf meiner Liste. Nachdem ich vor Weihnachten einige Kyocera – Geräte umgestellte, machte ich mir keinen Kopf um mögliche Probleme.

Beim Eingeben der SNMPv3 Daten über das Webinterface erhielt ich schon die erste Fehlermeldung:
snmpv3-hp-lj-p2055dn

Ähhh, was soll dieser Mist… Nach ein 1-2 Stunden suchen bin ich auf das RFC 3414 gestoßen. Kurz die Funktionen unter A2.x bzw. A3.x studiert und dachte nur „What the fuck…“.

Dazu habe ich auf der HP-Webseite noch folgende Erklärung gefunden:
Jetdirect SNMPv3 Configuration

User Name
=========
The user name is a user-defined character string with the following characteristics:
Up to 32 characters
Can contain spaces
Case sensitive

Authentication Key
==================
The authentication key is a 16-byte hexadecimal string generated from a case sensitive ASCII passphrase string and the printer’s SNMPv3 Engine ID using Message-Digest algorithm 5 (MD5) hashing.
The Engine ID is a hexadecimal string as follows: „0000000B“ + MAC_Address + „0001“

Example
MAC Address = 0018FEA09EFC
Passphrase = Atlantic Ocean 01234
Engine ID = 0000000B0018FEA09EFC0001
Authentication Key = 4BEEE6A296B05D69EDC7772981783593

Privacy Key
==================
The privacy key is a 16-byte hexadecimal string generated from a case sensitive ASCII passphrase string and the printer’s SNMPv3 Engine ID using Data Encryption Standard (DES) hashing.

Example
MAC Address = 0018FEA09EFC
Passphrase = Pacific Ocean 56789
Engine ID = 0000000B0018FEA09EFC0001
Privacy Key = 0A0598AA68BE6B8CBBD7AB018C158C66

Also gut, ein Skript für die Umrechnung muss her. An sich ist die Funktion simpel:
1) MAC-Adresse des Drucker auslesen
2) Passpharse überlegen
3) Engine ID zusammenbauen
4) Von Passphrase + Engine ID einen MD5 Hash bilden
5) MD5 Hast in einen 16 Byte Hex String konvertieren

Leider sind meine Versuche das RFC in PHP, Powershell o.ä. in einem kleinen Tool abzubilden, fehlgeschlagen. Ich bin allerdings nicht der geborene Entwickler. Auch auf Nachfrage bei meinen Bruder, der sowas studiert, kam ein Kopfschütteln zurück. Aber er hat ein Perlmodul mit dem Namen snmpkey entdeckt, welches die beschriebene Punkte übernimmt.

Ich habe dazu eine Jiffbox bei domainFactory mit Ubuntu 14.04 LTS, 64Bit aufgesetzt. Das Tool lässt sich mit zwei Paketinstallationen sofort nutzen:

apt-get install libnet-snmp-perl
apt-get install libcrypt-des-ede3-perl

Unter Debian muss zusätzlich dieses Paket installiert werden:

apt-get install libdigest-hmac-perl

Gibt man per Shell snmpkey ein erscheint sofort die Hilfe:

root@test012:/# snmpkey
snmpkey v6.0.0
Copyright (c) 2001-2009 David M. Town.  All rights reserved.
All rights reserved.
Usage: snmpkey <authProto> <password> <authEngineID> [<privProto> [<password>]]
       <authProto> = md5|sha
       <privProto> = des|3des|aes
root@j118691:/#

Als ersten Test nehme ich die Werte von der HP-Webseite her:

root@test012:/# snmpkey "md5" "Atlantic Ocean 01234" "0000000B0018FEA09EFC0001" "des" "Pacific Ocean 56789"
authKey: 0x4beee6a296b05d69edc7772981783593
privKey: 0x0a0598aa68be6b8cbbd7ab018c158c66
root@test012:/#

Wichtig: „0x“ nicht mitkopieren! Die beiden Werte stimmen den oben niedergeschrieben zu 100% überein.

Nun habe ich mit der MAC-Adresse des betroffenen Druckers den Auth/Privkey generiert und auf dem Webinterface eingetragen und gespeichert:
snmpv3-hp-lj-p2055dn-config-ok

Die finale Probe ist eine Testabfrage mit einem SNMP-Tool. Ich nutze dafür gerne von Paessler SNMP Test in der neusten Version.
snmpv3-hp-lj-p2055dn-snmp-test

Die Erhöhung der Sicherheit hat mich – mal wieder – 6 Stunden meines Lebens gekostet. Nur weil es der Hersteller nicht schafft/für nötig hält, sowas sauber zu dokumentieren.

Abonnieren
Benachrichtige mich bei
0 Comments
Inline Feedbacks
View all comments