structures des pdu snmp chapitre 4. format du message snmpv1 le champ version permet à un nouveau...

20
Structures des PDU SNMP Chapitre 4

Upload: raulf-guillaume

Post on 04-Apr-2015

129 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Structures des PDU SNMPStructures des PDU SNMP

Chapitre 4Chapitre 4

Page 2: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Format du message SNMPv1Format du message SNMPv1

• Le champ version permet à un nouveau format de message d’être identifié— Permet de s'assurer que l'administrateur et l'agent utilisent la même version— N’était plus utilisé dans la version initiale de SNMPv2— Utilisé dans SNMPv2C et aussi dans SNMPv3

• La communauté est une authentification triviale utilisée par SNMPv1

• La plupart des équipements permettent de configurer des noms de communauté différents en lecture et en écriture

• Le nom de communauté de "lecture" est souvent "public", par défaut— Envoyé sous forme de chaîne de texte ASCII dans les PDU

– Quiconque possédant un analyseur de protocole peut le capturer

• La section "données" contient une des cinq PDU SNMP— On définit seulement deux formats de PDU

– GetRequest, GetNextRequest, GetResponse, SetRequest utilisent le même format de PDU

– Le Trap de SNMPv1 utilise un format de PDU différentASCII = American Standard Code for Information Interchange

Page 3: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Format des messages SNMPv1 et SNMPv2cFormat des messages SNMPv1 et SNMPv2c

• Les messages SNMPv1 ont le format suivant :

SNMP-Message ::= SEQUENCE { version INTEGER {version-1(0)}, community OCTET STRING, data ANY}

version_1(1)

GetRequest PDU

GetNextRequest PDU

GetResponse PDU

Trap PDUSetRequest PDU

community data

Authentification

Version SNMPdu message

Message SNMP

Page 4: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Formats des PDU Get, Set et ResponseFormats des PDU Get, Set et Response

• Le champ “Request ID” permet à la partie gestionnaire d’identifier la réponse correspondant à la requête formulée

• Le champ “Error Index” identifie la variable (variable bindings) qui a occasionné l'erreur

• Chaque ensemble variable bindings (les données) regroupe le nom de la variable avec sa valeur— La variable est nommée par son OID complet (identifiant une instance)— Les PDU GetRequest et GetNextRequest utilisent NULL à la place de la

valeur – NULL est un type ASN.1 (UNIVERSAL) particulier

Page 5: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Formats des PDU Get, Set et Response (suite)Formats des PDU Get, Set et Response (suite)

. . . . . .

version community

SNMP message

GetRequest, GetNextRequest, GetResponse,or SetRequest PDU

PDUtype

RequestID

Errorstatus

Errorindex Object 1, Value 1 Object 2, Value 2

Variable bindings

PDU tag PDU

0

1

2

3

4

GetRequest

GetNextRequest

GetResponse

SetRequest

Trap

0

1

2

3

4

5

noError

tooBig

noSuchName

badValue

readOnly

genErr

Value Error Meaning

Opération manager/agent OK

PDU Response dépasse la limite locale

OID ne correspond pas à un nom de la MIB

SetRequest contient valeur non valide

Non défini dans la RFC-1157

D’autres erreurs sont intervenues

Page 6: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Format de la PDU Trap Format de la PDU Trap

• Le champ “Enterprise” identifie l'entreprise de l’équipement qui a émis le Trap— Par exemple, le préfixe OID 1.3.6.1.4.1.121 identifie FTP Software Inc. comme

constructeur dans l’émission du Trap— Cet OID précise la nature de l’alarme dans la MIB constructeur

• Le champ “Agent Address” contient l'adresse IP de l'agent envoyant le Trap— L'adresse 0.0.0.0 signifie que l’émission ne vient pas d'un réseau IP

• Le champ “Specific Trap Type” précise le type de trap constructeur, quand le champ “generic” indique trap constructeur (enterprise specific)— Est défini par les directives de la RFC-1215— Seulement valide pour les "Trap" spécifiques entreprises

• Le champ “Timestamp” contient la valeur de l'objet sysUpTime de l’agent au moment de l’envoi de ce trap

Page 7: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Format de la PDU Trap (suite)Format de la PDU Trap (suite)

SNMP message

. . . .

version community Trap PDU

PDUtype (4)

EnterpriseAgent

addressGenerictrap type

Specifictrap type

Timestamp Object 1, Value 1 Object 2, Value 2

Variable bindings

Value Trap Meaning

0

1

2

3

4

5

6

coldStart

warmStart

linkDown

linkUp

authenticationFailure

egpNeighborLoss

enterpriseSpecific

Sending protocol entity has reinitialized (config. may be altered)

Sending protocol entity has reinitialized (config. not altered)

A communications link has failed

A communications link has come up

Improperly authenticated SNMP message from manager

An EGP peer neighbor is down

A nongeneric trap has occurred

Page 8: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Format du message SNMPv2Format du message SNMPv2

