SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
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 konfigurieren
● SNMPv3 von Java aus nutzen
● TLS/DTLS mit Net-SNMP konfigurieren
3
Grundlegendes zu SNMP
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
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
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
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
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
Net-SNMP
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
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
Das Problem:
Das ist alles total unsicher!
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
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
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
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
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
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
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
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
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
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
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) 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
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
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
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
SNMP-Zugriff von Java
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
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
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
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
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
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
Viel Spaß noch auf den
Chemnitzer Linux Tagen 2014!

Weitere ähnliche Inhalte

Was ist angesagt?

Sicheres Netzwerkmanagement - Industrieller Cyber Security
Sicheres Netzwerkmanagement - Industrieller Cyber SecuritySicheres Netzwerkmanagement - Industrieller Cyber Security
Sicheres Netzwerkmanagement - Industrieller Cyber SecurityWestermo Network Technologies
 
450MHz LTE als der neue Standard für Mobilfunk und kritische Infrastruktur
450MHz LTE als der neue Standard für Mobilfunk und kritische Infrastruktur450MHz LTE als der neue Standard für Mobilfunk und kritische Infrastruktur
450MHz LTE als der neue Standard für Mobilfunk und kritische InfrastrukturWestermo Network Technologies
 
Open-Source-Monitoring von Netzwerkkomponenten mit check_nwc_health
Open-Source-Monitoring von Netzwerkkomponenten mit check_nwc_healthOpen-Source-Monitoring von Netzwerkkomponenten mit check_nwc_health
Open-Source-Monitoring von Netzwerkkomponenten mit check_nwc_healthGerhard Lausser
 
BetterCrypto: Applied Crypto Hardening
BetterCrypto: Applied Crypto HardeningBetterCrypto: Applied Crypto Hardening
BetterCrypto: Applied Crypto HardeningAaron Zauner
 
Introduction to the command line
Introduction to the command lineIntroduction to the command line
Introduction to the command linesteffenbauer
 
Sicheres Root-Server Hosting mit Linux
Sicheres Root-Server Hosting mit LinuxSicheres Root-Server Hosting mit Linux
Sicheres Root-Server Hosting mit Linuxmarkusmarkert
 
OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...
OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...
OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...NETWAYS
 
Domain name system security extension
Domain name system security extensionDomain name system security extension
Domain name system security extensionF789GH
 
Monitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthMonitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthGerhard Lausser
 
Linux slides fort_2013_upload
Linux slides fort_2013_uploadLinux slides fort_2013_upload
Linux slides fort_2013_uploadRosa Freund
 
High Security PHP Applications
High Security PHP ApplicationsHigh Security PHP Applications
High Security PHP Applicationsguest0e6d5e
 
Software Defined Freifunk Backbones
Software Defined Freifunk BackbonesSoftware Defined Freifunk Backbones
Software Defined Freifunk BackbonesMaximilian Wilhelm
 
Salt-Orchtestrated Software Defined (Freifunk) Networks - Service-Provider-Ne...
Salt-Orchtestrated Software Defined (Freifunk) Networks - Service-Provider-Ne...Salt-Orchtestrated Software Defined (Freifunk) Networks - Service-Provider-Ne...
Salt-Orchtestrated Software Defined (Freifunk) Networks - Service-Provider-Ne...Maximilian Wilhelm
 

Was ist angesagt? (17)

Neuigkeiten von Westermos MRD Mobilfunkroutern
Neuigkeiten von Westermos MRD MobilfunkrouternNeuigkeiten von Westermos MRD Mobilfunkroutern
Neuigkeiten von Westermos MRD Mobilfunkroutern
 
Sicheres Netzwerkmanagement - Industrieller Cyber Security
Sicheres Netzwerkmanagement - Industrieller Cyber SecuritySicheres Netzwerkmanagement - Industrieller Cyber Security
Sicheres Netzwerkmanagement - Industrieller Cyber Security
 
450MHz LTE als der neue Standard für Mobilfunk und kritische Infrastruktur
450MHz LTE als der neue Standard für Mobilfunk und kritische Infrastruktur450MHz LTE als der neue Standard für Mobilfunk und kritische Infrastruktur
450MHz LTE als der neue Standard für Mobilfunk und kritische Infrastruktur
 
cirosec TrendTage März 2015 - Das SSL Dilemma
cirosec TrendTage März 2015 - Das SSL Dilemmacirosec TrendTage März 2015 - Das SSL Dilemma
cirosec TrendTage März 2015 - Das SSL Dilemma
 
