SNMP

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 20 maj 2020; kontroller kräver 4 redigeringar .
SNMP
namn Enkelt nätverkshanteringsprotokoll
Nivå (enligt OSI-modellen ) Applicerad
Familj UDP
Port/ID 161/ UDP ,162/ UDP
Syftet med protokollet Hantering av nätverksenheter
Specifikation RFC 1155 , RFC 1212 , RFC 1213 , RFC 1157 , RFC 3411
Huvudsakliga implementeringar (klienter) Inbyggd i alla nätverksoperativsystem
 Mediafiler på Wikimedia Commons

SNMP ( engelska  Simple Network Management Protocol  - ett enkelt nätverkshanteringsprotokoll) är ett standardinternetprotokoll för hantering av enheter i IP-nätverk baserat på TCP / UDP- arkitekturer . SNMP-aktiverade enheter inkluderar routrar, switchar, servrar, arbetsstationer, skrivare, modemställ och andra. Protokollet används ofta i nätverkshanteringssystem för att övervaka nätverksanslutna enheter för förhållanden som kräver administratörs uppmärksamhet. SNMP definieras av Internet Engineering Task Force (IETF) som en komponent i TCP/IP . Den består av en uppsättning standarder för nätverkshantering, inklusive ett applikationslagerprotokoll, ett databasschema och en uppsättning dataobjekt.

Översikt och grundläggande begrepp

När du använder SNMP övervakar eller hanterar en eller flera administrativa datorer (kallade managers ) en grupp värdar eller enheter i ett datornätverk. Varje hanterat system har ett permanent körande program som kallas en agent som kommunicerar information till chefen via SNMP .

SNMP-hanterade nätverk består av tre nyckelkomponenter:

En hanterad enhet  är ett nätverkselement (hårdvara eller programvara) som implementerar ett hanteringsgränssnitt (inte nödvändigtvis SNMP) som tillåter enkelriktad (skrivskyddad) eller dubbelriktad åtkomst till specifik information om elementet. Hanterade enheter delar denna information med chefen. Hanterade enheter kan hänvisa till alla typer av enheter: routrar, åtkomstservrar, switchar, bryggor, hubbar, IP-telefoner, IP-kameror, värddatorer, skrivare, etc.

En agent är en mjukvarumodul för nätverkshantering som finns på en hanterad enhet eller på en enhet som är ansluten till hanteringsgränssnittet för en hanterad enhet. Agenten har lokal kunskap om ledningsinformation och översätter denna information till eller från en SNMP-specifik form (datamediering).

Network Management System ( NMS ) är en applikation som övervakar och kontrollerar hanterade enheter. NMS tillhandahåller huvuddelen av den databehandling som behövs för nätverkshantering. Alla hanterade nätverk kan ha en eller flera NMS.

Management Information Bases (MIBs)

Eftersom adresserna till enhetsobjekt är definierade i digitalt format är de svåra att komma ihåg. För enkelhetens skull används ledningsinformationsbaser (MIB). MIB beskriver strukturen för hanterad data på ett enhetsdelsystem; de använder ett hierarkiskt namnutrymme som innehåller objektidentifierare (OID). Varje OID består av två delar: ett textnamn och en numerisk SNMP-adress. MIB:er är valfria och spelar en stödjande roll vid översättning av objektnamnet från mänskligt (ord) till SNMP (numeriskt) format. Mycket lik DNS- servrar. Eftersom strukturen för objekt på enheter från olika tillverkare inte stämmer överens är det nästan omöjligt att bestämma de digitala SNMP-adresserna för de erforderliga objekten utan MIB-basen. MIB använder den notation som anges i ASN.1 .

Protokolldetaljer

SNMP arbetar på TCP/IP-applikationslagret (lager 7 i OSI-modellen). SNMP-agenten tar emot förfrågningar på UDP-port 161. Hanteraren kan skicka förfrågningar från vilken tillgänglig källport som helst till agentporten. Agentens svar kommer att skickas tillbaka till källporten på managern. Chefen tar emot notiser (Traps och InformRequests) på port 162. Agenten kan generera notiser från vilken tillgänglig port som helst. När du använder TLS eller DTLS tas förfrågningar emot på port 10161 och traps skickas på port 10162.