• Il n’y a jamais eu de consensus sur le Format du message SNMPv2 (1993)

• On a défini trois nouveaux types de PDU :— GetBulkRequest

– Utilisé pour récupérer de grandes quantités de données, ex. : le contenu de tables

— InformRequest– Devait permettre à un administrateur d'envoyer des informations à un

autre administrateur — SNMPv2-Trap

– Remplace le PDU Trap SNMPv1 (obsolète)

• La PDU Trap de SNMPv2 utilise maintenant une structure identique aux autres PDU— La première variable contient sysUpTime

• Les informations de type "Error Status" sont plus explicites

Page 9: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

SNMPv2/v3 Error ReportingSNMPv2/v3 Error Reporting

*Never generated by SNMPv2/v3 entity

Error status value Meaning0 noError1 tooBig2 noSuchName*3 badValue*4 readOnly*5 genErr6 noAccess7 wrongType8 wrongLength9 wrongEncoding

10 wrongValue11 noCreation12 inconsistentValue13 resourceUnavailable14 commitFailed15 undoFailed16 authorizationError17 notWritable18 inconsistentName

Page 10: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Format du message SNMPv2cFormat du message SNMPv2c

• SNMPv2c (c pour community) utilise ces nouvelles PDU SNMPv2

— Mais les encapsule dans un format de message de type SNMPv1

. . . . . .

version SNMPv2 PDU

SNMPv2 message

PDUtype

RequestID

Error Statusor

Non-Rptr

Error Indexor

Max-RepsObject 1, Value 1 Object 2, Value 2

PDU tag PDU

0

1

2

3

4

5

6

7

GetRequest

GetNextRequest

Response

SetRequest

obsolete

GetBulkRequest

InformRequest

SNMPv2-Trap

Non-Rptr: Nonrepeaters, how many of the requested variableswill not be processed repeatedly(used in GetBulkRequest only)

Max-Reps: Maximum-repetitions, the maximum number ofrepeated executions to retrieve specific variables(used in GetBulkRequest only)

Variable bindings

community

Page 11: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Format du message SNMPv3Format du message SNMPv3

• SNMPv3 utilise aussi les PDU SNMPv2 — Mais les encapsule dans un nouveau format de message (SNMPv3)

. . . . . .

version (3) SNMPv2 PDU

SNMPv3 message

PDUtype

RequestID

Error Statusor

Non-Rptr

Error Indexor

Max-RepsObject 1, Value 1 Object 2, Value 2

PDU tag PDU

0

1

2

3

4

5

6

7

GetRequestGetNextRequestResponseSetRequestobsoleteGetBulkRequestInformRequestSNMPv2-Trap

msgGlobalData: Security model-specific parameters (see Chapter 7)

msgSecurityParameters: Format defined by security model (see Chapter 7)

Variable bindings

msgGlobalData msgSecurityParameters

Page 12: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Transmettre des informations de gestionTransmettre des informations de gestion

• Le SMI (Structure of Management Information) définit toutes les propriétés d’un objet de la MIB

• ASN.1 définit le type d'un objet et éventuellement des limites de valeurs

• Les règles d'encodage de base (BER) définissent comment les valeurs ASN.1 réelles dans l’application sont encodées en flux d'octets (sérialisation)— Ce que vous voyez sur le câble

• Utilise un encodage Type-Longueur-Valeur (TLV)

ValeurLongueurType

Page 13: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Encodage du champ TypeEncodage du champ Type

1 1 1 1 1

For tags greater than or equal to 31

1 1 . . .

First octet

Class PC

Second octet Third octet Last octet

0 Z Z Z Z Z Z ZY Y Y Y Y Y Y X X X X X X X

Number of tag = XXXXXXX YYYYYYY . . . ZZZZZZZ

For tags from 0 through 30

Type Length Value

Class PC Tag number

One octet

Page 14: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Encodage du champ Type (suite)Encodage du champ Type (suite)

Classe : TAG pour la classe UNIVERSAL :

00 = UNIVERSAL 1 = BOOLEAN (ASN.1 OSI))01 = APPLICATION 2 = INTEGER10 = CONTEXT-SPECIFIC 3 = BITSTRING 11 = PRIVATE 4 = OCTETSTRING

5 = NULL6 = OBJECT IDENTIFIER

16 = SEQUENCE / SEQUENCE OF

PC = 1 pour un encodage structuré, 0 pour encodage simple

Page 15: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Encodage du champ Type (suite)Encodage du champ Type (suite)

Classe : TAG pour la classe APPLICATION :

00 = UNIVERSAL 0 = IPADDRESS01 = APPLICATION 1 = COUNTER3210 = CONTEXT-SPECIFIC 2 = GAUGE32 11 = PRIVATE 3 = TIMETICKS

4 = OPAQUE6 = COUNTER64

Classe :TAG pour la classe CONTEXT SPECIFIC

0 = GetRequest PDU 5 = GetBulkRequest PDU

1 = GetNextRequest PDU 6 = InformRequest PDU

