1 SNMP Eric Garcia 2002 IUT GTR, Montbéliard Supervision Cours 3.

Post on 03-Apr-2015

120 views 6 download

Transcript of 1 SNMP Eric Garcia 2002 IUT GTR, Montbéliard Supervision Cours 3.

1

SNMP

Eric GarciaEric Garcia

20022002

IUT GTR, Montbéliard

Supervision

Cours 3

2

RéférencesRéférences

? : Modèle de communication

François Spies, Julien Bourgeois : Supervision de réseaux

Mentor Technologies : Configuring SNMP in Cisco Routers

3

PlanPlan

SNMP : fonctionnementSNMP : fonctionnement

SNMP sous linuxSNMP sous linux

SNMP sur un routeurSNMP sur un routeur

4

Principe de SNMPPrincipe de SNMP

5

DéfinitionDéfinition

Simple Network Management Protocol

Adopté par tous les constructeurs

Langage commun à tous les appareils réseaux

modem, PC, routeur, commutateurs, etc.

Architecture agent/superviseur

6

Rôle et architectureRôle et architecture

Quelle information est intéressante ?

Comment nommer les éléments ?

Comment obtenir et fixer des valeurs ?

Architecture agent/superviseur

Communication basées sur UDP

Agent attend des ordres du superviseur

Agent peut "désobéir" avec un trap

7

Les requêtesLes requêtes

UDP, port 161

get-request : lecture get-next-request : lecture séquentielle set-request : écriture get-response : attente réponse

UDP, port 162

trap : alarme récupération par le superviseur

8

Service de gestionService de gestion

Trois primitives de service

GET : lecture d ’une valeur d ’objet géré

SET : écriture d ’une valeur d ’objet géré

GET-NEXT : lecture du « suivant »

Une primitive de notification

TRAP : un événement prédéfini

9

GETGET

Question / Lecture /Réponse

10

Accès aux objets gérésAccès aux objets gérés

Requête d’un Gestionnaire

lecture ou écriture, …

paramètre : l ’oid (le type de l ’objet géré)

si variable simple

oid.0

si variable dans une table

oid.<valeur index 1>.….<valeur index n>

11

Exemple de lectureExemple de lecture

12

Le service GETLe service GET

Requête : une liste d’oid .0

Réponses : une liste de (oid,valeur) ou erreur

13

Le service SETLe service SET

Requête / Recherche / Mise à jour / Notification

14

Le service SETLe service SET

Requête : une liste de couple oid, valeur

Réponse : la même liste ou erreur

15

Le service GET-NEXTLe service GET-NEXT

Question / Recherche du suivant /Lecture /Réponse

16

Le service GET-NEXTLe service GET-NEXT

Requête : un oid o

Réponse : l ’oid et la valeur de l ’objet géré suivant o

17

ParcoursParcours

18

Parcours d’une MIBParcours d’une MIB

19

Parcours d’une tableParcours d’une table

20

Parcours d’une tableParcours d’une table

21

Parcours d’une tableParcours d’une table

22

Parcours d’une tableParcours d’une table

23

NotificationNotification

Trap ou alarme

24

Les trapsLes traps

7 différents types d'alarmes

coldStart, warmStart

linkDown, linkUp

authetificationFailure

egpNeighborLoss

enterpriseSpecific

5 destinataires maximum

25

Les erreursLes erreurs

Champs :

Error status Error index

Codes d'erreur :

0 : noError 1 : tooBig 2 : noSuchName 3 : badValue 4 : readOnly 5 : genErr

26

Les droits d’accèsLes droits d’accès

Les types de droits d'accès :

read-only read-write write-only not-accessible

Connaissance du nom de la communauté

Restriction par sous-arbres de la MIB (MIB view)

27

La sécurité : communautéLa sécurité : communauté

Relation N-N entre Gestionnaires et Agents

Un agent doit pouvoir contrôler son accès suivant les Gestionnaires

Solution de mots de passe

Un Agent définit des noms de communautés (public)

Toute requête de Gestionnaire contient un nom (public)

28

Profil de communautéProfil de communauté

Une communauté

a une vue partielle de la MIB a des droits sur cette vue (mode d ’accès) droits à confronter avec ceux des objets gérés

29

IllustrationIllustration

30

PlanPlan

SNMP : fonctionnementSNMP : fonctionnement

SNMP sous linuxSNMP sous linux

SNMP sur un routeurSNMP sur un routeur

31

Installation et configurationInstallation et configuration

Installation Debian :

client snmp : apt-get install snmp

serveur snmp = agent snmp : apt-get install snmpd

Fichiers de configuration

Serveur

/etc/snmp/snmpd.conf ~/snmpd.conf

Client

/usr/share/snmp/snmpconf-data/snmp.conf

32

Fichier de configurationFichier 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 ...

