Formát paketu SNMP

Snmp Packet Format



Jít do: https://blog.51cto.com/xleft/1895630

Začínáme s protokolem SNMP



1. Úvod



Správa sítě založená na TCP / IP se skládá ze tří komponent:



1) Management Information Base (MIB). Management Information Base obsahuje všechny parametry všech procesů agentů, na které lze dotazovat a upravovat je. RFC 1213 [McCloghrie and Rose 1991] definuje druhé vydání MIB s názvem MIB-II.

2) Společná sada struktur a reprezentací pro MIB. Nazývá se to Struktura manažerských informací (SMI). To je definováno v RFC 1155 [Rose a McCloghrie 1990]. Například čítač definice SMI je nezáporné celé číslo, jehož počet je 0 ~ 4294967295. Když dosáhne maximální hodnoty, začne počítat od 0.

3) Proces řízení s Proces agenta Komunikační protokol mezi nimi se nazývá Simple Network Management Protocol (SNMP). Definováno v RFC 1157 [Case et al. 1990]. SNMP zahrnuje formát výměny datagramů apod. Ačkoli na transportní vrstvě lze použít různé protokoly, nejpoužívanějším protokolem v SNMP je UDP.

2, přehled protokolu SNMP

Simple Network Management Protocol (SNMP) je sada protokolů správy sítě definovaná Internet Engineering Task Force (IETF). Protokol je založen na protokolu Simple Gateway Monitor Protocol (SGMP). Pomocí protokolu SNMP může stanice pro správu vzdáleně spravovat všechna síťová zařízení, která tento protokol podporují, včetně monitorování stavu sítě, úpravy konfigurace síťového zařízení a přijímání upozornění na síťové události. Ačkoli byl protokol SNMP původně vyvinut pro správu sítí založených na protokolu IP, byl úspěšně používán jako průmyslový standard pro správu telefonních sítí.

3. Historie vývoje SNMP

SNMP prošel relativně dlouhým vývojovým procesem a doposud prošel třemi verzemi. Nejčastěji používaným momentem je SNMPv2.

l První verze protokolu SNMP byla vydána v roce 1989 pod názvem SNMPv1.

l V roce 1991 byl vydán dodatek k SNMP - RMON (Remote Network Monitoring). RMON rozšiřuje možnosti protokolu SNMP, včetně správy sítí LAN a správy zařízení k nim připojených. Poznámka: RMON nemění a nepřidává samotný protokol SNMP a SMI. Pouze zvyšuje schopnost protokolu SNMP sledovat podsítě a monitoruje celou podsíť jako jednotlivce a poskytuje novou knihovnu MIB a související chování MIB.

l V roce 1993 byla představena upgradovaná verze SNMPv1, SNMPv2.

l V roce 1995 byl oficiálně vydán SNMPv2. v2 přidal funkci SNMPv1 a určil, jak používat SNMP v síti založené na OSI. Zároveň se letos RMON rozšířil na RMONv2.

l V roce 1998 byl vydán SNMPv3. Řada dokumentů definovala zabezpečení SNMP a definovala celkovou strukturu budoucích vylepšení. SNMPv3 lze použít s v2 a v1.

4, pracovní princip SNMP

SNMP používá speciální model klient / server, model agenta / stanice pro správu. Správa a údržba sítě se provádí prostřednictvím interakce mezi pracovní stanicí pro správu a agentem SNMP. Každý agent SNMP slave je zodpovědný za zodpovězení různých dotazů ze stanice správy SNMP (hlavní agent) ohledně informací o definici MIB.

Scénář aplikace SNMP je znázorněn na obrázku 1:

wKiom1iZZZvCbfdRAAFlZOfCvJg493.png-wh_50

Stanice pro správu a agent používají MIB pro sjednocení rozhraní a MIB definuje spravované objekty v zařízení. Řídicí stanice i agent implementují odpovídající objekt MIB, takže obě strany mohou navzájem identifikovat data a implementovat komunikaci. Stanice pro správu požaduje od agenta data definovaná v MIB. Poté, co agent identifikuje data, jsou data související se stavem nebo parametry poskytnutými zařízením pro správu převedena do formátu definovaného MIB a nakonec jsou informace vráceny do stanice pro správu k dokončení operace správy.

5. Typ zprávy SNMP

V SNMP je definováno pět typů zpráv: Get-Request, Get-Response, Get-Next-Request, Set-Request a Trap.

(1) Získat požadavek, Získat další požadavek a Získat odpověď

Stanice pro správu SNMP načítá informace ze síťového zařízení, které vlastní agenta SNMP, pomocí zprávy Get-Request, zatímco agent SNMP odpovídá zprávou Get-Response. Get-Next-Request se používá v kombinaci s Get-Request k dotazu na prvky sloupce v konkrétním objektu tabulky.