2 = Response PDU 7 = SNMPv2-Trap PDU

3 = SetRequest PDU

4 = SNMPv1-Trap PDU

PC = 1 pour un encodage structuré, 0 pour encodage simple

Page 16: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Encodage du champ LongueurEncodage du champ Longueur

• Le champ “Longueur” détermine le nombre d'octets occupés par le champ “Valeur”

. . .

Length = 0 – 127 octets

0 X X X X X X X

Number of octets in value field

Length > 127 octets

1 X X X X X X X X X X X X X X X X X X X X X X X

Number ofsubsequent

octets

Number of octets in Value field

Page 17: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Encoder le champ ValeurEncoder le champ Valeur

• BOOLEAN (Tag = 1) ASN.1 OSI— Un octet unique avec un contenu de zéro pour FALSE, # 0 pour TRUE— Exemple : FALSE est codé 01 01 00 (en hexadécimal)

• INTEGER (Tag = 2)— La représentation utilisant le plus petit nombre d'octets possible— Exemple : 500 codé 02 02 01 f4 (en hexadécimal)

• OCTET STRING (Tag = 4)— Les contenus représentent exactement les valeurs de la chaîne d'octets— Un encodage structuré casse la chaîne en plusieurs sous-chaînes— Exemple : 55 ff 00 codé 04 03 55 ff 00 (en hexadécimal)

• NULL (Tag = 5)

— Il n'y a pas de contenu— Exemple : Null codé 05 00 (en hexadécimal)

Page 18: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Encoder le champ Valeur (Objets de la MIB)(suite)Encoder le champ Valeur (Objets de la MIB)(suite)

• OBJECT IDENTIFIER (Tag = 6)

— Les deux premiers composants sont encodés selon la formule : premier 40 (décimal) + Second (ici 1x40+3=43

— Les composants suivants sont codés de manière indépendante— Chacun est codé comme entier non-négatif en utilisant aussi peu de blocs

de 7 bits que possible— Chaque bloc de 7 bits est enfermé dans un octet avec le bit de poids fort a

1, sauf pour le dernier bloc de chaque sous-identifiant— Exemple : 1.3.6.1.4.1.7.200 est codé 06 08 2b 06 01 04 01 07 81 48 (hexa)

• SEQUENCE and SEQUENCE OF (Tag = 16)— Concaténation des codages BER des valeurs des composants, dans l'ordre

de la définition

— Exemple :– Définition : SEQUENCE (INTEGER,INTEGER)– Valeur : (7,11)– Codé en 30 06 02 01 07 02 01 0b (en hexadécimal)

Page 19: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Message Get Request avec SNMPv1 Message Get Request avec SNMPv1

30 27 02 01 00 04 05 61 64 6D 69 6E A0 1B 02 03 00 00 0C 02 01 00 02 01 00 30 0E 30 0C 06 08 2B 06 01 02 01 01 03 00 05 00

Type lengthValue

Field type

Sequence

Integer

String

Integer

Integer

Integer

Sequence

Sequence

Object ID

Null

Context-specificconstructed

Length

39

1

5

27

3

1

1

14

12

8

0

Value

0

admin

12

0

0

0

Get-request

MIBdescriptor

sequence of 0x27 octets

Version number - 1 = version 1

Community name “admin”

get-request length 0x1B

Request ID 12

Error status = 0

Error index = 0

1.3.6.1.2.1.1.3.0 › SYSUPTIME

Comments

30 27

02 01 00

04 05 61 64 6D 69 6E

A0 1B

02 03 00 00 0C

02 01 00

02 01 00

30 0E

30 0C

06 08 2B 06 01 02 01 01 03 00

05 00

Page 20: Structures des PDU SNMP Chapitre 4. Format du message SNMPv1 Le champ version permet à un nouveau format de message d’être identifié —Permet de s'assurer

Message Get Response avec SNMPv1 Message Get Response avec SNMPv1

30 2A 02 01 00 04 05 61 64 60 69 6E A2 1E 02 03 00 00 0C 02 01 00 02 01 00 30 11

Type lengthValue

Field type

Sequence

Integer

String

Integer

Integer

Integer

Sequence

Sequence

Object ID

Context-specificconstructed

Length

42

1

5

30

3

1

1

17

15

8

3

Value

0

admin

12

0

0

Get-response

MIBdescriptor

sequence of 0x2A octets

Version number - 1 = version 1

Community name “admin”

Get-response with length 0x1E

Request ID 0x0C

Error status

Error index

1.3.6.1.2.1.1.3.0 › SYSUPTIME

Time of 7 minutes 10 seconds

Comments

30 2A

02 01 00

04 05 61 64 6D 69 6E

A2 1E

02 03 00 00 0C

02 01 00

02 01 00

30 11

30 0F

06 08 2B 06 01 02 01 01 03 00

43 03 00 A7 F8Applicationwide

TimeTickshundredthsof a second

30 0F 06 08 2B 06 01 02 01 01 03 00 43 03 00 A7 F8

Data link header IP UDP