Open-Source-Monitoring von Netzwerkkomponenten mit check_nwc_health
Open-Source-Monitoring von Netzwerkkomponenten mit check_nwc_healthOpen-Source-Monitoring von Netzwerkkomponenten mit check_nwc_health
Open-Source-Monitoring von Netzwerkkomponenten mit check_nwc_health
 
BetterCrypto: Applied Crypto Hardening
BetterCrypto: Applied Crypto HardeningBetterCrypto: Applied Crypto Hardening
BetterCrypto: Applied Crypto Hardening
 
Introduction to the command line
Introduction to the command lineIntroduction to the command line
Introduction to the command line
 
Sicheres Root-Server Hosting mit Linux
Sicheres Root-Server Hosting mit LinuxSicheres Root-Server Hosting mit Linux
Sicheres Root-Server Hosting mit Linux
 
OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...
OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...
OSMC 2009 | Entwicklung von Nagios-Plugins mit Net::SNMP und Nagios::Plugin b...
 
check_sap_health
check_sap_healthcheck_sap_health
check_sap_health
 
Domain name system security extension
Domain name system security extensionDomain name system security extension
Domain name system security extension
 
Monitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthMonitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_health
 
Linux slides fort_2013_upload
Linux slides fort_2013_uploadLinux slides fort_2013_upload
Linux slides fort_2013_upload
 
High Security PHP Applications
High Security PHP ApplicationsHigh Security PHP Applications
High Security PHP Applications
 
Software Defined Freifunk Backbones
Software Defined Freifunk BackbonesSoftware Defined Freifunk Backbones
Software Defined Freifunk Backbones
 
Salt-Orchtestrated Software Defined (Freifunk) Networks - Service-Provider-Ne...
Salt-Orchtestrated Software Defined (Freifunk) Networks - Service-Provider-Ne...Salt-Orchtestrated Software Defined (Freifunk) Networks - Service-Provider-Ne...
Salt-Orchtestrated Software Defined (Freifunk) Networks - Service-Provider-Ne...
 
Grundlagen nmap
Grundlagen nmapGrundlagen nmap
Grundlagen nmap
 

Ähnlich wie SNMP Applied - Sicheres Monitoring mit SNMP

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPadesso AG
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)adesso AG
 
Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015Gunther Pippèrr
 
Tk roadschow-ipmi-pdeneu
Tk roadschow-ipmi-pdeneuTk roadschow-ipmi-pdeneu
Tk roadschow-ipmi-pdeneuWerner Fischer
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als CodeJan Gehring
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...NETWAYS
 
OSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas Gelf
OSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas GelfOSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas Gelf
OSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas GelfNETWAYS
 
Software Defined Freifunk Backbones
Software Defined Freifunk BackbonesSoftware Defined Freifunk Backbones
Software Defined Freifunk BackbonesMaximilan Wilhelm
 
OSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus Thiel
OSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus ThielOSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus Thiel
OSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus ThielNETWAYS
 
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael StrebNagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael StrebNETWAYS
 
Nagios Conference 2006 | SAP Monitoring II - Die technische Umsetzung by Wolf...
Nagios Conference 2006 | SAP Monitoring II - Die technische Umsetzung by Wolf...Nagios Conference 2006 | SAP Monitoring II - Die technische Umsetzung by Wolf...
Nagios Conference 2006 | SAP Monitoring II - Die technische Umsetzung by Wolf...NETWAYS
 
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...Klaus Bild
 
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrOracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrGunther Pippèrr
 
OSMC 2011 - Introduction to OpenNMS
OSMC 2011 - Introduction to OpenNMSOSMC 2011 - Introduction to OpenNMS
OSMC 2011 - Introduction to OpenNMSRonny Trommer
 
Private Cloud mit Ceph und OpenStack
Private Cloud mit Ceph und OpenStackPrivate Cloud mit Ceph und OpenStack
Private Cloud mit Ceph und OpenStackDaniel Schneller
 

Ähnlich wie SNMP Applied - Sicheres Monitoring mit SNMP (20)

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
 
Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015
 
Tk roadschow-ipmi-pdeneu
Tk roadschow-ipmi-pdeneuTk roadschow-ipmi-pdeneu
Tk roadschow-ipmi-pdeneu
 
E Security
E SecurityE Security
E Security
 
Rex - Infrastruktur als Code
Rex - Infrastruktur als CodeRex - Infrastruktur als Code
Rex - Infrastruktur als Code
 