33

Fichiers MIBFichiers MIB

Après l’installation du package snmp

/usr/share/snmp/mibs fichiers des différentes parties de mib RFC1213-MIB.txt, RMON-MIB.txt…

Fichiers ASN.1

accès en lecture écriture, types (SNMPV2-SMI.txt) explications (SNMPV2-MIB.txt)…

34

Fichiers MIB SNMPv2-SMIFichiers MIB SNMPv2-SMI

Fichier SNMPv2-SMI

Définition de la partie de l’arbre de référence Définition des types utilisés dans cet arbre

SNMPv2-SMI DEFINITIONS ::= BEGIN-- the path to the rootorg OBJECT IDENTIFIER ::= { iso 3 } -- "iso" = 1dod OBJECT IDENTIFIER ::= { org 6 }internet OBJECT IDENTIFIER ::= { dod 1 }directory OBJECT IDENTIFIER ::= { internet 1 }mgmt OBJECT IDENTIFIER ::= { internet 2 }mib-2 OBJECT IDENTIFIER ::= { mgmt 1 }transmission OBJECT IDENTIFIER ::= { mib-2 10 }experimental OBJECT IDENTIFIER ::= { internet 3 }private OBJECT IDENTIFIER ::= { internet 4 }enterprises OBJECT IDENTIFIER ::= { private 1 } ...

35

Fichiers MIBFichiers MIB

Vérification d’une requête avant son émission

impossible d’envoyer un SET avec un mauvais type MIB présente sur le gestionnaire et la ressource (ceci n’est pas obligatoire mais semble être la solution la plus souvent utilisée)

Ouvrir SNMPv2-MIB

36

Fichiers MIBFichiers MIB

37

snmpwalksnmpwalk

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 kpmasystem.sysObjectID.0 = OID: enterprises.9.1.172system.sysUpTime.0 = Timeticks: (575148278) 66 days, 13:38:02.78system.sysContact.0 = system.sysName.0 = moisystem.sysLocation.0 = system.sysServices.0 = 78system.sysORLastChange.0 = Timeticks: (0) 0:00:00.00interfaces.ifNumber.0 = 4interfaces.ifTable.ifEntry.ifIndex.1 = 1 ...

38

Snmpwalk : syntaxeSnmpwalk : syntaxe

Utilise la requête SNMP GET-NEXT pour parcourir l’arbre d’une entité réseau

Un OID peut être donné en ligne de commande pour spécifier la portion de l’arbre 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.1sysUpTime.0 = Timeticks: (155274552) 17 days, 23:19:05sysContact.0 = STRING: ""sysName.0 = STRING: "zeus.net.cmu.edu"sysLocation.0 = STRING: ""sysServices.0 = INTEGER: 72

39

snmpgetsnmpget

Demande la valeur d’une variable correspondant à l’OID 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) 1986-1999 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

40

Snmpget : syntaxe et erreursSnmpget : syntaxe et erreurs

Différence d’écriture au niveau des raccourcis d’OID en fonction des version du client SNMP

Paramétrage pour ne pas à avoir à taper tous les numéros jusqu’à MIBII (1.3.6.1.2.1)

snmpget -v1 -c public localhost system.sysUpTime system.sysContact.0 Error in packetReason: (noSuchName) There is no such variable name in this MIB.This name doesn't exist: system.sysUpTime

system.sysContact.0 = STRING: root@localhost

41

snmpsetsnmpset

Met à jour la valeur d’une variable correspondant à l’OID donné en ligne de commande

Commande

snmpset -v 1 -c public 194.57.88.50 interfaces.ifTable.ifEntry.ifAdminStatus.2 i 1

Réponse

interfaces.ifTable.ifEntry.ifAdminStatus.2 = up(1)

42

Snmpset : syntaxeSnmpset : syntaxe

Types

i INTEGER n NULLOBJu UNSIGNED o OBJIDs STRING t TIMETICKSx HEX STRING a IPADDRESSd DECIMAL STRING b BITS

Exemple

snmpset -c private -v 1 test-hub system.sysContact.0 s 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)

43

snmpcmdsnmpcmd

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 priv- passwd] agent [community] commandparams

44

SécuritéSécurité

Des tests effectués à l'université de OULU mettent en évidence que de nombreuses vulnérabilités ( débordement de mémoire, chaîne de format, ...) existent dans les routines de décodage et de traitement des messages SNMP.

utiliser les capacités de filtrage que possèdent que possèdent certains agent SNMP (ACL) ne pas utiliser les noms de communautés positionnés lors de l'installation par défaut (public …)filtrer les ports 161/udp et 162/udp utilisés par le protocole SNMP V1 au niveau du garde-barrière afin d'empêcher l'exploitation de ces vulnérabilités depuis l'Internet

45