(2) Set-Request Stanice pro správu SNMP může použít Set-Request ke vzdálené konfiguraci síťového zařízení (včetně názvu zařízení, atributů zařízení, odstranění zařízení nebo zajištění platnosti / neplatnosti atributu zařízení).

(3) Agent Trap SNMP odešle zprávu bez vyžádání do stanice pro správu SNMP. Toto se používá k popisu výskytu události, jako je změna rozhraní UP / DOWN a změna adresy IP.

Z výše zmíněných pěti druhů zpráv zasílá řídicí stanice Get-Request, Get-Next-Request a Set-Request na port 161 na straně agenta, přičemž poslední dvě Get-Response a Trap jsou zasílány procesem agenta do proces správy, přičemž zpráva Trap je odeslána na port 162 procesu správy a všechna data jsou zapouzdřena v UDP.

Pracovní postup SNMP je znázorněn na obrázku 2:

wKiom1iZZjfz2FGQAAGIv44jq5I899.png

6, formát zprávy SNMP

Agent SNMP a řídící stanice komunikují prostřednictvím standardních zpráv v protokolu SNMP, přičemž každá zpráva je samostatným datagramem. SNMP používá UDP (User Datagram Protocol) jako protokol vrstvy 4 (Transport Protocol) pro provoz bez připojení. Zpráva zprávy SNMP se skládá ze dvou částí: hlavičky SNMP a datové jednotky protokolu PDU.

wKioL1iZZpfyrj4AAAC__6vCF5c083.png

Ve skutečném prostředí přenosu v síti závisí délka paketu SNMP na použité metodě kódování. SNMP používá pravidla kódování BER (Basic Encoding Rule) a oficiální specifikace SNMP používá syntaxi ASN.1, Abastract Syntax Notation v1, což je abstraktní jazyk popisu syntaxe. Tyto dva koncepty budou dále představeny v pozdější praxi, takže o nich musíme jen trochu vědět a nebrání to naší analýze samotné dohody. Zde stručně vysvětlíme pravidla kódování BER:

BER, jako základní pravidlo kódování ANS.1, popisuje, jak je konkrétní objekt ANS.1 kódován jako bitový proud pro přenos po síti. Pravidlo kódování BER se skládá ze tří částí:

wKioL1iZZt7TyGJnAAC4BpSuPEA705.png

V SNMP je definováno několik základních datových typů, z nichž některé jsou změněny ve v1 a v2. Podrobnosti najdete v příslušné dokumentaci RFC. Zde uvádíme pouze nejběžnější typy:

l INTEGER: celé číslo

l Řetězec OCTER: 0 nebo více 8bitových bajtů, každý bajt je mezi 0 ~ 255

l DisplayString: 0 nebo více 8 bitových bajtů, každý bajt musí být kód ASCII. V MIB-II nesmí všechny proměnné tohoto typu přesáhnout 255 znaků (může být 0 znaků)

l NULL: představuje příslušnou proměnnou nemá žádnou hodnotu

l IpAddress: 4bajtový řetězec OCTER STRING, který představuje IP adresu v pořadí bajtů v síti.

l PhyAddress: 6bajtový řetězec OCTER, představující fyzickou adresu

l Počítadlo: Nezáporné celé číslo, které lze zvýšit od 0 do 232-1 (). Po dosažení maximální hodnoty se vraťte na nulu

l TimeTicks: Časový čítač se zvýší o 0,01 sekundy. Různé proměnné mohou mít různé přírůstky. Při definování tohoto typu proměnné tedy musíte vytvořit přírůstkový rozsah.

l SEKVENCE: podobná struktuře v jazyce C.

l SEKVENCE: vektor, viz část Podrobnosti syntaxe ANS.1 dále

Pakety SNMP jsou zapouzdřeny v paketech UDP na transportní vrstvě a UDP je založeno na sítích IP. Proto můžeme získat úplnou strukturu popisu paketů, jak ukazuje následující obrázek:

wKiom1iZZyLiZTu7AAMAQpFqyWw749.png

Typ PDU ve skutečnosti obsahuje dva bajty. První bajt označuje typ skutečné PDU, druhý bajt označuje celkový počet bajtů obsazených následnou zprávou. U protokolu SNMPv1 je hodnota tohoto pole následující:

Tabulka 1 Typ PDU

Typ PDU

název

0

dostat-žádost

1

get-next-request

dva

dostat odpověď

3

set-request

4

past

Jinými slovy, typ pasti je 4. Avšak v datovém paketu je pole obecně reprezentováno jako ax, kde x je bráno jako [0, 4], to znamená, že a0 ~ a3 označuje odpovídající operace, jako je get a nastavit a a4 označuje zprávu trap. Kromě pole typu neočekávaně jsou v BER kódována další pole:

