Vous êtes sur la page 1sur 74

SNMP

Plan

SNMP : fonctionnement SNMP sous linux SNMP sur un routeur routeur sur un

Principe de SNMP

Dfinition

Simple Network Management Protocol Adopt par tous les constructeurs Langage commun tous les appareils rseaux modem, PC, routeur, commutateurs, etc. Architecture agent/superviseur

Rle et architecture
Quelle information est intressante ? Comment nommer les lments ? Comment obtenir et fixer des valeurs ? Architecture agent/superviseur Communication bases sur UDP Agent attend des ordres du superviseur Agent peut "dsobir" avec un trap

Les requtes

UDP, port 161 get-request : lecture get-next-request : lecture squentielle set-request : criture get-response : attente rponse UDP, port 162 trap : alarme rcupration par le superviseur

Service de gestion

Trois primitives de service GET : lecture d une valeur d objet gr SET : criture d une valeur d objet gr GET-NEXT : lecture du suivant Une primitive de notification TRAP : un vnement prdfini

GET

Question / Lecture /Rponse

Accs aux objets grs


Requte dun Gestionnaire lecture ou criture, paramtre : l oid (le type de l objet gr) si variable simple oid.0 si variable dans une table oid.<valeur index 1>..<valeur index n>

Exemple de lecture

Le service GET
Requte : une liste doid .0 Rponses : une liste de (oid,valeur) ou erreur

Le service SET
Requte / Recherche / Mise jour / Notification

Le service SET
Requte : une liste de couple oid, valeur Rponse : la mme liste ou erreur

Le service GET-NEXT
Question / Recherche du suivant /Lecture /Rponse

Le service GET-NEXT
Requte : un oid o Rponse : l oid et la valeur de l objet gr suivant o

Parcours

Parcours dune MIB

Parcours dune table

Parcours dune table

Parcours dune table

Parcours dune table

Notification
Trap ou alarme

Les traps
7 diffrents types d'alarmes coldStart, warmStart linkDown, linkUp authetificationFailure egpNeighborLoss enterpriseSpecific 5 destinataires maximum

Les erreurs
Champs : Error status Error index Codes d'erreur : 0 : noError 1 : tooBig 2 : noSuchName 3 : badValue 4 : readOnly 5 : genErr

Les droits daccs

Les types de droits d'accs : read-only read-write write-only not-accessible Connaissance du nom de la communaut Restriction par sous-arbres de la MIB (MIB view)

La scurit : communaut
Relation N-N entre Gestionnaires et Agents Un agent doit pouvoir contrler son accs suivant les Gestionnaires Solution de mots de passe Un Agent dfinit des noms de communauts (public) Toute requte de Gestionnaire contient un nom (public)

Profil de communaut
Une communaut a une vue partielle de la MIB a des droits sur cette vue (mode d accs) droits confronter avec ceux des objets grs

Illustration

Plan

SNMP : fonctionnement SNMP sous linux SNMP sur un routeur routeur sur un

Installation et configuration
Installation Fedora : client snmp : yum install net-snmp-utils serveur snmp = agent snmp : yum install net-snmp Fichiers de configuration Serveur /etc/snmp/snmpd.conf /etc/snmp/snmptrapd.conf Client /usr/share/snmp/snmpconf-data/

Fichier de configuration
############################################################## ############# # snmpd.conf # # - created by the snmpconf configuration program ############################################################## ############# # SECTION: Access Control Setup # # This section defines who is allowed to talk to your running # snmp agent. #rocommunity: a SNMPv1/SNMPv2c read-only access community name #arguments: community [default|hostname|network/bits] [oid] rocommunity public #rwcommunity: a SNMPv1/SNMPv2c read-write access community name #arguments: community [default|hostname|network/bits] [oid] rwcommunity public ...

Fichiers MIB

Aprs linstallation du package snmp /usr/share/snmp/mibs fichiers des diffrentes parties de mib RFC1213-MIB.txt, RMON-MIB.txt Fichiers ASN.1 accs en lecture criture, types (SNMPV2-SMI.txt) explications (SNMPV2-MIB.txt)

Fichiers MIB SNMPv2-SMI


Fichier SNMPv2-SMI Dfinition de la partie de larbre de rfrence Dfinition des types utiliss dans cet arbre
SNMPv2-SMI DEFINITIONS ::= BEGIN -- the path to the root org OBJECT IDENTIFIER dod OBJECT IDENTIFIER internet OBJECT IDENTIFIER directory OBJECT IDENTIFIER mgmt OBJECT IDENTIFIER mib-2 OBJECT IDENTIFIER transmission OBJECT IDENTIFIER experimental OBJECT IDENTIFIER private OBJECT IDENTIFIER enterprises OBJECT IDENTIFIER