SNMP - Eine kurze Einführung
SNMP - Eine kurze Einführung SNMP - Eine kurze Einführung
SNMP - Eine kurze Einführung
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
 
Netzwerkmonitoring.pdf
Netzwerkmonitoring.pdfNetzwerkmonitoring.pdf
Netzwerkmonitoring.pdf
 
OSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas Gelf
OSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas GelfOSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas Gelf
OSMC 2011 | Monitoring at large - die Welt ist nicht genug by Thomas Gelf
 
Software Defined Freifunk Backbones
Software Defined Freifunk BackbonesSoftware Defined Freifunk Backbones
Software Defined Freifunk Backbones
 
OSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus Thiel
OSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus ThielOSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus Thiel
OSMC 2008 | Monitoring von Messaging Systemen mit Nagios by Markus Thiel
 
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael StrebNagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
Nagios Conference 2007 | Eventverarbeitung mit Nagios by Michael Streb
 
Nagios Conference 2006 | SAP Monitoring II - Die technische Umsetzung by Wolf...
Nagios Conference 2006 | SAP Monitoring II - Die technische Umsetzung by Wolf...Nagios Conference 2006 | SAP Monitoring II - Die technische Umsetzung by Wolf...
Nagios Conference 2006 | SAP Monitoring II - Die technische Umsetzung by Wolf...
 
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
The Best Things in Life Are Free – Wie Sie Ihre IBM ConnecEons Umgebung koste...
 
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrOracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
 
Switchkonfiguration
SwitchkonfigurationSwitchkonfiguration
Switchkonfiguration
 
Portscanning 2012
Portscanning 2012Portscanning 2012
Portscanning 2012
 
OSMC 2011 - Introduction to OpenNMS
OSMC 2011 - Introduction to OpenNMSOSMC 2011 - Introduction to OpenNMS
OSMC 2011 - Introduction to OpenNMS
 
Private Cloud mit Ceph und OpenStack
Private Cloud mit Ceph und OpenStackPrivate Cloud mit Ceph und OpenStack
Private Cloud mit Ceph und OpenStack
 

Mehr von Gerrit Beine

Auf Lesereise mit Frit und Fred
Auf Lesereise mit Frit und FredAuf Lesereise mit Frit und Fred
Auf Lesereise mit Frit und FredGerrit Beine
 
Mastering Cargo Cult
Mastering Cargo CultMastering Cargo Cult
Mastering Cargo CultGerrit Beine
 
Conway’s Law & Soziologie in der Software-Architektur
Conway’s Law & Soziologie in der Software-ArchitekturConway’s Law & Soziologie in der Software-Architektur
Conway’s Law & Soziologie in der Software-ArchitekturGerrit Beine
 
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wirdBeyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wirdGerrit Beine
 
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias CurveMastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias CurveGerrit Beine
 
Gut genug - Rahmenbedingungen für agile Architekturen
Gut genug - Rahmenbedingungen für agile ArchitekturenGut genug - Rahmenbedingungen für agile Architekturen
Gut genug - Rahmenbedingungen für agile ArchitekturenGerrit Beine
 
Beyond Agile – Ungewissheit mit der Real Option Theory meistern
Beyond Agile – Ungewissheit mit der Real Option Theory meisternBeyond Agile – Ungewissheit mit der Real Option Theory meistern
Beyond Agile – Ungewissheit mit der Real Option Theory meisternGerrit Beine
 
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...Gerrit Beine
 
Backlog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
Backlog Priorisierung mit Cost of Delay & Monte Carlo SimulationenBacklog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
Backlog Priorisierung mit Cost of Delay & Monte Carlo SimulationenGerrit Beine
 
Der hyperbolische Thread-Koeffizient
Der hyperbolische Thread-KoeffizientDer hyperbolische Thread-Koeffizient
Der hyperbolische Thread-KoeffizientGerrit Beine
 
Vom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerVom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerGerrit Beine
 
Die Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
Die Testedimaryp - Über die Antimonie des agilen Testens in der PraxisDie Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
Die Testedimaryp - Über die Antimonie des agilen Testens in der PraxisGerrit Beine
 
Vom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerVom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerGerrit Beine
 
Technische Schulden - mit Notizen
Technische Schulden - mit NotizenTechnische Schulden - mit Notizen
Technische Schulden - mit NotizenGerrit Beine
 
Technische Schulden
Technische SchuldenTechnische Schulden
Technische SchuldenGerrit Beine
 