wKioL1iZaBHCnzq5AAGP0c5QGso693.png

Analýza formátu skutečného cvičení

Formát paketu Trap se mírně liší od formátu zobrazeného na obrázku 5. Zde analyzujeme pouze pakety Trap SNMPv1 a SNMPv2. Část před zprávou o trapu je stejná, což se liší od datové jednotky protokolu PDU.

Trap SNMPv1 Zpráva

Formát paketu SNMPv1 Trap je následující:

wKioL1iZaHvgo8FjAAFlmbiEr7A765.png

Poznámka: Kromě polí Typ PDU a Délka PDU je každé z následujících polí kódováno BER.

Typ depeše může nabývat následujících hodnot, kde 0 ~ 6 jsou definovány konkrétní depeše a typy 7 a novější jsou přizpůsobeny prodejcem.

Tabulka 2 informace o typu pasti, názvu a popisu

Typ pasti

název

Popis

0

studený start

Proces proxy se inicializuje sám

1

teplý start

Proces proxy se znovu inicializuje

dva

linkDown

Rozhraní se změnilo z funkčního na vadné (první proměnná ve zprávě toto rozhraní identifikuje)

3

spojit

Rozhraní se změnilo ze stavu poruchy na funkční stav (první proměnná ve zprávě toto rozhraní identifikuje)

4

selhání autentizace

Přijata neplatná komunitní zpráva z procesu správy SNMP

5

egpNe NeighborLoss

Soused EGP se stal vadným (první proměnná ve zprávě obsahuje sousední IP adresu)

6

specifické pro podnik

Vyhledejte informace o pasti v tomto konkrétním fragmentu kódu


Zachyťte následující zprávu SNMP prostřednictvím nástroje pro zachytávání paketů wirehark a poté ji pečlivě analyzujte.

Obsah původní zprávy SNMPv1:

00 23 5a 9e 58 b9 00 4c41 49 50 55 08 0045 00 00 48 00 00 40 00 40 11 a54e c0 a8 0a 01 c0 a8 0a 05 0c 00 00 a2 00 34 ff e0 30 2a 02 01 00 04 06 70 75 62 6c 69 63 a4 1d 06 0a 2b 06 01 04 01 bf 08 03 02 0a 40 04 c0 a8 0a 01 02 01 00 02 01 00 4301 0e 30 00

Cílový MAC: 00 23 5a 9e 58 b9

Zdroj MAC: 00 4c 41 49 50 55

Typ protokolu: 08 00, pro IP datagram

IP hlavička: 45 00 00 48 00 00 40 00 40 11 a5 4e c0a8 0a 01 c0 a8 0a 05 0c

Záhlaví UDP: 0c 00 00 a2 00 34 ff e0

Zbytek jsou zprávy SNMP a poté je analyzujeme jeden po druhém proti předchozí struktuře zpráv.

n 30 označuje, že zpráva SNMP je typu SEKVENCE ASN.1

n 2a označuje, že celková délka zprávy SNMP je 42 (0x2a) bajtů a délka zprávy indikovaná polem začíná od prvního bajtu po něm až do konce zprávy

n 02 01 00 označuje číslo verze, což ukazuje, že se skutečně jedná o metodu kódování BER. 02 označuje, že pole je typu INTEGER 01 označuje, že pole zabírá 1 bajt 00 označuje číslo verze a hodnota je „číslo verze-1“

n 04 06 70 75 62 6c 69 63 označuje název komunity, 04 označuje, že pole je OCTET STRING typ 06 označuje, že pole zabírá 6 bytů 70 75 62 6c 69 63 označuje hexadecimální formu kódu ANSII názvu komunity, zde je „veřejné“

n a4 1d, kde '4' v a4 označuje, že se jedná o zprávu trap, a4 se také nazývá popisek zprávy 1d označuje, že existuje 29 (0x1d) bajtů dat

n 06 0a 2b 06 01 04 01 bf 08 03 02 0a Logo Enterprise OID. 06 označuje, že pole je identifikátor objektu, OBJECT IDENTIFIER 0a označuje, že pole zabírá 10 (0x0a) bajtů, což je poněkud zvláštní metoda kódování SNMP OID: například 1.3.6.1.2 .... Pro x a y. Při kódování 40 * x + y, kde x = 1, y = 3, je výsledek 40 * 1 + 3 = 43, což znamená 2b v šestnáctkové soustavě. Proto je zde podnikový OID kód 1.3.6.1.4.1.8072.3.2.10

n 40 04 c0 a8 0a 01 Totéž 40 označuje, že pole je typu OCTET STRING 04 označuje, že IP adresa je 4 bajty, IP adresa je 192.168.10.1

n 02 01 00, kde 00 označuje, že typ pasti je studený Start