::= ::= ::= ::= ::= ::= ::= ::= ::= ::=

{ { { { { { { { { {

iso 3 } -- "iso" = 1 org 6 } dod 1 } internet 1 } internet 2 } mgmt 1 } mib-2 10 } internet 3 } internet 4 } private 1 } ...

Fichiers MIB
Vrification dune requte avant son mission impossible denvoyer un SET avec un mauvais type MIB prsente sur le gestionnaire et la ressource (ceci nest pas obligatoire mais semble tre la solution la plus souvent utilise)

Ouvrir SNMPv2-MIB

Fichiers MIB

snmpwalk
Parcours de la MIB snmpwalk v 1 c public 172.20.168.254
system.sysDescr.0 = Cisco Internetwork Operating System Software IOS (tm) 1600 Software (C1600-SY-M), Version 12.0(5)T, RELEASE SOFTWARE (fc1) Copyright (c) 1986-1999 by cisco Systems, Inc. Compiled Fri 23-Jul-99 06:04 by kpma system.sysObjectID.0 = OID: enterprises.9.1.172 system.sysUpTime.0 = Timeticks: (575148278) 66 days, 13:38:02.78 system.sysContact.0 = system.sysName.0 = moi system.sysLocation.0 = system.sysServices.0 = 78 system.sysORLastChange.0 = Timeticks: (0) 0:00:00.00 interfaces.ifNumber.0 = 4 interfaces.ifTable.ifEntry.ifIndex.1 = 1 ...

Snmpwalk : syntaxe
Utilise la requte SNMP GET-NEXT pour parcourir larbre dune entit rseau Un OID peut tre donn en ligne de commande pour spcifier la portion de larbre devant tre parcourue
snmpwalk -Os -c public -v 1 zeus system will retrieve all of the variables under system: sysDescr.0 = STRING: "SunOS zeus.net.cmu.edu 4.1.3_U1 1 sun4m" sysObjectID.0 = OID: enterprises.hp.nm.hpsystem.10.1.1 sysUpTime.0 = Timeticks: (155274552) 17 days, 23:19:05 sysContact.0 = STRING: "" sysName.0 = STRING: "zeus.net.cmu.edu" sysLocation.0 = STRING: "" sysServices.0 = INTEGER: 72

snmpget
Demande la valeur dune variable correspondant lOID donn en ligne de commande snmpget v 1 c public 172.20.168.254 1.1.0 ou snmpget v 1 c public 172.20.168.254 system.sysDescr.0
system.sysDescr.0 = Cisco Internetwork Operating System Software IOS (tm) 1600 Software (C1600-SY-M), Version 12.0(5)T, RELEASE SOFTWARE (fc1) Copyright (c) 19861999 by cisco Systems, Inc. Compiled Fri 23-Jul-99 06:04 by kpma

snmpget -v 1 -c public localhost 1.3.6.1.2.1.2.1.0


IF-MIB::ifNumber.0 = INTEGER: 2

Snmpget : syntaxe et erreurs


Diffrence dcriture au niveau des raccourcis dOID en fonction des version du client SNMP Paramtrage pour ne pas avoir taper tous les numros jusqu MIBII (1.3.6.1.2.1)
snmpget -v1 -c public localhost system.sysUpTime system.sysContact.0 Error in packet Reason: (noSuchName) There is no such variable name in this MIB. This name doesn't exist: system.sysUpTime system.sysContact.0 = STRING: root@localhost

snmpset

Met jour la valeur dune variable correspondant lOID donn en ligne de commande Commande snmpset -v 1 -c public 194.57.88.50 interfaces.ifTable.ifEntry.ifAdminStatus.2 i 1 Rponse interfaces.ifTable.ifEntry.ifAdminStatus.2 = up(1)

Snmpset : syntaxe
Types
i u s x d INTEGER UNSIGNED STRING HEX STRING DECIMAL STRING n o t a b NULLOBJ OBJID TIMETICKS IPADDRESS BITS

Exemple snmpset -c private -v 1 test-hub system.sysContact.0 dpz@noc.rut-gers.edu ip.ipforwarding.0 = 2 will set the variables sysContact.0 and ipForwarding.0: system.sysContact.0 = STRING: "dpz@noc.rutgers.edu" ip.ipForwarding.0 = INTEGER: not-forwarding(2) s