Différentes versionsDifférentes versions

3 versions du protocole SNMP : SNMPv1, SNMPv2 et SNMPv3.

La version 1 est encore la plus utilisée.

La version 2 est beaucoup plus complexe que la version 1

elle contient un niveau hiérarchique d’administration, ce qui permet d’avoir un administrateur central et de petits NMS dans le réseau. elle incorpore aussi un niveau plus élevé de sécurité, elle contient une gamme de messages d’erreurs plus vaste, elle utilise un nouveau type de tables MIB, les MIB II, qui contiennent plus d’éléments.

46

Différentes versionsDifférentes versions

La version 2 n’a cependant pas remplacé la version 1 du protocole,

pas un standard complet (Full Standard) la version 1 est simple et fonctionne très bien.

La version 3 pour sa part n’est pas encore au point

devrait éventuellement remplacer la version 1 Cette version comprend :

un module de sécurité plus élevée un module de traitements de messages des modules d’application et du répartiteur de paquets elle permet aussi d’interagir avec les anciennes versions.

47

Défauts / AvantagesDéfauts / Avantages

SNMP V1

authentification simpliste car le nom de la communauté circule en clair sur le réseau. consultation des tables fastidieuse

SNMP V2

Mécanisme d'authentification incompatible avec SNMP v1 Peut s'appuyer sur IP, IPX, OSI Primitives d'interrogation de tables Encore peu utilisé Sécurité : notion de Party (échange)

1 adresse réseau, mot de passe, protocole de chiffrement, l'agent restreint l'accès à une partie de l'arborescence, une requête a une durée de vie limitée.

48

Options V2 et V3Options 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. 

49

Options V2 et V3Options V2 et V3

-a authproto sets the authentication protocol (MD5|SHA) used for authenticated SNMP v3 messages. -A authpasswd sets the authentication pass phrase used for authenticated SNMP v3 messages.

-X privpasswd sets the privacy pass phrase used for encrypted SNMP v3 messages.

50

MIB PrivéeMIB Privée

51

Snmpwalk privé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, $

52

MIB PrivéeMIB Privée

Cisco = branche 9 de entreprises (voir CISCO-SMI)

CISCO-SMI DEFINITIONS ::= BEGIN

IMPORTSMODULE-IDENTITY,OBJECT-IDENTITY,enterprises

FROM SNMPv2-SMI;

cisco MODULE-IDENTITYLAST-UPDATED "200001110000Z"ORGANIZATION "Cisco Systems, Inc."CONTACT-INFO ......DESCRIPTION

"Initial version of this MIB module."::= { enterprises 9 } -- assigned by IANA

53

MIB PrivéeMIB Privée

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 ajoutée 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

54

MIB Privée CiscoMIB Privée Cisco

MIB privée = morceau d’une branche d’une entreprise

Attention aux erreurs si une partie de branche est utilisée 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

Définition de la partie CISCO de l’arbre

55

Cisco.com et MIBsCisco.com et MIBs

Pour télécharger des MIBs pour des plate-formes particulières, utiliser la MIB Locator

http://tools.cisco.com/ITDIT/MIBS/servlet/index

Pour accéder à la MIB Locator = compte chez Cisco.com :

http://www.cisco.com/register

MIBs Courantes : liste, informations par plate-forme, téléchargement :

http://www.cisco.com/public/sw-center/netmgmt/cmtk/mibs.shtml

56

Cisco MIB LocatorCisco MIB Locator

57

L’arbrederéférence

58

MIB Privée QoSMIB Privée 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 Outpriority(2), -- Priority Queuingcustom(3), -- Custom QueuingweightedFair(4) -- Weighted Fair Queuing

} ...

59

MIB Privée QoSMIB Privée 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.cQIfEntry.cQIfQType.1 = fifo(1)enterprises.cisco.ciscoMgmt.ciscoQueueMIB.ciscoQueueObjects.cQIfTable.cQIfEntry.cQIfQType.2 = fifo(1)enterprises.cisco.ciscoMgmt.ciscoQueueMIB.ciscoQueueObjects.cQIfTable.cQIfEntry.cQIfQType.3 = weightedFair(4)

60

PlanPlan

SNMP : fonctionnementSNMP : fonctionnement

SNMP sous linuxSNMP sous linux

SNMP sur un routeurSNMP sur un routeur

61

Configurer les accès au routeurConfigurer les accès au routeur

Activer l’agent SNMP du routeur

RO, RW

Configuration d’une community string équivalent à un mot de passe

public, private, secret…

snmp-server community public ro snmp-server community ourCommStr ro

62

Sécurité : mot de passeSécurité : mot de passe

Utilisation possible de serveurs centralisés de mots de passes (SNMPv2 ou v3)

XTACACS TACACS+

Voir cours de sécurité