Die Product Owner Toolbox
Die Product Owner ToolboxDie Product Owner Toolbox
Die Product Owner ToolboxGerrit Beine
 
Agile Coach zu werden ist nicht schwer... - mit Notizen
Agile Coach zu werden ist nicht schwer... - mit NotizenAgile Coach zu werden ist nicht schwer... - mit Notizen
Agile Coach zu werden ist nicht schwer... - mit NotizenGerrit Beine
 
Agile Coach zu werden ist nicht schwer...
Agile Coach zu werden ist nicht schwer...Agile Coach zu werden ist nicht schwer...
Agile Coach zu werden ist nicht schwer...Gerrit Beine
 

Mehr von Gerrit Beine (20)

Auf Lesereise mit Frit und Fred
Auf Lesereise mit Frit und FredAuf Lesereise mit Frit und Fred
Auf Lesereise mit Frit und Fred
 
Mastering Cargo Cult
Mastering Cargo CultMastering Cargo Cult
Mastering Cargo Cult
 
Conway’s Law & Soziologie in der Software-Architektur
Conway’s Law & Soziologie in der Software-ArchitekturConway’s Law & Soziologie in der Software-Architektur
Conway’s Law & Soziologie in der Software-Architektur
 
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wirdBeyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
Beyond User Stories - Backlogs priorisieren, wenn es anspruchsvoll wird
 
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias CurveMastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
Mastering Cargo Cult - Dunning, Kruger & die Agile Bias Curve
 
Gut genug - Rahmenbedingungen für agile Architekturen
Gut genug - Rahmenbedingungen für agile ArchitekturenGut genug - Rahmenbedingungen für agile Architekturen
Gut genug - Rahmenbedingungen für agile Architekturen
 
Beyond Agile – Ungewissheit mit der Real Option Theory meistern
Beyond Agile – Ungewissheit mit der Real Option Theory meisternBeyond Agile – Ungewissheit mit der Real Option Theory meistern
Beyond Agile – Ungewissheit mit der Real Option Theory meistern
 
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
Backlog Priorisierung 2020: Wertmodelle & Simulationen von Intangibles zur Pr...
 
Backlog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
Backlog Priorisierung mit Cost of Delay & Monte Carlo SimulationenBacklog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
Backlog Priorisierung mit Cost of Delay & Monte Carlo Simulationen
 
Der hyperbolische Thread-Koeffizient
Der hyperbolische Thread-KoeffizientDer hyperbolische Thread-Koeffizient
Der hyperbolische Thread-Koeffizient
 
Broken by Design
Broken by DesignBroken by Design
Broken by Design
 
Vom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerVom Projektleiter zum Product Owner
Vom Projektleiter zum Product Owner
 
Die Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
Die Testedimaryp - Über die Antimonie des agilen Testens in der PraxisDie Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
Die Testedimaryp - Über die Antimonie des agilen Testens in der Praxis
 
Vom Projektleiter zum Product Owner
Vom Projektleiter zum Product OwnerVom Projektleiter zum Product Owner
Vom Projektleiter zum Product Owner
 
Antifragilität
AntifragilitätAntifragilität
Antifragilität
 
Technische Schulden - mit Notizen
Technische Schulden - mit NotizenTechnische Schulden - mit Notizen
Technische Schulden - mit Notizen
 
Technische Schulden
Technische SchuldenTechnische Schulden
Technische Schulden
 
Die Product Owner Toolbox
Die Product Owner ToolboxDie Product Owner Toolbox
Die Product Owner Toolbox
 
Agile Coach zu werden ist nicht schwer... - mit Notizen
Agile Coach zu werden ist nicht schwer... - mit NotizenAgile Coach zu werden ist nicht schwer... - mit Notizen
Agile Coach zu werden ist nicht schwer... - mit Notizen
 
Agile Coach zu werden ist nicht schwer...
Agile Coach zu werden ist nicht schwer...Agile Coach zu werden ist nicht schwer...
Agile Coach zu werden ist nicht schwer...
 

SNMP Applied - Sicheres Monitoring mit SNMP

  • 1. 1 SNMP Applied Sicheres Anwendungsmonitoring mit SNMP Gerrit Beine mail@gerritbeine.com
  • 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
  • 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 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 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 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 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
  • 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 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 Das Problem: Das ist alles total unsicher!
  • 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 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 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 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 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 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 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 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 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 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
  • 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 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 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 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
  • 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 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 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 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 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 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 Viel Spaß noch auf den Chemnitzer Linux Tagen 2014!