snmpcmd
man snmpcmd
snmpcmd [-h|-H|-V] [-v (1 | 2c | 3) ] [-O <OUTOPTS> ] [-I <INOPTS> ] [-P <PARSEROPTS> ] [-m mibs] [-M mibdirs] [-d] [-D <TOKEN[,TOKEN,...]> ] [-r retries] [-t timeout] [-p port] [-T UDP|TCP] [-c community] [-e engineid] [-Z boots time] [-n contextname] [-l seclevel] [-u secname] [-a authproto][-A authpasswd][-x privproto][-X privpasswd] agent [community] commandparams

Scurit
Des tests effectus l'universit de OULU mettent en vidence que de nombreuses vulnrabilits ( dbordement de mmoire, chane de format, ...) existent dans les routines de dcodage et de traitement des messages SNMP. utiliser les capacits de filtrage que possdent que possdent certains agent SNMP (ACL) ne pas utiliser les noms de communauts positionns lors de l'installation par dfaut (public ) filtrer les ports 161/udp et 162/udp utiliss par le protocole SNMP V1 au niveau du garde-barrire afin d'empcher l'exploitation de ces vulnrabilits depuis l'Internet

Diffrentes versions
3 versions du protocole SNMP : SNMPv1, SNMPv2 et SNMPv3. La version 1 est encore la plus utilise. La version 2 est beaucoup plus complexe que la version 1 elle contient un niveau hirarchique dadministration, ce qui permet davoir un administrateur central et de petits NMS dans le rseau. elle incorpore aussi un niveau plus lev de scurit, elle contient une gamme de messages derreurs plus vaste, elle utilise un nouveau type de tables MIB, les MIB II, qui contiennent plus dlments.

Diffrentes versions
La version 2 na cependant pas remplac la version 1 du protocole, pas un standard complet (Full Standard) la version 1 est simple et fonctionne trs bien. La version 3 pour sa part nest pas encore au point devrait ventuellement remplacer la version 1 Cette version comprend : un module de scurit plus leve un module de traitements de messages des modules dapplication et du rpartiteur de paquets elle permet aussi dinteragir avec les anciennes versions.

Dfauts / Avantages
SNMP V1 authentification simpliste car le nom de la communaut circule en clair sur le rseau. consultation des tables fastidieuse SNMP V2 Mcanisme d'authentification incompatible avec SNMP v1 Peut s'appuyer sur IP, IPX, OSI Primitives d'interrogation de tables Encore peu utilis Scurit : notion de Party (change)
1 adresse rseau, mot de passe, protocole de chiffrement, l'agent restreint l'accs une partie de l'arborescence, une requte a une dure de vie limite.

Options V2 et V3
-e engineid sets the authoritative(security) engineID used for SNMP v3 Request messages. This is the engineID of the agent or proxy (e.g., 800000020109840301). will be discovered if not supplied) -n contextname sets the destination contextName used for SNMP v3 messages. Default contextName is the empty string "". -l seclevel sets the securityLevel used for SNMP v3 messages (noAuthNoPriv|authNoPriv|authPriv). Appropriate pass phrase(s) must provided when using any level higher than noAuthNoPriv. -u secname sets the securityName used for authenticated SNMP v3 messages.

Options V2 et V3
-a authproto sets the authentication protocol (MD5|SHA) used for authenticated SNMP v3 messages. -A authpasswd sets the authentication pass authenticated SNMP v3 messages. -X privpasswd sets the privacy SNMP v3 messages. pass phrase used for encrypted phrase used for

MIB Prive

Snmpwalk priv
snmpwalk -Os -c public -v 1 m all zeus private enterprises.cisco.local.1.1.0 = "..System Bootstrap, Version 12.0(3)T, RELEASE SOFTWARE (fc1)..Copyright (c) 1999 by cisco Systems, Inc..." enterprises.cisco.local.1.2.0 = "bus error at PC 0x266BBAA, address 0x65656569" enterprises.cisco.local.1.3.0 = "LaCultureDeLaBettrave" enterprises.cisco.local.1.4.0 = "univ-fcomte.fr" ... enterprises.cisco.ciscoMgmt.ciscoImageMIB.ciscoImageMIBObjects .ciscoImageTable.ciscoImageEntry.ciscoImageString.3 = CW_FAMILY$C1600$ enterprises.cisco.ciscoMgmt.ciscoImageMIB.ciscoImageMIBObjects .ciscoImageTable.ciscoImageEntry.ciscoImageString.4 = CW_FEATURE$BASIC-IP PLUS$ enterprises.cisco.ciscoMgmt.ciscoImageMIB.ciscoImageMIBObjects .ciscoImageTable.ciscoImageEntry.ciscoImageString.5 = CW_VERSION$12.0(5)T, $