SNMPv1 specificerar fem grundläggande protokolldataenheter (PDU). Ytterligare två PDU:er, GetBulkRequest och InformRequest, introducerades i SNMPv2 och portades till SNMPv3.

Alla SNMP PDU:er är byggda enligt följande:

IP-huvud (IP-huvud) UDP-huvud (UDP-huvud) version (version) community (lösenord) PDU-typ (PDU-typ) request-id (request id) felstatus (felstatus) felindex (felindex) variabelbindningar (bundna variabler)

De sju SNMP-protokollutbytesenheterna listas nedan:

Få förfrågan

En begäran från en chef till ett objekt för att få värdet på en variabel eller en lista med variabler. De nödvändiga variablerna anges i variabelbindningsfältet (delen av värdefältet används inte). Att hämta värdena för den angivna variabeln måste utföras av agenten som en Atomic-operation . Chefen kommer att returneras ett svar med de aktuella värdena.

setrequest

En begäran från en chef till ett objekt om att ändra en variabel eller lista med variabler. Bundna variabler anges i brödtexten i begäran. Ändringar av alla specificerade variabler måste utföras av agenten som en atomär operation. Ett svar kommer att returneras till chefen med de (nuvarande) nya värdena för variablerna.

GetNextRequest

En begäran från en chef till ett objekt för att upptäcka tillgängliga variabler och deras värden. Ett svar med tillhörande variabler kommer att returneras till managern för variabeln som är nästa i MIB i lexikografisk ordning . Att kringgå hela agent-MIB kan göras genom att iterativt använda GetNextRequest från OID 0. Tabellrader kan läsas genom att ange kolumn-OID i de associerade variablerna i begäran.

GetBulkRequest

En förbättrad version av GetNextRequest. Begäran från chef till objekt för flera iterationer av GetNextRequest. Ett svar kommer att returneras till chefen med flera associerade variabler som korsas med början med de associerade variablerna i begäran. De PDU-specifika icke-repeterarna och maxupprepningsfälten används för att styra svarets beteende. GetBulkRequest introducerades i SNMPv2.

Svar

Returnerar associerade variabler och värden från agenten till chefen för GetRequest, SetRequest, GetNextRequest, GetBulkRequest och InformRequest. Felmeddelanden tillhandahålls av felstatus- och felindexfält.

Denna enhet används som svar på både Get och Set-förfrågningar och kallas GetResponse i SNMPv1.

Trap

Asynkront meddelande från agenten till chefen. Inkluderar det aktuella värdet av sysUpTime, ett OID som identifierar fälltypen och valfria associerade variabler. Destinationsadressering för traps bestäms med användning av trapkonfigurationsvariabler i MIB. Trappmeddelandeformatet har ändrats till SNMPv2 och PDU har bytt namn till SNMPv2-Trap.

Informera Begäran

Asynkront meddelande från chef till chef eller från agent till chef. Manager-till-manager-aviseringar var redan möjliga i SNMPv1 (med Trap), men SNMP körs vanligtvis på UDP, där meddelandeleverans inte garanteras och inga förlorade paket rapporteras. InformRequest fixar detta genom att skicka tillbaka en bekräftelse på mottagning. Mottagaren svarar med ett svar som upprepar all information från InformRequest. Denna PDU introducerades i SNMPv2.

Utveckling och användning

Version 1

SNMP version 1 (SNMPv1) är den ursprungliga implementeringen av SNMP-protokollet. SNMPv1 fungerar med protokoll som UDP, IP, CLNS, DDP och IPX. SNMPv1 används flitigt och är de facto nätverkshanteringsprotokollet i Internetgemenskapen.

De första RFC:erna för SNMP, nu känd som SNMPv1, dök upp 1988:

Dessa protokoll har reviderats i följande RFC:er:

Efter en tid ersattes RFC 1156 (MIB-1) av den mer vanliga:

Version 1 har kritiserats för dålig säkerhet. Autentisering av klienter utfördes endast med hjälp av den sk. "gemensam sträng" (gemenskapssträng), faktiskt lösenordet, som överfördes i klartext. Utvecklingen av SNMPv1 på 1980-talet utfördes av en grupp människor som ansåg det officiellt finansierade HEMS/CMIS/CMIP-arbetet från OSI/IETF/NSF-organisationerna som både orealiserbart på dåtidens datorplattformar och potentiellt oanvändbart. SNMP godkändes av tron ​​att det var ett mellanprotokoll som behövdes för att ta steg mot en storskalig utbyggnad av Internet och dess kommersialisering. På den tiden var en autentiserings-/säkerhetsstandard en dröm och omintetgjordes av protokollutvecklingsgrupper.