n 02 01 00, kde 00 znamená, že past, kterou jsme zadali, to znamená, že specific-trap je také typ coldStart

n 43 01 0e 43 je reprezentován jako TimeTicks typ 01 znamená, že pole zabírá 1 bajt 0e znamená desítkově 14 znamená, že časový štítek je 0,14 sekundy, kde je časový čítač zvýšen o 0,01 sekundy

n 30 00 30 označuje, že typ kódování dvojice hodnot „klíč – hodnota“ je SEQUENCE 00 označuje, že pole zabírá 0 bajtů, to znamená, že takové pole neexistuje.

Trap SNMPv2 Zpráva

Formát paketu SNMPv2 Trap je zobrazen na obrázku 8.

wKioL1iZaUfiiV1iAAEZg60hRxI365.png

Podobně, kromě toho, že typ depeše a délka paketu jsou standardní pořadí bajtů v síti, zbývající pole protokolu jsou také kódování BER. Vidíte, že verze v2 trapového paketu se vyvíjí do jednotného formátu paketu. Je to velmi podobné normálním paketům požadavků a odpovědí SNMP.

Obsah původní zprávy SNMPv2:

00 23 5a 9e 58 b9 00 4c41 49 50 55 08 00 45 0000 7b 00 00 40 00 40 11 a5 1b c0 a8 0a 01 c0 a8 0a 05 0c 01 00 a2 00 67 04 bb 30 5d 02 0 101 04 06 70 75 62 6c 69 63 a7 50 02 04 17 73 2c fb 02 01 00 02 01 00 3042 30 0d 06 08 2b 06 01 02 01 01 03 00 43 01 0e 30 17 06 0a2b 06 01 06 03 01 01 04 0100 06 09 2b 06 01 06 03 01 01 05 01 30 18 06 0a 2b 06 01 06 03 01 01 04 03 0006 0a 2b 06 01 04 01 bf 08 03 02 0a

Cílový MAC: 00 23 5a 9e 58 b9

Zdroj MAC: 00 4c 41 49 50 55

Typ protokolu: 08 00, IP paket

Záhlaví IP: 45 00 00 7b 00 00 40 00 40 11 a5 1b c0a8 0a 01 c0 a8 0a 05

Záhlaví UDP: 0c 01 00 a2 00 67 04 bb

Zbytek obsahu je veškerý obsah zpráv SNMP, zde uvádíme jednoduchou konvenci:

Typ štítku xx Délka štítku xx Štítek skutečných dat štítku xx.

Tímto způsobem se lépe analyzují výše uvedená nezpracovaná data.

n 30 5d Režim kódování celého paketu SNMP je 30, tj. typ SEQUENCE, a délka paketu je 93 (0x5d) bajtů.

n 02 01 01 Verze 01 je verze v2

n 04 06 70 75 62 6c 69 63 Název skupiny 70 75 62 6c 69 63 Angličtina „public“

n a7 50 a7 ​​označuje, že typ depeše je 7, to znamená, že depeše 50 definovaná dodavatelem označuje, že segment PDU odpovídá 80 (0x50) bajtů

n 02 04 17 73 2c fb ID požadavku je 73 73 2c fb desítkově 393424123

n 02 01 00 chybový stav 0

n 02 01 00 index chyb 0

n 30 42 „Variabilní název-hodnota“ párové kódování typu 30 je typ SEQUENCE „proměnná název-hodnota“ zabírá celkový bajt 0x42, tj. 66 bytů

n 30 0d 06 08 2b 06 01 02 01 01 03 00 43 01 0e První režim kódování segmentu páru „název-hodnota“ 30 je typ SEQUENCE první pár „název-hodnota“ celková délka 0x0d, 13 bajtů První název proměnné má typ kódování 0x06, časový štítek první název proměnné zabírá 0x08 bajtů první název proměnné 2b 06 01 02 01 01 0300, což je 1.3.6.1.2.1.1.3.0 Hodnota proměnné je 0x0e, což je 14

n 30 17 06 0a 2b 06 01 06 03 01 01 04 01 0006 09 2b 06 01 06 03 01 01 05 01 Druhá proměnná párů „název-hodnota“ název proměnné 1.3.6.1.6.3.1.1.4.1.0 Hodnota 1.3. 6.1.6.3.1.1.5.1

n 30 18 06 0a 2b 06 01 06 03 01 01 03 03 0006 0a 2b 06 01 04 01 bf 08 03 02 0a Třetí pár „název-hodnota“ spáruje název proměnné 1.3.6.1.6.3.1.1.4.3.0 Hodnota proměnné je 1.3.6.1.4.1.8072.3.2.10

© Copyright patří autorovi: Původní díla od autora blogu 51CTO po vaší levici, pokud potřebujete dotisk, uveďte prosím zdroj, jinak bude nést odpovědnost