MIB Prive
Cisco = branche 9 de entreprises (voir CISCO-SMI)
CISCO-SMI DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-IDENTITY, enterprises FROM SNMPv2-SMI; cisco MODULE-IDENTITY LAST-UPDATED "200001110000Z" ORGANIZATION "Cisco Systems, Inc." CONTACT-INFO ... ... DESCRIPTION "Initial version of this MIB module." ::= { enterprises 9 } -- assigned by IANA

MIB Prive

snmpget -v 1 -c public -m all 194.57.88.50 1.2.0 system.sysObjectID.0 = OID: enterprises.9.1.172

CISCO-PRODUCTS-MIB.my ajoute dans /usr/share/snmp/mibs (branche 1 de cisco)


snmpget -v 1 -c public -m all 194.57.88.50 1.2.0 system.sysObjectID.0 = OID: enterprises.cisco.ciscoProducts.cisco1605

MIB Prive Cisco


MIB prive = morceau dune branche dune entreprise Attention aux erreurs si une partie de branche est utilise sans avoir importer la partie qui permet de la relier la racine cisco-bus.mib cisco-lecs.mib cisco-les.mib lane-client.mib cisco-vlan-bridge.mib atm-forum.mib Fichier cisco-smi.mib Dfinition de la partie CISCO de larbre

Cisco.com et MIBs

Pour tlcharger des MIBs pour des plate-formes particulires, utiliser la MIB Locator http://tools.cisco.com/ITDIT/MIBS/servlet/index Pour accder la MIB Locator = compte chez Cisco.com : http://www.cisco.com/register MIBs Courantes : liste, informations par plate-forme, tlchargement :
http://www.cisco.com/public/sw-center/netmgmt/cmtk/mibs.shtml

Cisco MIB Locator

Larbre de rfrence

MIB Prive QoS

Fichier MIB CISCO-QUEUE-MIB


ciscoQueueObjects OBJECT IDENTIFIER ::= { ciscoQueueMIB 1 } ciscoQueueTraps OBJECT IDENTIFIER ::= { ciscoQueueMIB 2 } ciscoQueueConformance OBJECT IDENTIFIER ::= { ciscoQueueMIB 3 } CQAlgorithm ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The type of queuing algorithm used on the interface." SYNTAX INTEGER { fifo(1), -- First In First Out priority(2), -- Priority Queuing custom(3), -- Custom Queuing weightedFair(4) -- Weighted Fair Queuing } ...

MIB Prive QoS

snmpwalk -v 1 -c public -m all 194.57.88.50 internet.private


enterprises.cisco.local.1.1.0 = "..System Bootstrap, Version 12.0(3)T, RELEASE SOFTWARE (fc1)..Copyright (c) 1999 by cisco Systems, Inc...

... enterprises.cisco.ciscoMgmt.ciscoQueueMIB.ciscoQueueObjects.cQIfTable.c QIfEntry.cQIfQType.1 = fifo(1) enterprises.cisco.ciscoMgmt.ciscoQueueMIB.ciscoQueueObjects.cQIfTable.c QIfEntry.cQIfQType.2 = fifo(1) enterprises.cisco.ciscoMgmt.ciscoQueueMIB.ciscoQueueObjects.cQIfTable.c QIfEntry.cQIfQType.3 = weightedFair(4)

Plan

SNMP : fonctionnement SNMP sous linux SNMP sur un routeur routeur sur un

Configurer les accs au routeur


Activer lagent SNMP du routeur RO, RW Configuration dune community string quivalent un mot de passe public, private, secret snmp-server community public ro snmp-server community ourCommStr ro

Scurit : mot de passe


Utilisation possible de serveurs centraliss de mots de passes (SNMPv2 ou v3) XTACACS TACACS+ Voir cours de scurit

tacacs-server host A.B.C.D enable use-tacacs tacacs-server authenticate enable ...

Scurit : access list