Version 2

SNMPv2 ( RFC 1441 - RFC 1452 ) reviderar version 1 och inkluderar förbättringar av prestanda, säkerhet, integritet och kommunikation mellan chefer. Protokollet introducerade GetBulkRequest, ett alternativ till den iterativa användningen av GetNextRequest för att få en stor mängd kontrolldata i en enda begäran. Samtidigt fick den nya sidobaserade SNMPv2-säkerheten aldrig någon utbredd användning, eftersom den av många ansågs vara för komplex.

Gemenskapsbaserad SNMPv2 (SNMPv2c) definieras i RFC 1901 - RFC 1908 . I sin linda var denna version informellt känd som SNMPv1.5. SNMPv2c inkluderar SNMPv2 utan dess kontroversiella säkerhetsmodell; istället används ett enkelt communitybaserat säkerhetsschema från SNMPv1. SNMPv2c har ofta setts som den de facto SNMPv2-standarden, trots att det officiellt bara var en "Draft Standard".

Användarbaserad SNMPv2 (SNMPv2u) definieras i RFC 1909 - RFC 1910 . Detta är i huvudsak en kompromiss som försöker erbjuda större säkerhet än SNMPv1, men utan den extra komplexiteten hos SNMPv2. En variant av denna version, SNMP v2*, kommersialiserades, och själva mekanismen antogs så småningom som ett av de två säkerhetsramverken i SNMP v3.

Interaktion mellan SNMPv1 och SNMPv2c

SNMPv2c har nu fastställts vara inkompatibel med SNMPv1 inom två nyckelområden: meddelandeformat och protokolloperationer. SNMPv2c-meddelanden använder andra format för header och protocol data unit (PDU) än SNMPv1. Dessutom använder SNMPv2c två protokolloperationer som inte är definierade i SNMPv1. Dessutom definierar RFC 2576 två möjliga samexistensstrategier för SNMPv1/v2c: proxyagenter och tvåspråkiga nätverkshanteringssystem.

Proxyagenter

En SNMPv2- agent kan agera som proxyagent på uppdrag av SNMPv1-hanterade enheter, enligt följande:

  • Nätverkshanteringssystem (NMS) SNMPv2 utfärdar kommandon avsedda för SNMPv1-agenten.
  • NMS skickar ett SNMP-meddelande till SNMPv2-proxyagenten.
  • Proxyagenten vidarebefordrar Get-, GetNext- och Set-meddelandena till SNMPv1-agenten utan ändringar.
  • GetBulk-meddelanden konverteras av proxyagenten till GetNext-meddelanden och vidarebefordras sedan till SNMPv1-agenten.

Proxyagenten mappar SNMPv1-fällor till SNMPv2-fällor och vidarebefordrar dem sedan till NMS.

Tvåspråkiga nätverkshanteringssystem

Tvåspråkiga SNMPv2-nätverkshanteringssystem stöder både SNMPv1 och SNMPv2. För att stödja en sådan miljö måste kontrollapplikationen i det tvåspråkiga NMS kommunicera med agenten. NMS analyserar sedan informationen som lagras i den lokala databasen för att avgöra om agenten stöder SNMPv1 eller SNMPv2. Baserat på denna information kommunicerar NMS med agenten med hjälp av lämplig version av SNMP.

Version 3

Även om SNMPv3 inte medför några ändringar i protokollet förutom att lägga till kryptografisk säkerhet, är det en förbättring genom nya textkonventioner, koncept och terminologi.

Säkerhet har varit ett stort problem med SNMP sedan starten. Autentisering i SNMP version 1 och 2 var inte mer än ett lösenord (gemenskapssträng) som skickades i klartext mellan chefen och agenten.

Till skillnad från SNMPv1 och v2, i SNMPv3 innehåller varje meddelande säkerhetsparametrar som är kodade som en oktettsträng. Innebörden av dessa parametrar beror på vilken säkerhetsmodell du använder.

