2. 19.05.2016 2
Zentrum für
Informations- und
Medientechnologie
Allgemeines:
● 1988 wurde der SNMPv1 Standard in der RFC1065 definiert
● 1993 SNMPv2 führte Kommunikation zwischen Managern und
den Getbulk-Befehl ein
● 2002 wurde mit SNMPv3 vermehrt Wert auf Sicherheit gelegt. Ist
aber wegen erhöhter Komplexität nicht so weit verbreitet
● Im Uni-Netz wurde bisher hauptsächlich mithilfe von SNMPv2c
gearbeitet.
3. 19.05.2016 3
Zentrum für
Informations- und
Medientechnologie
alexander.kiontke@uni-siegen.de
Protokolle und Sicherheit
● SNMP kommuniziert (üblicherweise) mittels UDP, ist also anfällig für
Paketverluste
● In SNMPv1 und SNMPv2c werden die Community-Strings (=Passwörter)
in Klartext gesendet.
● Daher SNMPv2 nur im 800er Vlan.
● SNMPv3 hat Challenge – Response Handshake mit Keys. (Das Protokoll
nennt sich USM).
4. 19.05.2016 4
Zentrum für
Informations- und
Medientechnologie
alexander.kiontke@uni-siegen.de
Funktionsweise
● GET: Zum Anfordern eines Datensatzes
● GETNEXT: Um den nachfolgenden Datensatz aufzurufen
● GETBULK: Um mehrere Datensätze auf einmal aufzurufen
● SET: Um einen oder mehrere Werte zu verändern
● RESPONSE: Antwort auf eines der Vorangegangenen Pakete
● TRAP: Unaufgeforderte Nachricht eines Agenten. (Listener-
Pattern)
5. 19.05.2016 5
Zentrum für
Informations- und
Medientechnologie
alexander.kiontke@uni-siegen.de
SNMP-Walk
● Zwei Pakete pro Wert
● Bei Paketverlust unvollständige Daten
6. 19.05.2016 6
Zentrum für
Informations- und
Medientechnologie
alexander.kiontke@uni-siegen.de
In der Command Line:
➜ ~ snmpwalk v2c On cmngt_RO enccore 1.3.6.1.2.1.2.2.1.2
.1.3.6.1.2.1.2.2.1.2.1 = STRING: "GigabitEthernet5/1"
.1.3.6.1.2.1.2.2.1.2.2 = STRING: "GigabitEthernet5/2"
.1.3.6.1.2.1.2.2.1.2.67 = STRING: "Vlan1"
.1.3.6.1.2.1.2.2.1.2.68 = STRING: "EOBC0/0"
.1.3.6.1.2.1.2.2.1.2.69 = STRING: "Null0"
.1.3.6.1.2.1.2.2.1.2.70 = STRING: "unrouted VLAN 1"
.1.3.6.1.2.1.2.2.1.2.71 = STRING: "unrouted VLAN 1002"
.1.3.6.1.2.1.2.2.1.2.72 = STRING: "unrouted VLAN 1004"
.1.3.6.1.2.1.2.2.1.2.73 = STRING: "unrouted VLAN 1005"
.1.3.6.1.2.1.2.2.1.2.74 = STRING: "unrouted VLAN 1003"
.1.3.6.1.2.1.2.2.1.2.79 = STRING: "SPAN RP Interface"
Output OptionsSNMP Version Community String Hostname / IP OID / MIB object Name
7. 19.05.2016 7
Zentrum für
Informations- und
Medientechnologie
alexander.kiontke@uni-siegen.de
snmpget v2c On cmngt_RO enccore 1.3.6.1.2.1.2.2.1.2.997
.1.3.6.1.2.1.2.2.1.2.997 = STRING: "NDE_vlan1029"
Hier wäre besser ein GET Request:
snmpget v2c On cmngt_RO enccore 1.3.6.1.2.1.2.2.1.2.997
.1.3.6.1.2.1.2.2.1.2.997 = STRING: "NDE_vlan1029"
8. 19.05.2016 8
Zentrum für
Informations- und
Medientechnologie
alexander.kiontke@uni-siegen.de
MIBs und OIDs
Baumförmige Struktur aus Mibs und OIDs
.iso.org.dod.internet.mgmt.mib2.interfaces.ifTable.ifEntry.ifDescr.1
= STRING: GigabitEthernet5/1
entspricht
.1.3.6.1.2.1.2.2.1.2.1 = STRING: GigabitEthernet5/1
.iso(1).org(3).dod(6).internet(1).mgmt(2).mib
2(1).interfaces(2).ifEntry(1)
10. 19.05.2016 10
Zentrum für
Informations- und
Medientechnologie
alexander.kiontke@uni-siegen.de
Und das selbe ohne MIBs
.1.3.6.1.2.1.1.1.0 = STRING: Cisco IOS Software, s72033_rp Software
(s72033_rpADVIPSERVICESK9M), Version 15.1(2)SY2, RELEASE SOFTWARE
(fc3)
(...)
.1.3.6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.9.1.283
.1.3.6.1.2.1.1.3.0 = Timeticks: (1736315616) 200 days, 23:05:56.16
.1.3.6.1.2.1.1.4.0 = STRING: CheckThisForSnmpset
.1.3.6.1.2.1.1.5.0 = STRING: ENCCore.sienet.unisiegen.de
.1.3.6.1.2.1.1.6.0 = STRING:
.1.3.6.1.2.1.1.7.0 = INTEGER: 78
.1.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00
.1.3.6.1.2.1.2.1.0 = INTEGER: 233
.1.3.6.1.2.1.2.2.1.1.1 = INTEGER: 1
11. 19.05.2016 11
Zentrum für
Informations- und
Medientechnologie
alexander.kiontke@uni-siegen.de
MIBs
Pros:
● Einfach einzurichten
● Lesbarer
Cons:
● Häufige Fehler
● Teilweise manuelles Nachladen
notwendig
● Erfordert das Vorhandensein
der jeweiligen MIBs auf allen
Clients
● Wenig praktischer Mehrwert,
sofern man seinen Code
kommentiert
● Krebserregend
aptget install snmpmibsdownloader
auskommentieren der Zeile 'mibs:'
in /etc/snmp/snmp.conf
14. 19.05.2016 14
Zentrum für
Informations- und
Medientechnologie
alexander.kiontke@uni-siegen.de
Nützliche OIDs
● InterfaceVlan:
1.3.6.1.4.1.9.9.68.1.2.2.1.2
● VtpVlanTable:
1.3.6.1.4.1.9.9.46.1.3.1.1
– vtpVlanIndex (1)
– vtpVlanState (2)
– vtpVlanType (3)
– vtpVlanName (4)
(...)
– vtpVlanIfIndex (18)
● Vlan Arptable:
1.3.6.1.2.1.17.4.3.1.1
(mit community string indexing,
also
cmngt_RO@vlan_number
15. 19.05.2016 15
Zentrum für
Informations- und
Medientechnologie
alexander.kiontke@uni-siegen.de
Python und SNMP
Net-SNMP Bindings
– Unhandlich
– Unpythonisch
– Aber leider das schnellste
PySnmp
– Sehr langsam (ca. Faktor 4)
– Immer noch unhandlich
Snmpy
– Basiert auf PySnmp, daher
immer noch sehr langsam
– Ist aber recht schön
EasySnmp
– Fork von Net-SNMP
– Pythonischeres Interface
– Ähnlich schnell
16. 19.05.2016 16
Zentrum für
Informations- und
Medientechnologie
alexander.kiontke@uni-siegen.de
Spielt aber keine Rolle, da
poller = SnmpPoller("enccore",snmp_community="mngt_RO")
for key, value in poller.snmpwalk('1.3.6.1.2.1.2.2.1.2').iteritems():
print key, value
Liefert:
498 GigabitEthernet2/36
669 Vlan845
668 Vlan815
608 GigabitEthernet8/2
664 unrouted VLAN 845
965 TenGigabitEthernet7/7
889 unrouted VLAN 617
...