viter les noms de communaut classiques pour un agent RW Le paramtre 60 restreint laccs en criture aux machines autorises par lACL 60 ici deux machines dites gestionnaires possibilit de wildcard aux machines dun sous-rseau snmp-server community topsecret rw 60 access-list 60 permit 10.1.1.1 access-list 60 permit 10.2.2.2

Scurit : view
Paramtre view = restreint laccs une partie de la MIB Cration de la vue noRouteTable avec les 4 dernires lignes snmp-server community hideit ro view noRouteTable snmp-server snmp-server snmp-server snmp-server view view view view noRouteTable noRouteTable noRouteTable noRouteTable internet included ip.21 excluded ip.22 excluded ifMIB excluded

Traps : configuration
Configuration dalarmes envoyes linitiative de lagent vers une ou plusieurs stations dadministration ddies diffrentes alarmes en fonction de lIOS utilis snmp-server enable traps snmp-server enable traps frame-relay snmp-server enable traps envmon temperature

Traps : syslogd sur PC


Configuration de la ou des stations dadministration ddies la rception des alarmes 1) 10.1.1.1 reoit toutes les alarmes 2) 10.1.1.1 reoit les traps snmp et bgp et 10.1.1.2 les traps snmp et frame-relay

snmp-server host 10.1.1.1 public snmp-server host 10.1.1.1 public snmp bgp snmp-server host 10.2.2.2 public snmp frame-relay Configuration sur la station NMS Lancer le dmon syslogd sur la station pour pouvoir utiliser les fichiers de logs

Les types dalarmes


authentication : checs dauthentification pour SNMPv1 = mauvaise community string Pour v2 et v3 mauvais mot de passe linkup : activation dun lien linkdown : dsactivation dun lien coldstart : rinitialisation du priphrique avec possibilit de modification de la configuration de lagent warmstart : rinitialisation du priphrique sans modification de la configuration de lagent

Traps : versions dIOS


Release 11.3 Modification La commande snmp-server enable traps snmp authentication t introduite la place de snmp-server trap-authentication Les traps suivantes ont t ajoutes : linkup linkdown coldstart 12.1(5)T Ajout de la commande warmstart

12.1(3)T

Autres commandes
Permettre le redmarrage dun routeur par une requte SNMP utilis par le logiciel CiscoWork lors de tlchargement dun nouvel IOS snmp-server system-shutdown

Champs souvent non renseigns snmp-server contact XXXX snmp-server location YYYY

Bonus : Host et DNS


Host table utile mme si le DNS est configur : risques de pannes mettre les routeurs les plus importants ou les noms des serveurs TFTP pour les fichiers de conf. dans cette table ip host new_york_router a.b.c.d e.f.g.h i.j.k.l ip host chicago_router a.b.c.g m.n.o.p DNS ip ip ip no domain-name univ-fcomte.fr name-server 194.57.91.200 name-server 194.57.91.201 ip domain-lookup : pour invalider la rechetrche dun DNS

Bonus : Accs Telnet


Activer laccs en telnet au routeur on peut amliorer un peu la scurit avec les ACL access-list 1 permit a.b.c.0 0.0.0.255 access-list 1 permit a.b.g.0 0.0.0.255 line vty 0 4 access-class 1 in login password xxx : password telnet exec-timeout 5 0 : logout auto si inactivit 5 minutes : (10 minutes par dfaut) : exec-timeout 0 0 si on nen veut pas

Exemple de config
access-list access-list access-list snmp-server snmp-server snmp-server snmp-server snmp-server snmp-server snmp-server snmp-server snmp-server snmp-server snmp-server 60 permit a.b.c.d 0.0.0.0 60 permit e.f.g.h 0.0.0.0 60 deny 0.0.0.0 255.255.255.255 community password1 RO community password2 RO 60 community password3 RW 60 system-shutdown chassis-id YYYY packetsize 4000 host a.b.c.d host a.b.c.g contact XXXX location YYYY trap-authentication

Configurer lagent sur un AP

Configurer lagent sur un AP

Snmpwalk
snmpwalk sur un Acces Point Cisco Aironet 350

[garcia@zelda ~]$ snmpwalk -v 1 -c root 194.57.88.51 system system.sysDescr.0 = Cisco 350 Series AP 11.21 system.sysObjectID.0 = OID: enterprises.9.1.380 system.sysUpTime.0 = Timeticks: (6419600) 17:49:56.00 system.sysContact.0 = Aironet Wireless Communications, Inc. system.sysName.0 = AP350-58b47c system.sysLocation.0 = Besancon system.sysServices.0 = 79

Vous aimerez peut-être aussi