SNMPv3 tillhandahåller viktiga säkerhetsfunktioner:

  • Autentisering - bestämma meddelandets ursprung.
  • Konfidentialitet - Kryptering av paket för att skydda mot avlyssning.
  • Integritet - förhindrande av ändringar av meddelanden under överföring, inklusive en extra mekanism för att skydda mot återsändning av ett fångat paket.

Sedan 2004 har IETF erkänt SNMPv3 enligt definitionen i RFC 3411 , RFC 3418 (även känd som STD0062) som den nuvarande standardversionen av SNMP. IETF har markerat SNMPv3 som en komplett Internetstandard, vilket är den högsta nivån av RFC-beredskap. Samtidigt anses tidigare versioner vara föråldrade (betecknas som "historiska" - Historiska).

I praktiken stöder SNMP-implementeringar ofta flera versioner: v1, v2c och v3.

Implementeringsproblem

SNMP-implementeringar varierar mellan plattformsleverantörer. I vissa fall anses SNMP inte vara tillräckligt seriöst för ett kärnutvecklingsobjekt och är därför bara en valfri funktion. Vissa större hårdvaruleverantörer tenderar att överutvidga sina egna kommandoradsgränssnitt (CLI) och kontrollsystem.

Den till synes enkla trädstrukturen och linjära indexeringen i SNMP är inte alltid väl förstådd inom de interna datastrukturerna som är delar av den underliggande plattformsdesignen. Därför kan bearbetning av SNMP-förfrågningar på vissa datauppsättningar leda till mer CPU-overhead än nödvändigt. Ett exempel på detta problem är stora routingtabeller som BGP och IGP.

Resursindexering

Modulära enheter kan dynamiskt öka eller minska sina SNMP-index (även kallade fall) när hårdvara läggs till eller tas bort. Detta används oftast med hårdvara, även om virtuella gränssnitt har samma effekt. Indexvärden tilldelas vanligtvis vid uppstart och förblir oförändrade tills nästa omstart. Hårdvaruindex eller virtuella enheter som läggs till under en aktiv enhet kan tilldelas i slutet av det befintliga intervallet och eventuellt omtilldelas vid nästa omstart.

Säkerhet

  • SNMP version 1 och 2c är känsliga för paketsniffning med meddelandesträngar eftersom de inte använder kryptering.
  • Alla versioner av SNMP är mottagliga för brute force och ordboksattacker för att gissa community-strängar, autentiseringssträngar, autentiseringsnycklar, krypteringssträngar eller krypteringsnycklar eftersom de inte använder utmaning-svar-handskakning.
  • Medan SNMP fungerar med TCP och andra protokoll, används det vanligtvis med UDP, som är anslutningslöst och sårbart för IP-spoofingattacker. Enhetsåtkomstlistor kan användas för att begränsa SNMP-åtkomst, men SNMPv3-säkerhetsmekanismer kan också framgångsrikt förhindra attacker.
  • De omfattande SNMP-konfigurationsalternativen utnyttjas inte fullt ut av många leverantörer, delvis på grund av bristande säkerhet i versioner av SNMP före SNMPv3, och även på grund av att många enheter helt enkelt inte kan konfigureras med ändringar av ett enda MIB-objekt.
  • SNMP toppade SANS Institutes lista över "Common Default Configuration Issues" med frågan om att initialt ställa in community-strängar till "public" och "private" och rankades som tionde i SANS Top 10 Most Critical Internet Security Threats 2000.

Automatisk inställning

SNMP i sig är bara ett protokoll för att samla in och organisera information. De flesta SNMP-implementerande verktygssatser erbjuder någon form av upptäcktsmekanism (en standardiserad samling av data som är gemensam för de flesta plattformar och enheter) för att få en ny användare eller artist vid start. En av dessa funktioner är ofta en form av automatisk konfiguration, där nya enheter som upptäcks i nätverket automatiskt pollas. I fallet med SNMPv1 och SNMPv2c är detta en säkerhetsrisk eftersom SNMP-läsgemenskaperna kommer att sändas i klartext på målenheten. Även om säkerhetskraven varierar från organisation till organisation, bör försiktighet iakttas när du använder den här funktionen, särskilt i miljöer som datacenter för blandade hyresgäster, servervärdanläggningar och liknande miljöer.

Exempel på användning av SNMP-verktyg

snmpset och starta om Cisco as53xx

  • Konfigurera SNMP på Cisco as53xx