tacacs-server host A.B.C.Denable use-tacacstacacs-server authenticate enable ...

63

Sécurité : access listSécurité : access list

Éviter les noms de communauté classiques pour un agent RW

Le paramètre 60 restreint l’accès en écriture aux machines autorisées par l’ACL 60

ici deux machines dites gestionnaires possibilité de wildcard aux machines d’un sous-réseau

snmp-server community topsecret rw 60

access-list 60 permit 10.1.1.1 access-list 60 permit 10.2.2.2

64

Sécurité : viewSécurité : view

Paramètre view = restreint l’accès à une partie de la MIB

Création de la vue noRouteTable avec les 4 dernières lignes

snmp-server community hideit ro view noRouteTable

snmp-server view noRouteTable internet included snmp-server view noRouteTable ip.21 excluded snmp-server view noRouteTable ip.22 excluded snmp-server view noRouteTable ifMIB excluded

65

Traps : configurationTraps : configuration

Configuration d’alarmes

envoyées à l’initiative de l’agent vers une ou plusieurs stations d’administration dédiées différentes alarmes en fonction de l’IOS utilisé

snmp-server enable trapssnmp-server enable traps frame-relay snmp-server enable traps envmon temperature

66

Traps : syslogd sur PCTraps : syslogd sur PC

Configuration de la ou des stations d’administration dédiées à la réception des alarmes

1) 10.1.1.1 reçoit toutes les alarmes 2) 10.1.1.1 reçoit les traps snmp et bgp et 10.1.1.2 les traps snmp et frame-relay

snmp-server host 10.1.1.1 publicsnmp-server host 10.1.1.1 public snmp bgpsnmp-server host 10.2.2.2 public snmp frame-relay

Configuration sur la station NMS

Lancer le démon syslogd sur la station pour pouvoir utiliser les fichiers de logs

67

Les types d’alarmesLes types d’alarmes

authentication : échecs d’authentification

pour SNMPv1 = mauvaise community string Pour v2 et v3 mauvais mot de passe

linkup : activation d’un lien

linkdown : désactivation d’un lien

coldstart : réinitialisation du périphérique avec possibilité de modification de la configuration de l’agent

warmstart : réinitialisation du périphérique sans modification de la configuration de l’agent

68

Traps : versions d’IOSTraps : versions d’IOS

Release Modification

11.3 La commande snmp-server enable traps snmp authentication à été introduite à la place de snmp-server trap-authentication

12.1(3)T Les traps suivantes ont été ajoutées :

• linkup• linkdown• coldstart

12.1(5)T Ajout de la commande warmstart

69

Autres commandesAutres commandes

Permettre le redémarrage d’un routeur par une requête SNMP

utilisé par le logiciel CiscoWork lors de téléchargement d’un nouvel IOS

snmp-server system-shutdown

Champs souvent non renseignés

snmp-server contact XXXXsnmp-server location YYYY

70

Bonus : Host et DNSBonus : Host et DNS

Host table

utile même 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.lip host chicago_router a.b.c.g m.n.o.p

DNS

ip domain-name univ-fcomte.frip name-server 194.57.91.200ip name-server 194.57.91.201no ip domain-lookup : pour invalider la rechetrche d’un DNS

71

Bonus : Accès TelnetBonus : Accès Telnet

Activer l’accès en telnet au routeur

on peut améliorer un peu la sécurité avec les ACL

access-list 1 permit a.b.c.0 0.0.0.255access-list 1 permit a.b.g.0 0.0.0.255line vty 0 4access-class 1 inloginpassword xxx : password telnetexec-timeout 5 0 : logout auto si inactivité 5 minutes

: (10 minutes par défaut): exec-timeout 0 0 si on n’en veut pas

72

Exemple de configExemple de config

access-list 60 permit a.b.c.d 0.0.0.0access-list 60 permit e.f.g.h 0.0.0.0access-list 60 deny 0.0.0.0 255.255.255.255snmp-server community password1 RO snmp-server community password2 RO 60snmp-server community password3 RW 60snmp-server system-shutdownsnmp-server chassis-id YYYYsnmp-server packetsize 4000snmp-server host a.b.c.dsnmp-server host a.b.c.gsnmp-server contact XXXXsnmp-server location YYYYsnmp-server trap-authentication

73

Configurer l’agent sur un APConfigurer l’agent sur un AP

74

Configurer l’agent sur un APConfigurer l’agent sur un AP

75

SnmpwalkSnmpwalk

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.21system.sysObjectID.0 = OID: enterprises.9.1.380system.sysUpTime.0 = Timeticks: (6419600) 17:49:56.00system.sysContact.0 = Aironet Wireless Communications, Inc.system.sysName.0 = AP350-58b47csystem.sysLocation.0 = Besanconsystem.sysServices.0 = 79