1
SNMP Applied
Sicheres Anwendungsmonitoring mit SNMP
Gerrit Beine
mail@gerritbeine.com
2
Ziele des Vortrags
● Überblick zu SNMP liefern
● Grundlegende Anwendung von Net-SNMP erklären
● SNMPv3 mit Net-SNMP konf...
3
Grundlegendes zu SNMP
4
SNMP
● Simple Network Management Protocol
● Verwendet UDP, Ports 161 und 162
● Historie
● Version 1 (1988) Ursprüngliche...
5
Anwendungen von SNMP
● Kontinuierliches Monitoring (Polling)
● Uptime, Load
● Netzwerkverkehr
● Speicherverbrauch (RAM, ...
6
SNMP Begriffswelt
● Agent – SNMP-Daemon, der Informationen via UDP 161 bereitstellt oder
Traps via UDP 162 versendet
● M...
7
Der MIB-Baum
root
ccitt(0) joint-iso-ccitt(2)iso(1)
org(3)
dod(6)
internet(1)
directory(1) mgmt(2) experimental(3) priva...
8
OID: Object Identifier
● OIDs sind eindeutige Identifikatoren innerhalb eines Agenten bzw. eine
Gerätes
● OIDs navigiere...
9
Net-SNMP
10
Net-SNMP
● OpenSource SNMP Implementierung (CMU, BSD-Like)
● Läuft auf fast allen Unix- und Linux-Systemen
● Unterstütz...
11
Net-SNMP snmpd konfigurieren
● Minimale Konfiguration definiert Standort, Kontakt und erlaubt Ausles
# /etc/snmp/snmpd....
12
Das Problem:
Das ist alles total unsicher!
13
Probleme von SNMPv1 und SNMPv2c
● Autorisierung erfolgt über die IP-Adresse
● Authentifizierung erfolgt über Community
...
14
Net-SNMP für SNMPv3 konfigurieren
● Benutzer anlegen
~$ /etc/init.d/snmpd stop
~$ net-snmp-config --create-snmpv3-user ...
15
Net-SNMP für SNMPv3 konfigurieren
● Minimale Konfiguration für SNMPv3
# /var/lib/net-snmp/snmpd.conf (openSUSE)
# /var/...
16
Benutzer hinzufügen
● Neue Benutzer benötigen einen Template-User
● Benutzer hinzufügen mit snmpusm
● Danach unbedingt ...
17
Benutzer hinzufügen
● Benutzer in Konfiguration eintragen und SNMP neu starten
# /etc/snmp/snmpd.conf
syslocation Serve...
18
Luxus auf Client-Seite
● Client Konfiguration für snmpget, snmpwalk, snmpset, ...
# ~/.snmp/snmp.conf
defSecurityName g...
19
Sicherheit erhöhen
● Verschlüsselung auf Seite des Servers erzwingen:
# /etc/snmp/snmpd.conf
# ...
rwuser gbeine priv
●...
20
Verbesserungen gegenüber SNMPv1 und SNMPv2c
● Authentifizierung erfolgt über Benutzer-Account
● Übertragung kann mit pe...
21
Zugriffsbeschränkungen
● Zugriff von Usern oder Communities auf OIDs beschränken
# /etc/snmp/snmpd.conf
# ...
rwuser gb...
22
SNMPv3 VACM
● Zugriff von Usern oder Communities auf OIDs beschränken
# /etc/snmp/snmpd.conf
# ...
rwuser gbeine priv -...
23
Net-SNMP mit DTLS/TLS
24
Net-SNMP mit DTLS/TLS
● Net-SNMP beherrscht sowohl UDP als auch TCP
● Dank OpenSSL kann TLS und Datagram TLS (DTLS) ver...
25
Zertifikate erstellen
● Certificate Authority zum signieren von Zertifikaten
~$ net-snmp-cert genca -I -n ca.snmp.dev
C...
26
Konfiguration des Servers
● Fingerprint der Zertifikate auslesen
~$ net-snmp-cert showcerts --fingerprint
/etc/snmp/tls...
27
Konfiguration des Clients
● SNMPv3 über DTLS
~$ snmpget -v 3 --defSecurityModel=tsm -u gbeine -l authPriv 
-T our_ident...
28
SNMP-Zugriff von Java
29
Einfaches SNMP v1 Get
public class SimpleGet {
private static String hostName = "snmp.dev";
private static String port ...
30
Einfaches SNMP v1 Get
...
// Process Agent Response
if (response != null) {
PDU responsePDU = response.getResponse();
i...
31
SNMP v3 Get mit Authentifizierung und Verschlüsselung
public class V3Get {
private static String hostName = "snmp.dev";...
32
SNMP v3 Get mit Authentifizierung und Verschlüsselung
...
// Create TransportMapping
TransportMapping<UdpAddress>transp...
33
SNMP v3 Get mit Authentifizierung und Verschlüsselung
...
// Process Agent Response
if (response != null) {
PDU respons...
34
Literaturempfehlungen
● Net-SNMP:http://www.net-snmp.org/docs/
● SNMP4J:http://www.snmp4j.org/
● Evan McGinnis, David P...
35
Viel Spaß noch auf den
Chemnitzer Linux Tagen 2014!
Upcoming SlideShare
Loading in...5
×

SNMP Applied - Sicheres Monitoring mit SNMP

599

Published on

Der Vortrag gibt Unix-Nutzern einen Einblick, wie man Net-SNMP zum Monitoring und Steuern beliebiger Anwendungen nutzen kann.
Der Schwerpunkt liegt dabei auf dem Thema der Absicherung des SNMP-Dienstes mit Hilfe von SSL/TLS und Authentifizierung.
Als Beispiele dienen hierzu SNMP4J und Net-SNMP.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
599
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

SNMP Applied - Sicheres Monitoring mit SNMP

  1. 1. 1 SNMP Applied Sicheres Anwendungsmonitoring mit SNMP Gerrit Beine mail@gerritbeine.com
  2. 2. 2 Ziele des Vortrags ● Überblick zu SNMP liefern ● Grundlegende Anwendung von Net-SNMP erklären ● SNMPv3 mit Net-SNMP konfigurieren ● SNMPv3 von Java aus nutzen ● TLS/DTLS mit Net-SNMP konfigurieren
  3. 3. 3 Grundlegendes zu SNMP
  4. 4. 4 SNMP ● Simple Network Management Protocol ● Verwendet UDP, Ports 161 und 162 ● Historie ● Version 1 (1988) Ursprüngliche Spezifikation in RFC 1155-1157 ● Secure SNMP (1992) RFC1351-1353, nie offiziell eingeführt ● Party-based SNMP (1993,SNMPv2p) RFC 1441,1445-1447,führte getbulk ein, erhöhte Sicherheit, heute nicht mehr im Einsatz ● User-based SNMP (1996,SNMPv2u) RFC 1909-1910,heute nicht mehr im Einsatz ● Community-based SNMP (1996,SNMPv2c) RFC 1901,1905-1906, Erweiterung von Version 1 um Features aus SNMPv2p ● Version 3 (2002), RFC 3410-3418, Fokus auf Sicherheit
  5. 5. 5 Anwendungen von SNMP ● Kontinuierliches Monitoring (Polling) ● Uptime, Load ● Netzwerkverkehr ● Speicherverbrauch (RAM, Festplatten) ● Hardware-Zustand (S.M.A.R.T., Lüfterdrehzahl) ● Information über Ereignisse (SNMP-Traps) ● Fehlersituationen ● Zustandswechsel
  6. 6. 6 SNMP Begriffswelt ● Agent – SNMP-Daemon, der Informationen via UDP 161 bereitstellt oder Traps via UDP 162 versendet ● Manager – SNMP-Client, der Informationen via UDP 161 einsammelt ● Trap – SNMP-Nachricht, über UDP 162 versendet ● MIB – Management Information Base ● Dateien mit strukturiertem Text nach ASN.1 ● Beschreiben Monitoring-Objekte ● Übersetzen OIDs in Namen und interpretieren der entsprechenden Werte ● OID – Object Identifier ● Identifikatoren in durch ASN.1 definiertem Namensraum ● community – in SNMP Version 1 und SNMPv2c zur Anmeldung am Agent verwendet
  7. 7. 7 Der MIB-Baum root ccitt(0) joint-iso-ccitt(2)iso(1) org(3) dod(6) internet(1) directory(1) mgmt(2) experimental(3) private(4) mib-2(1) enterprises(1) Gerrit Beine GmbH(40207) host(25)system(1) snmp(11)interfaces(2) ip(4) Die Position im MIB- Tree liefert den OID eines Objektes. SNMP-Objekte der Gerrit Beine GmbH beginnen immer mit 1.3.6.1.4.1.40207.
  8. 8. 8 OID: Object Identifier ● OIDs sind eindeutige Identifikatoren innerhalb eines Agenten bzw. eine Gerätes ● OIDs navigieren durch SNMPs MIB-Baum ● Hersteller-spezifische OIDs immer unterhalb von 1.3.6.1.4.1 ● Mapping auf Domains ● 1.3.6.1.4.1.40207 – gerritbeinegmbh.enterprises.private.internet.dod.iso.org. ● Unterhalb der OID ist jeder Hersteller frei in seinen Definitionen ● Zuweisung der Enterprise-Identifkation erfolgt durch die IANA: http://www.iana.org/assignments/enterprise-numbers
  9. 9. 9 Net-SNMP
  10. 10. 10 Net-SNMP ● OpenSource SNMP Implementierung (CMU, BSD-Like) ● Läuft auf fast allen Unix- und Linux-Systemen ● Unterstützt SNMP Version 1, SNMPv2c, SNMPv3 via IPv4 und IPv6 ● Kommandozeilenapplikationen zu ● Abfrage von SNMP-Agents (snmpget, snmpwalk, …) ● Ändern von Konfigurationen via SNMP (snmpset) ● Übersetzen von OIDs (snmptranslate) ● Daemon zum Empfangen von SNMP Traps (snmptrapd) ● Daemon als SNMP Agent (snmpd) ● C- und Perl-APIs ● Zu finden hier: http://www.net-snmp.org/
  11. 11. 11 Net-SNMP snmpd konfigurieren ● Minimale Konfiguration definiert Standort, Kontakt und erlaubt Ausles # /etc/snmp/snmpd.conf syslocation Server Room syscontact Sysadmin (root@localhost) # listen on all interfaces agentAddress udp:161 # allow localhost read-only access via community public rocommunity public 127.0.0.1 # allow whole network read-only access via community public rocommunity public 192.168.79.0/24 ~$ snmpwalk -c public -v1 snmp.dev SNMPv2-MIB::sysDescr.0 = STRING: Linux linux-dwoa 3.1.10-1.16-default #1 SMP Wed Jun 27 05:21:40 UTC 2012 (d016078) x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (635449) 1:45:54.49 SNMPv2-MIB::sysContact.0 = STRING: Sysadmin (root@localhost) SNMPv2-MIB::sysName.0 = STRING: linux-dwoa SNMPv2-MIB::sysLocation.0 = STRING: Server Room ... ● Abfrage des snmpd erfolgt via snmpwalk
  12. 12. 12 Das Problem: Das ist alles total unsicher!
  13. 13. 13 Probleme von SNMPv1 und SNMPv2c ● Autorisierung erfolgt über die IP-Adresse ● Authentifizierung erfolgt über Community ● Einschränkungen der Community gelten jeweils pro IP-Adresse ● Übertragung erfolgt unverschlüsselt ● Standard-Protokoll UDP sicher Datenübertragung nicht ab
  14. 14. 14 Net-SNMP für SNMPv3 konfigurieren ● Benutzer anlegen ~$ /etc/init.d/snmpd stop ~$ net-snmp-config --create-snmpv3-user -a "secretpw" snmpUser ~$ /etc/init.d/snmpd start # /etc/snmp/snmpd.conf syslocation Server Room syscontact Sysadmin (root@localhost) # listen on all interfaces agentAddress udp:161 ● Minimale Konfiguration für SNMPv3 # /usr/share/snmp/snmpd.conf # Via `net-snmp-config` erzeugt rwuser snmpUser
  15. 15. 15 Net-SNMP für SNMPv3 konfigurieren ● Minimale Konfiguration für SNMPv3 # /var/lib/net-snmp/snmpd.conf (openSUSE) # /var/lib/snmp/snmpd.conf (Debian) ############################################################################ # STOP STOP STOP STOP STOP STOP STOP STOP STOP # # **** DO NOT EDIT THIS FILE **** # # STOP STOP STOP STOP STOP STOP STOP STOP STOP ############################################################################ ... ● Abfrage testen (unverschlüsselt und verschlüsselt) ~$ snmpget -v 3 -u snmpUser -l authNoPriv -a MD5 -A secretpw snmp.dev sysUpTime.0 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8805) 0:01:28.05 ~$ snmpget -v 3 -u snmpUser -l authPriv -a MD5 -A secretpw -x DES -X secretpw snmp.dev sysUpTime.0 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (9835) 0:01:38.35
  16. 16. 16 Benutzer hinzufügen ● Neue Benutzer benötigen einen Template-User ● Benutzer hinzufügen mit snmpusm ● Danach unbedingt das Passwort ändern ~$ snmpusm -v 3 -u snmpUser -l authNoPriv -a MD5 -A secretpw snmp.dev create gbeine snmpUser User successfully created. ~$ snmpget -v 3 -u gbeine -l authNoPriv -a MD5 -A secretpw snmp.dev sysUpTime.0 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (11303) 0:01:53.03 ~$ snmpusm -v 3 -u gbeine -l authPriv -a MD5 -A secretpw -x DES -X secretpw snmp.dev passwd secretpw strenggeheim SNMPv3 Key(s) successfully changed. ~$ snmpget -v 3 -u gbeine -l authNoPriv -a MD5 -A strenggeheim snmp.dev sysUpTime.0 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (5871) 0:00:58.71 ● Achtung: Neue Benutzer und Passworänderungen sind zwar verfügbar aber noch nicht persistiert!
  17. 17. 17 Benutzer hinzufügen ● Benutzer in Konfiguration eintragen und SNMP neu starten # /etc/snmp/snmpd.conf syslocation Server Room syscontact Sysadmin (root@localhost) # listen on all interfaces agentAddress udp:161 # new user rwuser gbeine ● Nach Neustart # /var/lib/net-snmp/snmpd.conf (openSUSE) # /var/lib/snmp/snmpd.conf (Debian) # ... usmUser 1 3 0x80001f88804162a72b6c8c205300000000 "gbeine" "gbeine" NULL .1.3.6.1.6.3.10.1.1.2 0x0a32bdbfcc9830326f7a6353a4fef86e .1.3.6.1.6.3.10.1.2.2 0x0a32bdb http://www.net-snmp.org/docs/man/snmpd.conf.html: „It is recommended you use the net-snmp-config command to do this“
  18. 18. 18 Luxus auf Client-Seite ● Client Konfiguration für snmpget, snmpwalk, snmpset, ... # ~/.snmp/snmp.conf defSecurityName gbeine defSecurityLevel authPriv defAuthType MD5 defAuthPassphrase strenggeheim defPrivType DES defPrivPassphrase strenggeheim defVersion 3 ● Schon deutlich einfacher: ~$ snmpget snmp.dev sysUpTime.0 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (5871) 0:00:58.71
  19. 19. 19 Sicherheit erhöhen ● Verschlüsselung auf Seite des Servers erzwingen: # /etc/snmp/snmpd.conf # ... rwuser gbeine priv ● Danach ist-l authNoPriv nicht mehr möglich ● Passwort durch Diffie-Hellman-Keys ersetzen: ~$ snmpusm snmp.dev changekey gbeine new auth key: 0x0404e48a606a7dc5ce0fe23d83257f91 new priv key: 0x092d15bea5298a286911692b28a9fc64 SNMPv3 Key(s) successfully changed. ● Client Konfiguration anpassen: # ~/.snmp/snmp.conf defSecurityName gbeine defSecurityLevel authPriv defVersion 3 defAuthLocalizedKey 0x0404e48a606a7dc5ce0fe23d83257f91 defPrivLocalizedKey 0x092d15bea5298a286911692b28a9fc64
  20. 20. 20 Verbesserungen gegenüber SNMPv1 und SNMPv2c ● Authentifizierung erfolgt über Benutzer-Account ● Übertragung kann mit persönlichen Credentials verschlüsselt werden ● Verschlüsselung durch Server erzwungen ● Credentials durch sichere Diffie-Hellman-Keys ausgetauscht ● Beschränkung der Benutzer auf Teilbäume des MIB-Tree ● Festlegung von Lese-/Schreibrechten auf OID-Ebene
  21. 21. 21 Zugriffsbeschränkungen ● Zugriff von Usern oder Communities auf OIDs beschränken # /etc/snmp/snmpd.conf # ... rwuser gbeine priv .1.3.6.1.2.1.1 # alternativ etwas besser lesbar # rwuser gbeine priv system ● Lese-/Schreibzugriff pro Benutzer festgelegt ● Zugriff für jeden Benutzer auf Subtree der OID eingeschränkt ● Lösung dazu ist VACM (SNMPv3 View Based Access Control)
  22. 22. 22 SNMPv3 VACM ● Zugriff von Usern oder Communities auf OIDs beschränken # /etc/snmp/snmpd.conf # ... rwuser gbeine priv -V basic view basic included system view basic included interfaces ● View können OID-Subtree ein- und ausschließen ● Mehrere Einträge mit gleichem Namen werden zusammengefasst ● Weitere Einschränkungen möglich mit com2sec, group, access
  23. 23. 23 Net-SNMP mit DTLS/TLS
  24. 24. 24 Net-SNMP mit DTLS/TLS ● Net-SNMP beherrscht sowohl UDP als auch TCP ● Dank OpenSSL kann TLS und Datagram TLS (DTLS) verwendet werden ● Net-SNMP bringt eigene Tools zur Verwaltung von Zertifikaten mit ● Verfügbar ab Net-SNMP 5.6 ● Debian liefert Net-SNMP 5.4 (zu alt) ● openSUSE liefert Net-SNMP 5.7, leider ohne DTLS/TLS Support ● Rebuild notwendig mit folgenden Optionen: ~$ ./configure .. --with-security-modules=tsm --with-transports=TLSTCP,DTLSUDP
  25. 25. 25 Zertifikate erstellen ● Certificate Authority zum signieren von Zertifikaten ~$ net-snmp-cert genca -I -n ca.snmp.dev CA Generated: ca-certs/ca.snmp.dev.crt private/ca.snmp.dev.key ● Server-Zertifikat erstellen (wichtig ist -t snmpd) ~$ net-snmp-cert gencsr -I -t snmpd -n snmp.dev Certificate Signing Request Generated: newcerts/snmpd.csr private/snmpd.key ● Client-Zertifikat erstellen (wichtig ist -n gbeine) ~$ net-snmp-cert gencsr -I -t manager -n gbeine Certificate Signing Request Generated: newcerts/manager.csr private/manager.key ● Zertifikate signieren ~$ net-snmp-cert signcsr -I --with-ca ca.snmp.dev --csr manager Signed Certificate Signing Request: newcerts/manager.csr ... ~$ net-snmp-cert signcsr -I --with-ca ca.snmp.dev --csr snmpd Signed Certificate Signing Request: newcerts/snmpd.csr ...
  26. 26. 26 Konfiguration des Servers ● Fingerprint der Zertifikate auslesen ~$ net-snmp-cert showcerts --fingerprint /etc/snmp/tls: certs/manager.crt: SHA1 Fingerprint=50:43:06:3E:5A:94:2C:51:3D:8B:32:81:68:B4:D3:BB:97:B2:9C:C4 certs/snmpd.crt: SHA1 Fingerprint=78:11:C4:BE:D2:79:D6:00:4C:E0:0E:BC:0A:95:3B:92:1E:D3:26:41 ● Konfiguration anpassen: # /etc/snmp/snmpd.conf syslocation Server Room syscontact Sysadmin (root@localhost) # listen on all interfaces agentAddress udp:161, dtlsudp:10161 # new user rwuser gbeine # certificate for user gbeine certSecName 10 50:43:06:3E:5A:94:2C:51:3D:8B:32:81:68:B4:D3:BB:97:B2:9C:C4 --cn
  27. 27. 27 Konfiguration des Clients ● SNMPv3 über DTLS ~$ snmpget -v 3 --defSecurityModel=tsm -u gbeine -l authPriv -T our_identity=50:43:06:3E:5A:94:2C:51:3D:8B:32:81:68:B4:D3:BB:97:B2:9C:C4 -T their_identity=78:11:C4:BE:D2:79:D6:00:4C:E0:0E:BC:0A:95:3B:92:1E:D3:26:41 dtlsudp:localhost:10161 sysUpTime.0 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (120) 0:00:01.20 ● Client Konfiguration anpassen: # ~/.snmp/snmp.conf defSecurityLevel authPriv defVersion 3 defSecurityModel tsm localCert 50:43:06:3E:5A:94:2C:51:3D:8B:32:81:68:B4:D3:BB:97:B2:9C:C4 peerCert 78:11:C4:BE:D2:79:D6:00:4C:E0:0E:BC:0A:95:3B:92:1E:D3:26:41 ● SNMPv3 über DTLS ~$ snmpget dtlsudp:localhost:10161 sysUpTime.0 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (120) 0:00:01.20
  28. 28. 28 SNMP-Zugriff von Java
  29. 29. 29 Einfaches SNMP v1 Get public class SimpleGet { private static String hostName = "snmp.dev"; private static String port = "161"; // OID via snmptranslate -On -IR sysUpTime.0 private static String oid = ".1.3.6.1.2.1.1.3.0"; private static int snmpVersion = SnmpConstants.version1; private static String community = "public"; public static void main(String[] args) throws Exception { // Create Target Address object CommunityTarget target = new CommunityTarget(); target.setAddress(new UdpAddress(hostName + "/" + port)); target.setVersion(snmpVersion); target.setCommunity(new OctetString(community)); // Create the PDU object PDU pdu = new PDU(); pdu.add(new VariableBinding(new OID(oid))); pdu.setType(PDU.GET); // Create TransportMapping and send SNMP get TransportMapping<UdpAddress>transport = new DefaultUdpTransportMapping(); transport.listen(); Snmp snmp = new Snmp(transport); ResponseEvent response = snmp.get(pdu, target); snmp.close(); ...
  30. 30. 30 Einfaches SNMP v1 Get ... // Process Agent Response if (response != null) { PDU responsePDU = response.getResponse(); if (responsePDU != null) { int errorStatus = responsePDU.getErrorStatus(); int errorIndex = responsePDU.getErrorIndex(); final String errorStatusText = responsePDU.getErrorStatusText(); if (errorStatus == PDU.noError) { System.out.println("Snmp Get Response = " + responsePDU.getVariableBindings()); } else { System.out.println("Error: Request Failed"); System.out.println("Error Status = " + errorStatus); System.out.println("Error Index = " + errorIndex); System.out.println("Error Status Text = " + errorStatusText); } } else { System.out.println("Error: Response PDU is null"); } } else { System.out.println("Error: Agent Timeout... "); } } }
  31. 31. 31 SNMP v3 Get mit Authentifizierung und Verschlüsselung public class V3Get { private static String hostName = "snmp.dev"; private static String port = "161"; private static int snmpVersion = SnmpConstants.version3; private static int securityLevel = SecurityLevel.AUTH_PRIV; private static OID securityAuth = AuthMD5.ID; private static OID securityPriv = PrivDES.ID; private static String username = "gbeine"; private static String password = "strenggeheim"; // OID via snmptranslate -On -IR sysUpTime.0 private static String oid = ".1.3.6.1.2.1.1.3.0"; public static void main(String[] args) throws Exception { final OctetString secUserName = new OctetString(username); final OctetString secPassword = new OctetString(password); // Create Target Address object UserTarget target = new UserTarget(); target.setAddress(new UdpAddress(hostName + "/" + port)); target.setVersion(snmpVersion); target.setSecurityLevel(securityLevel); target.setSecurityName(secUserName); // Create the PDU object ScopedPDU pdu = new ScopedPDU(); pdu.add(new VariableBinding(new OID(oid))); pdu.setType(PDU.GET); ...
  32. 32. 32 SNMP v3 Get mit Authentifizierung und Verschlüsselung ... // Create TransportMapping TransportMapping<UdpAddress>transport = new DefaultUdpTransportMapping(); transport.listen(); Snmp snmp = new Snmp(transport); // Initialize security model USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3.createLocalEngineID()), 0); SecurityModels.getInstance().addSecurityModel(usm); // User authentication data (priv is forced) UsmUser user = new UsmUser(secUserName, securityAuth, secPassword, securityPriv, secPassword); snmp.getUSM().addUser(secUserName, user); // Send SNMP get ResponseEvent response = snmp.get(pdu, target); snmp.close(); ...
  33. 33. 33 SNMP v3 Get mit Authentifizierung und Verschlüsselung ... // Process Agent Response if (response != null) { PDU responsePDU = response.getResponse(); if (responsePDU != null) { int errorStatus = responsePDU.getErrorStatus(); int errorIndex = responsePDU.getErrorIndex(); final String errorStatusText = responsePDU.getErrorStatusText(); if (errorStatus == PDU.noError) { System.out.println("Snmp Get Response = " + responsePDU.getVariableBindings()); } else { System.out.println("Error: Request Failed"); System.out.println("Error Status = " + errorStatus); System.out.println("Error Index = " + errorIndex); System.out.println("Error Status Text = " + errorStatusText); } } else { System.out.println("Error: Response PDU is null"); } } else { System.out.println("Error: Agent Timeout... "); } } }
  34. 34. 34 Literaturempfehlungen ● Net-SNMP:http://www.net-snmp.org/docs/ ● SNMP4J:http://www.snmp4j.org/ ● Evan McGinnis, David Perkins: Understanding SNMP Mibs http://www.amazon.de/Understanding-SNMP-Mibs-Evan-McGinnis/dp 0134377087/ ● Douglas R. Mauro, Kevin J. Schmidt: Essential SNMP http://www.amazon.de/Essential-SNMP-System-Network-Administrat s/dp/0596008406/
  35. 35. 35 Viel Spaß noch auf den Chemnitzer Linux Tagen 2014!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×