as5350>sv Lösenord: as5350#conf t Ange konfigurationskommandon, ett per rad. Avsluta med CNTL/Z. Lista #1: Tillåt åtkomst från nätverk 10.26.95.224/27 eller 255.255.255.224
  • Lista #1: Tillåt åtkomst från nätverk 10.26.95.224/27 eller 255.255.255.224
as5350(config)#access-list 1 permit 10.26.95.224 0.0.0.31
  • Lista #2: Tillåt åtkomst från IP 10.26.95.254 och 10.26.95.251
as5350(config)#access-list 2 tillåter värd 10.26.95.254 as5350(config)#access-list 2 tillåter värd 10.26.95.251
  • Konfigurerar snmp-server för att läsa och skriva med community-strängen xxas5300xx. SNMP-åtkomst tillåts endast för åtkomstlista 2 (för 2 IP-adresser, underförstått nekad för andra IP-adresser)
as5350(config)#snmp-servergemenskap xxas5300xx rw 2
  • Aktivera Cisco omstart via SNMP.
as5350(config)#snmp-server system-avstängning as5350(config)#exit
  • Låt oss köra kommandot för att starta om Cisco (parametrarna **.1.3.6.1.4.1.9.2.9.9.0 i 2** är hämtade från MIB ):
snmpset -v 2c -c xxas5300xx 10.26.95.231 ".1.3.6.1.4.1.9.2.9.9.0" i 2

RFC-länkar

  • RFC 1155 (STD 16) - Struktur och identifiering av kontrollinformation i nätverk baserat på TCP/IP-protokollstacken
  • RFC 1156 (Historisk) - Management Information Base for Network Management in Networks Based on TCP/IP Protocol Stack
  • RFC 1157 (historisk) - Simple Network Management Protocol (SNMP)
  • RFC 1213 (STD 17) - Management Information Base för nätverkshantering i nätverk baserad på TCP/IP Protocol Stack: MIB-II
  • RFC 1452 (Informationsinformation) - Samexistens mellan version 1 och 2 av Internet Standard Network Management Framework (reviderad i RFC 1908 )
  • RFC 1901 (experimentell) - Introduktion till gemenskapsbaserad SNMPv2
  • RFC 1902 (Draft Standard) - Kontrollinformationsramverk för SNMPv2 (reviderad i RFC 2578 )
  • RFC 1908 (Standards Track) - samexistens av version 1 och 2 av Internet Standard Network Management Framework
  • RFC 2570 (information) - Introduktion till version 3 av Internet Standard Network Management Framework (reviderad i RFC 3410 )
  • RFC 2578 (STD 58) - Control Information Framework Version 2 (SMIv2)
  • RFC 3410 (Informativ) - Överväganden för introduktion och tillämpning av Network Management Frameworks Internetstandard
  • STD62
    • RFC 3411  - Arkitektur för att beskriva SNMP Management Framework
    • RFC 3412  - Hantera och skicka meddelanden för SNMP
    • RFC 3413  - SNMP-applikationer
    • RFC 3414  - Användarbaserad säkerhetsmodell (USM) för SNMPv3
    • RFC 3415  - View-based Access Control Model (VACM) för SNMP
    • RFC 3416  - Protocol Operations Version 2 för SNMP
    • RFC 3417  - Transportbindningar för SNMP
    • RFC 3418  - Management Information Base (MIB) för SNMP
  • RFC 3430 (Experimentell) - SNMP över transportbindningar i TCP
  • RFC 3584 (BCP 74) - samexistens av version 1, 2 och 3 av Internet Standard Network Management Framework
  • RFC 3826 (föreslagen) - Advanced Encryption Standard (AES) krypteringsalgoritm i användarbaserad säkerhetsmodell i SNMP
  • RFC 5343 (föreslagen) - Context EngineID Discovery i SNMP
  • RFC 5590 (utkast) - Transportdelsystem för SNMP
  • RFC 5591 (utkast) - Transportsäkerhetsmodell för SNMP
  • RFC 5592 (föreslagen) - Säker skaltransportmodell för SNMP
  • RFC 5608 (föreslagen) - Användning av fjärrautentiseringsuppringningstjänst (RADIUS) i transportmodeller i SNMP
  • RFC 6353 (utkast) - TLS-transportmodell för SNMP

Länkar

Anteckningar

  1. Nätverkshanteringssystem