Slajd 1/22
Protokół SNMP – architektura, wersje i budowa
Cel slajdu: Przedstawienie architektury protokołu SNMP, jego ewolucji historycznej oraz fundamentalnych założeń modelu zarządzania siecią.

Standard zarządzania urządzeniami w sieciach IP

Simple Network Management Protocol (SNMP) to uniwersalny protokół warstwy aplikacji zdefiniowany przez IETF, stanowiący fundament telemetrii urządzeń aktywnych w sieciach teleinformatycznych.

  • Zastosowanie protokołu: Pobieranie metryk stanu sprzętowego, liczników transmisji, konfiguracja zdalna oraz asynchroniczne raportowanie awarii
  • Środowisko docelowe: Przełączniki warstwy L2/L3, routery, zapory sieciowe, zasilacze UPS, serwery Linux/Windows oraz drukarki sieciowe
  • Wersje protokołu: Trzy generacje standardu: SNMPv1 (1990), SNMPv2c (1996, liczniki 64-bitowe) oraz SNMPv3 (2002, kryptografia USM/VACM)
  • Stos komunikacyjny: Transport bezpołączeniowy UDP na portach 161 (odpytywanie agenta) oraz 162 (odbiór pułapek Traps/Informs)
Protokół SNMP (Simple Network Management Protocol): Otwarty standard IETF służący do monitorowania, zarządzania i wymiany informacji telemetrycznych pomiędzy stacjami NMS a urządzeniami sieciowymi.
Wprowadzenie do protokołu SNMP Protokół SNMP – architektura i budowa Część 2: Wersje v1/v2c/v3, bazy MIB, drzewo OID, modele USM i VACM 🌳 Drzewo OID 1.3.6.1.2.1 (mib-2) 🔐 SNMPv3 USM SHA-256 + AES 📜 Pliki MIB SMIv2, IF-MIB Architektura telemetryczna urządzeń sieciowych
Slajd 2/22
Spis treści prezentacji 2
Cel slajdu: Przedstawienie struktury zagadnień modułu drugiego poświęconego architekturze, strukturom MIB/OID oraz modelom bezpieczeństwa protokołu SNMP.

Układ materiału i plan wykładu

Materiał obejmuje pełną ścieżkę inżynierską: od fundamentów architektonicznych Menedżer-Agent, przez struktury MIB i kodowanie ASN.1/BER, po zaawansowane bezpieczeństwo SNMPv3 i konfigurację produkcyjną.

  • Blok 1: Architektura i wersje: Relacja Menedżer-Agent, baza MIB, ewolucja standardu i porównanie wersji v1, v2c oraz v3
  • Blok 2: Drzewo OID i struktury danych: Standard SMIv2, hierarchia gałęzi iso.org.dod.internet, kodowanie ASN.1/BER oraz bazy MIB-II i IF-MIB
  • Blok 3: Bezpieczeństwo i mechanizmy SNMPv3: Podatności community strings, model USM (HMAC-SHA, AES) oraz kontrola dostępu oparta na widokach VACM
  • Blok 4: Praktyka inżynierska i diagnostyka: Matematyka liczników, pułapki Traps/Inform, konfiguracja snmpd/RouterOS, narzędzia Net-SNMP i alternatywy (gNMI/YANG)
Plan dydaktyczny modułu 2: Zrozumienie wewnętrznych mechanizmów protokołu SNMP na poziomie pakietów i struktur danych w celu bezpiecznego i wydajnego projektowania telemetrii sieciowej.
Plan zagadnień prezentacji 2 Plan zagadnień prezentacji 2 Część I: Bazy MIB • Geneza i historia • Model Manager-Agent • Pliki MIB i ASN.1 • Hierarchia drzewa OID • Standard MIB-II • Grupa interfaces • Typy danych SMIv2 • Kodowanie BER/TLV Część II: Wersje i v3 • SNMPv1: ograniczenia • SNMPv2c: GetBulk • Architektura SNMPv3 • Model USM (HMAC/AES) • Kontrola dostępu VACM • Analiza zagrożeń • Porównanie v1/v2c/v3 • Transport UDP 161/162 Część III: Praktyka • Konfiguracja Linux/ROS • Narzędzia Net-SNMP • Matematyka pasma • Pułapki i Informy • Wireshark i inspekcja • Nowoczesne gNMI/YANG • Diagnostyka usterek • Test podsumowujący
Slajd 3/22
Ewolucja protokołu SNMP i zestawienie wersji v1, v2c oraz v3
Cel slajdu: Prześledzenie drogi rozwojowej protokołu SNMP od wczesnych specyfikacji do dojrzałego standardu kryptograficznego oraz bezpośrednie porównanie parametrów wersji.

Trzy generacje standardu SNMP i zestawienie cech

Ewolucja SNMP wynikała z konieczności obsługi coraz szybszych łączy transmisyjnych (wprowadzenie liczników 64-bitowych w v2c) oraz wyeliminowania krytycznych podatności bezpieczeństwa (kryptografia w v3).

  • SNMPv1 (RFC 1157, 1990): Prosta autoryzacja hasłem jawnym (community string); brak liczników 64-bitowych, ograniczony zestaw 5 operacji PDU
  • SNMPv2c (RFC 3416, 1996): Wprowadzenie operacji GETBULK (masowe pobieranie danych), liczników Counter64 oraz ujednoliconych pułapek; nadal hasło jawne bez szyfrowania
  • SNMPv3 (RFC 3411-3418, 2002): Pełna architektura bezpieczeństwa: integralność i uwierzytelnianie (HMAC-MD5/SHA), poufność (AES wg RFC 3826) oraz kontrola dostępu VACM
  • Kryteria doboru: SNMPv2c dopuszczalne jest wyłącznie w izolowanych sieciach OOBM; we wszystkich pozostałych środowiskach produkcyjnych obowiązuje standard SNMPv3 authPriv
Model bezpieczeństwa (Security Model): Zdefiniowany w specyfikacji SNMPv3 zestaw reguł, algorytmów kryptograficznych i formatów komunikatów zapewniających uwierzytelnianie i szyfrowanie transmisji.
Porównanie wersji SNMP Matryca porównawcza wersji protokołu SNMP Cecha protokołu SNMPv1 SNMPv2c SNMPv3 Uwierzytelnianie Community (jawne) Community (jawne) HMAC-SHA-2 (USM) Szyfrowanie (Privacy) Brak Brak AES-128 / AES-256 Liczniki ruchu Tylko Counter32 Counter32 i Counter64 Counter32 i Counter64 Pobieranie tabel GetNext (pojedynczo) GetBulk (blokowo) GetBulk (blokowo) Powiadomienia ACK Brak (tylko Trap) InformRequest InformRequest Kontrola dostępu Brak (tylko RO/RW) Brak (tylko RO/RW) Model VACM (widoki) Rekomendacja Całkowicie zakazany Tylko OOB VLAN Standard domyślny
Slajd 4/22
Architektura trójwarstwowa: Menedżer, Agent i baza MIB
Cel slajdu: Zrozumienie podziału ról i przepływu informacji pomiędzy stacją zarządzającą, urządzeniem nadzorowanym a strukturą definicji danych.

Relacje pomiędzy komponentami architektury SNMP

Zarządzanie siecią za pomocą SNMP opiera się na trójstronnej relacji pomiędzy stacją nadrzędną (Manager/NMS), oprogramowaniem wbudowanym w urządzenie (Agent) oraz sformalizowaną bazą wiedzy (MIB).

  • Menedżer SNMP (NMS Poller): Serwer centralny inicjujący odpytywanie urządzeń (GET, GETBULK), przetwarzający odebrane pułapki (Traps) i zapisujący metryki w bazach danych
  • Agent SNMP (Managed Device): Lekki demon pracujący w tle na urządzeniu aktywnym (np. proces snmpd w Linuksie); odczytuje parametry jądra/układów ASIC i odpowiada menedżerowi
  • Baza MIB (Management Information Base): Ustrukturyzowany zbiór definicji zmiennych i tabel, określający jakie parametry urządzenie udostępnia i jakiego są one typu
  • Asymetria ról: Menedżer wykonuje większość ciężkich obliczeń i analiz, odciążając procesor agenta na przełączniku czy routerze
Agent SNMP: Moduł oprogramowania działający na urządzeniu nadzorowanym, realizujący dostęp do lokalnych parametrów sprzętowych i programowych na żądanie stacji NMS.
Architektura SNMP Relacja Manager – Agent – Baza MIB SNMP Manager 🖥 Stacja NMS LibreNMS / Zabbix Port UDP 162 (Trap) SNMP Agent ⚡ Demon snmpd Router / Przełącznik Port UDP 161 (Odpytanie) GET / GETNEXT / GETBULK (UDP 161) RESPONSE (Dane z bazy MIB) TRAP / INFORM (Zdarzenia UDP 162) Baza MIB (ASN.1) Definicje obiektów OID
Slajd 5/22
Hierarchiczna struktura drzewa OID i podział przestrzeni nazw
Cel slajdu: Zrozumienie budowy globalnego drzewa identyfikatorów obiektów (OID) oraz zasad adresowania zmiennych telemetrycznych.

Globalna przestrzeń adresowa OID i gałęzie standardowe

Wszystkie obiekty zarządzane w protokole SNMP są zorganizowane w globalne, hierarchiczne drzewo identyfikatorów OID administrowane wspólnie przez ISO oraz ITU-T.

  • Format zapisu OID: Ciąg liczb całkowitych oddzielonych kropkami, odzwierciedlający ścieżkę od korzenia drzewa (Root), np. .1.3.6.1.2.1
  • Gałąź internetowa: Praktycznie wszystkie obiekty SNMP leżą w poddrzewie: iso(1).org(3).dod(6).internet(1), czyli prefiks .1.3.6.1
  • Poddrzewo standardowe (mgmt / mib-2): Węzeł .1.3.6.1.2.1 zawiera wystandaryzowane przez IETF definicje wspólne dla wszystkich producentów (MIB-II)
  • Poddrzewo prywatne (private / enterprises): Węzeł .1.3.6.1.4.1 zawiera gałęzie dedykowane konkretnym producentom (np. Cisco .9, MikroTik .14988, Microsoft .311)
Identyfikator obiektu (OID – Object Identifier): Ciąg liczb jednoznacznie wskazujący węzeł lub liść w globalnym drzewie definicji; identyfikuje konkretną zmienną lub tabelę w urządzeniu.
Hierarchia drzewa OID Hierarchia globalnego drzewa OID root ( ) iso (1) org (3) dod (6) internet (1) mgmt (2) -> mib-2 (1) private (4) -> ent (1)
Slajd 6/22
Standard MIB-II (RFC 1213) oraz grupy system i interfaces
Cel slajdu: Szczegółowa analiza kluczowych grup zmiennych zdefiniowanych w fundamencie standardu MIB-II.

Znormalizowane grupy obiektów w standardzie MIB-II

Specyfikacja RFC 1213 (MIB-II) definiuje zbiór 10 grup obiektów, które musi implementować każde urządzenie zgodne ze standardem TCP/IP.

  • Grupa system (.1.3.6.1.2.1.1): Metadane urządzenia: sysDescr (.1 - opis OS/hardware), sysObjectID (.2), sysUpTime (.3 - czas pracy w setnych sekundy), sysContact (.4), sysName (.5), sysLocation (.6)
  • Grupa interfaces (.1.3.6.1.2.1.2): Informacje o portach: ifNumber (.1) oraz tabela ifTable (.2) zawierająca liczniki bajtów, pakietów i błędy dla każdego interfejsu
  • Grupy warstwy sieciowej: Grupy ip (.4), icmp (.5), tcp (.6) oraz udp (.7) udostępniające statystyki pakietów, tablice routingu i aktywne połączenia
  • Rozszerzalność standardu: Grupa interfaces została zmodernizowana w specyfikacji IF-MIB (RFC 2863), wprowadzając tabelę ifXTable z licznikami 64-bitowymi
Wskaźnik sysUpTime: Licznik typu TimeTicks reprezentujący czas nieprzerwanej pracy podsystemu sieciowego urządzenia wyrażony w setnych częściach sekundy (1/100 s).
Standard MIB-II Grupy funkcjonalne MIB-II (RFC 1213) 1. system (1.3.6.1.2.1.1) Nazwa, lokalizacja, czas pracy, kontakt 2. interfaces (1.3.6.1.2.1.2) Liczba portów, statusy, liczniki bajtów 3. at (1.3.6.1.2.1.3) Address Translation (historyczna, ARP) 4. ip (1.3.6.1.2.1.4) Tablica routingu, adresy IP, forwarding 5. icmp (1.3.6.1.2.1.5) Statystyki Echo, błędy Destination Unreachable 6. tcp (1.3.6.1.2.1.6) Otwarte sesje TCP, retransmisje, stany 7. udp (1.3.6.1.2.1.7) Pakiety wysłane/odebrane, brak portu 11. snmp (1.3.6.1.2.1.11) Liczba zapytań, błędy autoryzacji, trapy
Slajd 7/22
Definicja struktur danych: standard SMIv2, notacja ASN.1 i kodowanie BER
Cel slajdu: Zrozumienie zasad formalnego opisu danych w plikach MIB oraz reguł binarnego kodowania pakietów przesyłanych przez sieć.

Struktura SMIv2, składnia ASN.1 i binarny format BER

Protokół SNMP oddziela definicję struktury danych od ich fizycznej reprezentacji w pakiecie, wykorzystując standardy ASN.1 oraz reguły Basic Encoding Rules (BER).

  • Standard SMIv2 (RFC 2578): Structure of Management Information; język definiowania obiektów zarządzanych, typów danych oraz modułów MIB
  • Typy proste i aplikacyjne: Typy bazowe: INTEGER, OCTET STRING, OBJECT IDENTIFIER; Typy aplikacyjne: IpAddress, Counter32, Counter64, Gauge32, TimeTicks
  • Składnia ASN.1: Abstrakcyjny język zapisu definicji protokołów; pliki tekstowe .mib są kompilowane przez stacje NMS do postaci binarnej
  • Format binarny TLV (Tag-Length-Value): Reguły BER kodują każdy element jako trójkę: Typ danych (Tag), Długość wartości w bajtach (Length) oraz Rzeczywista wartość (Value)
Kodowanie BER (Basic Encoding Rules): Zbiór reguł serializacji struktur danych ASN.1 do postaci strumienia bajtów przesyłanych wewnątrz pakietów protokołu SNMP.
Kodowanie ASN.1 BER Kodowanie ASN.1 BER – format trójkowy TLV TAG (Typ) 1 bajt 0x02 = INTEGER LENGTH (Długość) 1 lub więcej bajtów 0x04 = 4 bajty danych VALUE (Wartość) N bajtów danych 0x00 0x01 0x02 0x03 Przykładowy strumień bajtów BER (Hex Dump): 30 2B 02 01 01 04 06 70 75 62 6C 69 63 A0 1E ... • 30 2B = SEQUENCE o długości 43 bajtów (główny kontener PDU) • 02 01 01 = INTEGER (wersja protokołu SNMPv2c = 1)
Slajd 8/22
Protokół SNMPv1 i SNMPv2c: mechanizm Community String i ograniczenia
Cel slajdu: Przedstawienie działania i podatności mechanizmu ciągów społecznościowych w wersjach v1 i v2c.

Prostota operacyjna i krytyczne podatności bezpieczeństwa

Chociaż SNMPv2c jest nadal szeroko spotykany ze względu na prostotę konfiguracji, jego mechanizm autoryzacji jest całkowicie pozbawiony zabezpieczeń kryptograficznych.

  • Ciąg społeczności (Community String): Współdzielone hasło tekstowe dołączane w nagłówku każdego pakietu; rozróżnia się społeczność do odczytu (RO - Read Only) i zapisu (RW - Read-Write)
  • Przesyłanie otwartym tekstem: Ciągi community są transmitowane w postaci jawnej (Cleartext) w pakietach UDP; każdy podsłuch w sieci LAN ujawnia hasło administratora
  • Ryzyko nieautoryzowanego zapisu (RW): Przechwycenie społeczności 'private' lub Read-Write pozwala napastnikowi na zdalną zmianę konfiguracji, wyłączenie interfejsu lub restart routera
  • Usprawnienia SNMPv2c: Wprowadzenie operacji GETBULK drastycznie skróciło czas pobierania dużych tabel, a liczniki 64-bitowe umożliwiły nadzór nad sieciami powyżej 100 Mb/s
Community String (Ciąg społeczności): Nieszyfrowany token tekstowy pełniący rolę hasła dostępowego w protokołach SNMPv1 oraz SNMPv2c, podatny na podsłuch pakietowy.
Innowacje SNMPv2c Innowacje operacyjne SNMPv2c GetBulkRequest Pobieranie blokowe • Non-repeaters • Max-repetitions • Jeden pakiet = cała tablica interfejsów 10x szybszy walk Counter64 Liczniki 64-bitowe • 18 trylionów bajtów • ifHCInOctets • ifHCOutOctets • Obsługa 10G/100G+ Brak ryzyka rollover InformRequest Potwierdzany Trap • Agent wysyła zdarzenie • Manager odsyła ACK • Retransmisja przy braku odpowiedzi NMS Niezawodność UDP
Slajd 9/22
Architektura bezpieczeństwa SNMPv3: model USM (uwierzytelnianie i szyfrowanie)
Cel slajdu: Szczegółowa analiza modelu User-based Security Model (USM) odpowiedzialnego za kryptograficzną ochronę komunikacji w SNMPv3.

Trzy poziomy bezpieczeństwa i mechanizmy kryptograficzne USM

Standard SNMPv3 (RFC 3414) zastąpił pojęcie community string kontami użytkowników z indywidualnymi kluczami uwierzytelniania i szyfrowania.

  • Poziom noAuthNoPriv: Brak uwierzytelniania i brak szyfrowania (identyfikacja wyłącznie na podstawie nazwy użytkownika); poziom niezalecany na produkcji
  • Poziom authNoPriv: Uwierzytelnianie i ochrona integralności za pomocą kodów HMAC-SHA (SHA-224, SHA-256, SHA-512) lub starszego MD5; pakiety nie są szyfrowane
  • Poziom authPriv: Najwyższy standard; jednoczesne uwierzytelnianie HMAC oraz symetryczne szyfrowanie całej zawartości PDU za pomocą algorytmu AES-128 / AES-256
  • Ochrona przed atakiem powtórzeniowym: Mechanizm okna czasowego (EngineBoots i EngineTime) gwarantuje, że przechwycony pakiet nie może zostać powtórzony przez atakującego
Model USM (User-based Security Model): Podsystem SNMPv3 zapewniający uwierzytelnianie tożsamości użytkowników, ochronę integralności danych oraz poufność transmisji.
Uwierzytelnianie SNMPv3 USM Mechanizm uwierzytelniania w modelu USM Algorytmy historyczne • HMAC-MD5-96 (RFC 3414) Podatny na kolizje skrótów • HMAC-SHA-96 (SHA-1) Wycofywany z użycia Standard SHA-2 (RFC 7860) • HMAC-SHA-256-192 Skrót obcinany do 192 bitów (RFC 7860) • HMAC-SHA-512-384 Skrót obcinany do 384 bitów (RFC 7860) Ochrona przed retransmisją (Replay Attack): • snmpEngineBoots: licznik restartów silnika SNMP • snmpEngineTime: bieżący czas pracy w sekundach • Okno czasowe: pakiety z różnicą czasu > 150 sekund są bezwzględnie odrzucane
Slajd 10/22
Kontrola dostępu w SNMPv3: model VACM (grupy, widoki i uprawnienia)
Cel slajdu: Zrozumienie zasad precyzyjnego ograniczania dostępu do wybranych gałęzi drzewa MIB za pomocą modelu View-based Access Control Model.

Precyzyjne reguły uprawnień i widoki poddrzew MIB

Nawet poprawnie uwierzytelniony użytkownik nie powinien mieć dostępu do wszystkich parametrów urządzenia; model VACM (RFC 3415) realizuje zasadę najniższych uprawnień (Least Privilege).

  • Widok MIB (View): Zestaw masek określających, które gałęzie drzewa OID są włączone (included) lub wyłączone (excluded) z widoczności (np. widok systemview obejmuje tylko .1.3.6.1.2.1.1)
  • Grupy zabezpieczeń (Groups): Powiązanie użytkowników z określonym modelem bezpieczeństwa i nazwą grupy logicznej
  • Tabela dostępu (Access Table): Definiuje relację: Jaka Grupa + Jaki Poziom Bezpieczeństwa (authPriv) => Jaki Widok do Odczytu (read-view), Zapisu (write-view) i Powiadomień (notify-view)
  • Korzyści wdrożeniowe: Możliwość stworzenia dedykowanego konta dla zewnętrznego NMS z dostępem wyłącznie do odczytu liczników interfejsów, z ukryciem konfiguracji routingu i danych logowania
Model VACM (View-based Access Control Model): Moduł SNMPv3 odpowiadający za autoryzację; określa, które obiekty MIB dany użytkownik może odczytywać lub modyfikować.
Model dostępu VACM Architektura kontroli dostępu VACM (RFC 3415) 1. Użytkownik / Grupa • Mapowanie usmUser • Grupa: readOnlyGroup • Grupa: adminGroup group secModel secName 2. Reguła dostępu • securityLevel: authPriv • context: default • readView: vSystem access group context ... 3. Widok MIB • included 1.3.6.1.2.1.1 • excluded 1.3.6.1.4.1 • Maska poddrzewa view viewName type OID Separacja uprawnień VACM w praktyce: • Operator helpdesku widzi tylko grupę system i status interfejsu (read-view: vPublic) • System NMS odpytuje pełne drzewo mib-2 oraz sensory prywatne producenta • Dostęp do modyfikacji (write-view) jest całkowicie zablokowany lub ograniczony do administratora sieci
Slajd 11/22
Warstwa transportowa i format ramki PDU protokołu SNMP
Cel slajdu: Przedstawienie struktury pakietu SNMP, formatu jednostek danych protokołu (PDU) oraz specyfiki transportu UDP.

Enkapsulacja pakietu SNMP i struktura Protocol Data Unit

Komunikacja SNMP zachodzi w warstwie aplikacji i jest domyślnie enkapsulowana w datagramy bezpołączeniowego protokołu UDP, co minimalizuje narzut sieciowy.

  • Porty transportowe: Port UDP 161 (nasłuch żądań przez Agenta) oraz port UDP 162 (nasłuch powiadomień asynchronicznych Traps/Informs przez Menedżera)
  • Dlaczego UDP a nie TCP: Brak konieczności zestawiania trójstopniowego połączenia (3-way handshake); minimalny narzut na łącze i pamięć urządzeń sieciowych
  • Format ramki PDU: Każdy pakiet PDU zawiera: Typ operacji (Get/Set/Trap), Identyfikator żądania (Request-ID), Status błędu (Error-Status), Indeks błędu (Error-Index) oraz listę zmiennych (Varbind)
  • Wiązanie zmiennych (Varbind List): Para składająca się z identyfikatora OID oraz przypisanej mu wartości (np. 1.3.6.1.2.1.1.5.0 = router-core-01)
PDU (Protocol Data Unit): Ustrukturyzowana jednostka danych protokołu SNMP definiująca konkretne zapytanie lub odpowiedź wraz z listą identyfikatorów OID i wartości.
Budowa jednostki PDU Struktura jednostki PDU protokołu SNMP PDU Type Get, Response itp. Request-ID Identyfikator sesji Error-Status Kod błędu (0=noErr) Error-Index Indeks błędnego OID Lista powiązań zmiennych (Variable Bindings - VarBind List) VarBind 1: [ OID: .1.3.6.1.2.1.1.3.0 ] [ Value: TimeTicks (1452300) ] VarBind 2: [ OID: .1.3.6.1.2.1.1.5.0 ] [ Value: OCTET STRING "core-sw01" ] VarBind 3: [ OID: .1.3.6.1.2.1.2.2.1.10.1 ] [ Value: Counter32 (8942150) ] Możliwość odpytania wielu parametrów w pojedynczym datagramie UDP (oszczędność round-trip)
Slajd 12/22
Standard IF-MIB (RFC 2863) i matematyka wyliczania ruchu na interfejsach
Cel slajdu: Opanowanie algorytmów obliczania rzeczywistej przepustowości łączy na podstawie liczników ifInOctets oraz ifHCInOctets.

Architektura IF-MIB, tabela ifXTable i wzory obliczeniowe

Monitorowanie ruchu sieciowego to najbardziej powszechne zastosowanie SNMP; wymaga zrozumienia relacji między licznikami bajtów a fizyczną przepustowością portu.

  • Struktura tabeli ifTable vs ifXTable: Klasyczna ifTable zawiera 32-bitowe liczniki bajtów; ifXTable (RFC 2863) wprowadza 64-bitowe obiekty ifHCInOctets oraz ifHCOutOctets
  • Zasada indeksowania interfejsów: Każdy port posiada unikalny indeks ifIndex (np. ifDescr.2, ifHCInOctets.2); menedżer odpytuje konkretne kolumny z sufiksem indeksu
  • Wzór na przepustowość (BPS): Przepustowość [b/s] = ((Oktety_T2 - Oktety_T1) * 8) / (T2 - T1), gdzie różnica czasu T2-T1 wyrażona jest w sekundach
  • Wskaźnik procentowego wykorzystania: Utylizacja [%] = (Przepustowość [b/s] / ifSpeed [b/s]) * 100%; dla łączy powyżej 1 Gb/s należy odczytywać parametr ifHighSpeed (w Mb/s)
High Capacity (HC) MIB Objects: 64-bitowe liczniki wprowadzone w standardzie SMIv2, eliminujące ryzyko szybkiego przepełnienia (Counter Wrap) na łączach Gigabit i 10G/40G/100G.
Matematyka przepustowości SNMP Matematyka obliczania przepustowości łączy Podstawowy wzór na przepływność (Bits per Second): Bps = ( Licznik_T2 - Licznik_T1 ) * 8 / ( T2 - T1 ) Przykład liczbowy: • T1 = 0 s: ifHCIn = 10 000 000 B • T2 = 300 s: ifHCIn = 475 000 000 B • Delta = 465 000 000 bajtów • Pasmo = (465M * 8) / 300 = 12.4 Mbps Obsługa zawinięcia (Rollover): Gdy Licznik_T2 < Licznik_T1: • Counter32: Delta = (2^32 - T1) + T2 • Counter64: Delta = (2^64 - T1) + T2 Warunek: tylko jedno zawinięcie w oknie!
Slajd 13/22
Standard HOST-RESOURCES-MIB (RFC 2790) – nadzór nad zasobami serwera
Cel slajdu: Zapoznanie się ze standardową bazą MIB służącą do monitorowania parametrów sprzętowych i programowych w systemach operacyjnych serwerów.

Monitorowanie procesorów, pamięci, dysków i procesów w HOST-RESOURCES-MIB

Specyfikacja RFC 2790 definiuje uniwersalny interfejs telemetryczny dla serwerów Linux, Windows oraz systemów wbudowanych.

  • Grupa hrSystem (.1.3.6.1.2.1.25.1): Czas pracy systemu (hrSystemUptime), data systemowa oraz liczba aktualnie zalogowanych użytkowników
  • Grupa hrStorage (.1.3.6.1.2.1.25.2): Tabela wolumenów pamięci; monitorowanie rozmiaru klastra (hrStorageAllocationUnits), pojemności i zużycia dysków oraz pamięci RAM i SWAP
  • Grupa hrDevice (.1.3.6.1.2.1.25.3): Tabela urządzeń sprzętowych; obciążenie poszczególnych rdzeni procesora w ostatniej minucie (hrProcessorLoad)
  • Grupa hrSWRun (.1.3.6.1.2.1.25.4): Inwentaryzacja uruchomionych procesów; nazwy plików wykonywalnych, ścieżki dostępu oraz zużycie pamięci i czasu CPU przez każdy proces
HOST-RESOURCES-MIB: Znormalizowana przez IETF baza MIB dedykowana do bezagentowego monitorowania zasobów sprzętowych i środowiska operacyjnego serwerów.
Standard HOST-RESOURCES-MIB Architektura HOST-RESOURCES-MIB (RFC 2790) hrSystem (1.3.6.1.2.1.25.1) Czas pracy systemu operacyjnego, liczba procesów hrStorage (1.3.6.1.2.1.25.2) Partycje dyskowe, pamięć RAM, swap, alokacje hrDevice (1.3.6.1.2.1.25.3) Procesory (hrProcessorLoad), dyski, karty sieciowe hrSWRun (1.3.6.1.2.1.25.4) Tabela aktywnych procesów (PID, nazwa, ścieżka) Przykłady odpytania zasobów serwera Linux/Windows: $ snmpwalk -v2c -c public srv01 hrProcessorLoad HOST-RESOURCES-MIB::hrProcessorLoad.196608 = INTEGER: 14 (% rdzeń 1) HOST-RESOURCES-MIB::hrProcessorLoad.196609 = INTEGER: 8 (% rdzeń 2)
Slajd 14/22
Asynchroniczne powiadomienia: SNMP Trap a SNMP InformRequest (RFC 3416)
Cel slajdu: Przedstawienie różnic pomiędzy zawodnym a potwierdzanym mechanizmem wysyłania powiadomień asynchronicznych przez urządzenia sieciowe.

Mechanizmy raportowania zdarzeń: Trap kontra InformRequest

Powiadomienia asynchroniczne informują stację NMS o krytycznych zdarzeniach (np. awaria zasilacza, podniesienie interfejsu) bez oczekiwania na kolejny cykl odpytywania.

  • SNMP Trap (Pułapka): Zwykły komunikat UDP wysyłany przez agenta na port 162 menedżera; brak potwierdzenia odbioru; w przypadku utraty pakietu informacja bezpowrotnie ginie
  • SNMP InformRequest (Powiadomienie potwierdzane): Mechanizm wprowadzony w SNMPv2c (RFC 3416); menedżer po odebraniu musi odesłać potwierdzenie Response-PDU
  • Mechanizm retransmisji: W przypadku braku potwierdzenia agent ponawia wysyłkę InformRequest zgodnie ze zdefiniowanym limitem prób i czasem oczekiwania (timeout)
  • Standardowe pułapki (Generic Traps): coldStart (0), warmStart (1), linkDown (2), linkUp (3), authenticationFailure (4), egpNeighborLoss (5)
InformRequest: Potwierdzany komunikat powiadomienia asynchronicznego w protokole SNMP, gwarantujący niezawodne dostarczenie informacji o krytycznym incydencie do serwera NMS.
Trap vs InformRequest Porównanie: SNMP Trap vs SNMP InformRequest SNMP Trap (Jednokierunkowy) Model Fire-and-Forget • Agent wysyła pakiet UDP na port 162 • Brak potwierdzenia odbioru • Jeśli pakiet zginie w sieci -> brak śladu • Minimalne zużycie zasobów urządzenia Zastosowanie: Zdarzenia o niskim i średnim priorytecie SNMP Inform (Potwierdzany) Model Acknowledged • Agent wysyła pakiet UDP na port 162 • Manager NMS odsyła RESPONSE PDU • Brak ACK -> Agent ponawia wysyłkę • Gwarancja dostarczenia incydentu Zastosowanie: Krytyczne awarie zasilania, łącza WAN
Slajd 15/22
Odbiór i przetwarzanie pułapek: demon snmptrapd
Cel slajdu: Poznanie zasad konfiguracji demona snmptrapd w systemie Linux oraz integracji odbiornika pułapek z systemami alarmowymi.

Architektura odbioru i parsowania pułapek w serwerze Linux

Aby serwer NMS mógł reagować na pułapki, w systemie operacyjnym musi pracować usługa nasłuchująca na porcie UDP 162 – w środowiskach uniksowych standardem jest demon snmptrapd.

  • Konfiguracja pliku snmptrapd.conf: Określenie dozwolonych poświadczeń; dla v2c: authCommunity log,execute public; dla v3: rejestracja użytkowników USM
  • Parsowanie formatu OID: Demon wykorzystuje zainstalowane bazy MIB do translacji surowych liczb OID na czytelne nazwy zmiennych i wartości wyliczeniowe (np. linkDown zamiast 1.3.6.1.6.3.1.1.5.3)
  • Formatowanie wyjścia (format2): Definicja szablonu zapisu do pliku dziennika lub przekazania do demona rsyslog
  • Wyzwalanie skryptów zewnętrznych (traphandle): Możliwość automatycznego wywołania skryptu powłoki lub Pythona po odebraniu konkretnej pułapki OID w celu natychmiastowej reakcji
Demon snmptrapd: Usługa systemowa pakietu Net-SNMP odpowiedzialna za nasłuch na porcie UDP 162, weryfikację poświadczeń, logowanie oraz kierowanie pułapek do skryptów obsługi.
Odbiór pułapek snmptrapd Architektura demona odbiorczego snmptrapd Konfiguracja /etc/snmp/snmptrapd.conf # 1. Zezwolenie na odbiór pułapek z daną wspólnotą: authCommunity log,execute,net TajneCommunityTrap # 2. Przekazanie pułapki do zewnętrznego skryptu Pythona: traphandle IF-MIB::linkDown /usr/local/bin/notify_slack.py Zrzut do pliku logu: • Domyślnie przez demon syslog • Plik /var/log/snmptrapd.log • Format definiowany dyrektywą format1 / format2 Integracja z NMS: • LibreNMS snmptrap handler • Przekazywanie do bazy MySQL • Natychmiastowa zmiana koloru portu w panelu WWW
Slajd 16/22
Konfiguracja agenta SNMP w Linuksie (snmpd.conf) i MikroTik RouterOS
Cel slajdu: Opanowanie praktycznej konfiguracji agenta SNMP na serwerach z systemem Linux oraz routerach MikroTik RouterOS.

Wdrożenie agenta: parametry snmpd.conf i konfiguracja RouterOS

Prawidłowa konfiguracja agenta wymaga zdefiniowania metadanych urządzenia, ograniczenia interfejsów nasłuchujących oraz zabezpieczenia dostępu dozwolonym adresem IP.

  • Plik snmpd.conf (Linux): Dyrektywy agentAddress udp:161, definicja społeczności: rocommunity monitoring 192.168.1.100, metadane sysLocation i sysContact
  • Wdrożenie SNMPv3 w Linuksie: Narzędzie net-snmp-create-v3-user -ro -A HasloAuth -a SHA -X HasloPriv -x AES snmpv3user
  • MikroTik RouterOS CLI: Włączenie agenta poleceniem /snmp set enabled=yes contact="NOC" location="DC-01"
  • Bezpieczna społeczność w RouterOS: /snmp community add name=mon_v2 addresses=192.168.1.100/32 read-access=yes; wyłączenie domyślnej społeczności 'public'
Plik konfiguracyjny snmpd.conf: Główny plik konfiguracyjny agenta Net-SNMP w systemie Linux określający politykę kontroli dostępu, mapowanie OID oraz adresy nasłuchu.
Konfiguracja snmpd w Linux Konfiguracja /etc/snmp/snmpd.conf w systemie Linux root@server:/etc/snmp# nano snmpd.conf # 1. Adres nasłuchu (tylko loopback i IP zarządzające) agentAddress udp:127.0.0.1:161,udp:192.168.53.97:161 # 2. Definicja widoku MIB (dostęp do mib-2) view systemview included .1.3.6.1.2.1 # 3. SNMPv2c z ograniczeniem do IP serwera NMS rocommunity TajneHasloNMS 192.168.53.50 -V systemview # 4. SNMPv3 bezpieczny użytkownik (wymóg authPriv) rouser nms-mon authpriv -V systemview # 5. Metadane węzła sysLocation "Serwerownia RACK-1" | sysContact admin@firma.pl
Slajd 17/22
Narzędzia Net-SNMP CLI: zapytania v2c i v3 oraz translacja OID
Cel slajdu: Biegłe posługiwanie się narzędziami wiersza poleceń pakietu Net-SNMP do diagnostyki urządzeń sieciowych.

Przegląd poleceń snmpget, snmpwalk, snmpbulkwalk i snmptranslate

Zestaw narzędzi Net-SNMP stanowi podstawowe wyposażenie każdego inżyniera sieciowego, pozwalając na szybką weryfikację komunikacji bezpośrednio z terminala.

  • Pobieranie pojedynczej wartości (snmpget): snmpget -v2c -c public 192.168.1.1 sysUpTime.0 – wymaga podania pełnego OID z instancją
  • Przechodzenie poddrzewa (snmpwalk / snmpbulkwalk): snmpbulkwalk -v2c -c public 192.168.1.1 ifDescr – automatycznie pobiera całą kolumnę lub gałąź
  • Zapytania SNMPv3 w CLI: snmpget -v3 -l authPriv -u nmsuser -a SHA -A HasloAuth -x AES -X HasloPriv 192.168.1.1 sysName.0
  • Translacja OID (snmptranslate): Narzędzie tłumaczące ciągi numeryczne na nazwy symboliczne i odwrotnie: snmptranslate -On IF-MIB::ifInOctets zwraca .1.3.6.1.2.1.2.2.1.10
Polecenie snmpbulkwalk: Wyspecjalizowane narzędzie Net-SNMP wykorzystujące operację GETBULK do masowego, szybkiego pobierania całych tabel i poddrzew OID.
Przykłady SNMPv2c CLI Praktyczne zapytania SNMPv2c w terminalu jnowak@terminal:~$ snmpget / snmpwalk # 1. Pobranie nazwy systemu (instancja skalarana .0) $ snmpget -v2c -c public localhost sysName.0 SNMPv2-MIB::sysName.0 = STRING: srv-mon-01 # 2. Szybki zrzut nazw interfejsów (GetBulk) $ snmpbulkwalk -v2c -c public 192.168.53.84 ifName IF-MIB::ifName.1 = STRING: ether1 IF-MIB::ifName.2 = STRING: ether2 # 3. Zrzut z wymuszeniem wyjścia czysto numerycznego (-On) $ snmpget -v2c -c public -On localhost 1.3.6.1.2.1.1.3.0 .1.3.6.1.2.1.1.3.0 = Timeticks: (842910) 2:20:29.10
Slajd 18/22
Bezpieczeństwo produkcyjne i analiza ruchu SNMP w programie Wireshark
Cel slajdu: Zrozumienie wektorów ataków na protokół SNMP oraz opanowanie inspekcji pakietowej w analizatorze Wireshark.

Inspekcja pakietów i utwardzanie agentów SNMP

Analiza ruchu w programie Wireshark naocznie demonstruje różnicę pomiędzy jawnym tekstem SNMPv1/v2c a w pełni zaszyfrowanymi ramkami SNMPv3.

  • Analiza SNMPv2c w Wireshark: Filtr snmp; w drzewie protokołu widoczny jest jawny ciąg społeczności (community) oraz wszystkie przesyłane identyfikatory OID i wartości
  • Analiza SNMPv3 w Wireshark: Pakiety w warstwie danych są zakodowane jako msgData: encryptedPDU; odczyt wymaga skonfigurowania kluczy deszyfrujących w ustawieniach programu
  • Ataki na SNMP: Zgadywanie słownikowe community strings, nieautoryzowany odczyt tablic routingu i ARP, modyfikacja parametrów przez SNMP SET, wzmacnianie ataków DDoS (SNMP Amplification)
  • Zasady utwardzania (Hardening): Całkowite wyłączenie SNMPv1, ograniczenie dostępu na zaporze ogniowej wyłącznie do IP serwera NMS, wdrożenie SNMPv3 authPriv oraz dedykowany VLAN zarządzania
SNMP Amplification Attack: Odmiana ataku DDoS, w której napastnik wysyła zapytania GETBULK ze sfałszowanym adresem IP ofiary do publicznie otwartych agentów SNMP, generując lawinową odpowiedź o wielokrotnie większym rozmiarze.
Wireshark i inspekcja SNMP Analiza i deszyfrowanie pakietów SNMP w Wireshark Wireshark Packet Details: SNMPv3 Protocol ▼ Simple Network Management Protocol msgVersion: snmpv3 (3) ▼ msgGlobalData msgFlags: 0x03 (authFlag=1, privFlag=1, reportableFlag=0) ▼ msgSecurityParameters (USM) msgAuthoritativeEngineID: 80001f88803456... msgUserName: nms-admin msgAuthenticationParameters: e4a1b89c... (HMAC-SHA-256) msgPrivacyParameters: 000000018a7b... (AES Salt) ▼ Decrypted scopedPDU (po podaniu klucza w Preferencjach): data: get-response (2) | sysUpTime.0 = 1298400
Slajd 19/22
Ograniczenia SNMP i nowoczesne alternatywy: NETCONF/YANG oraz gNMI
Cel slajdu: Przedstawienie technologicznych barier protokołu SNMP oraz omówienie nowoczesnych paradygmatów telemetrii strumieniowej i sieci programowalnych.

Wąskie gardła SNMP i ewolucja ku telemetrii strumieniowej

Chociaż SNMP dominuje w monitorowaniu urządzeń brzegowych, nowoczesne centra danych i sieci chmurowe migrują w kierunku protokołów opartych na modelach YANG i strumieniowaniu gNMI.

  • Wąskie gardła SNMP: Narzut kodowania BER, ograniczenia wydajnościowe transportu UDP, brak transakcyjności przy konfiguracji (SET) oraz opóźnienia modelu odpytywania (Pull)
  • Protokół NETCONF (RFC 6241): Transakcyjne zarządzanie konfiguracją oparte na protokole SSH/TLS i formacie XML, zapewniające atomowość zmian (commit/rollback)
  • Język modelowania YANG (RFC 7950): Ścisły, znormalizowany model danych opisujący konfigurację i stan urządzeń sieciowych, zastępujący archaiczne pliki MIB
  • Telemetria strumieniowa gNMI / gRPC: Pchanie danych telemetrycznych (Push) w czasie rzeczywistym bezpośrednio z układów ASIC z częstotliwością poniżej 1 sekundy
Model gNMI (gRPC Network Management Interface): Nowoczesny protokół telemetryczny stworzony przez konsorcjum OpenConfig, wykorzystujący HTTP/2 i Protobuf do ultraszybkiego strumieniowania danych o stanie sieci.
NETCONF i model YANG Architektura NETCONF i modelowanie YANG NETCONF (RFC 6241) • Transport: Bezpieczny SSH (port 830) • Format: XML / RPC (Remote Procedure) • Bazy: running, candidate, startup Transakcyjność atomowa Commit/Rollback Język YANG (RFC 7950) • Nowoczesny następca ASN.1/SMI • Ścisła hierarchia i typowanie danych • Standard OpenConfig (niezależny) Wsparcie dla konfiguracji i stanu Porównanie paradygmatów zarządzania: • SNMP SET: Brak walidacji wstępnej, brak rollbacku, zmiana per-zmienna • NETCONF: Walidacja <validate/>, zatwierdzenie <commit/>, automatyczny rollback Wniosek: SNMP dominuje w monitorowaniu, NETCONF w automatyzacji konfiguracji
Slajd 20/22
Diagnostyka i rozwiązywanie problemów komunikacyjnych SNMP
Cel slajdu: Wykształcenie metodycznego podejścia do identyfikacji i usuwania usterek komunikacyjnych pomiędzy stacją NMS a agentem.

Metodyka usuwania usterek i weryfikacja toru transmisyjnego

Większość problemów z protokołem SNMP wynika z błędów konfiguracji zapory sieciowej, literówek w ciągach społeczności lub niezgodności parametrów kryptograficznych w v3.

  • Krok 1: Weryfikacja warstwy L3: Sprawdzenie łączności IP poleceniem ping; weryfikacja czy pakiet ICMP dociera do urządzenia
  • Krok 2: Weryfikacja portu UDP 161: Sprawdzenie czy demon agenta nasłuchuje (ss -tuln | grep 161 na agencie) oraz czy zapora (iptables/nftables) nie blokuje ruchu
  • Krok 3: Analiza błędów uwierzytelniania: Błąd 'Timeout: No Response' często oznacza niepoprawny community string (agent celowo milczy) lub filtr ACL na agencie
  • Krok 4: Diagnostyka SNMPv3: Weryfikacja EngineID urządzenia, zgodności protokołów haszowania (SHA vs MD5) oraz haseł uwierzytelniania i prywatności
Timeout: No Response: Najczęstszy komunikat błędu narzędzi Net-SNMP; wskazuje na brak odpowiedzi agenta w wyznaczonym czasie na skutek awarii łącza, blokady zapory lub odrzucenia błędnego hasła.
Procedura Troubleshooting SNMP Procedura diagnostyki usterek SNMP (Troubleshooting) Krok 1: Warstwa L3/L4 • ping adres_IP (czy jest trasa?) • nmap -sU -p 161 adres_IP Sprawdzenie zapory UFW/iptables Krok 2: Stan demona • systemctl status snmpd • ss -uln | grep 161 Czy demon nasłuchuje na IP? Krok 3: Poświadczenia • Test lokalny: snmpget localhost • Błąd Community: brak odpowiedzi! Silent drop przy złym haśle Krok 4: Logi i debug • snmpd -f -Lo -Dall (pełny debug) • journalctl -u snmpd -f Analiza błędów USM i czasu
Slajd 21/22
Kluczowe specyfikacje RFC i słownik pojęć SNMP
Cel slajdu: Zestawienie dokumentów standaryzacyjnych IETF oraz podsumowanie najważniejszych pojęć wprowadzonych w module drugim.

Źródła normatywne IETF i leksykon terminów SNMP

Zrozumienie protokołu SNMP wymaga biegłej orientacji w oficjalnych dokumentach RFC stanowiących formalne źródło prawa technicznego w Internecie.

  • Kluczowe dokumenty RFC: RFC 1157 (SNMPv1), RFC 1213 (MIB-II), RFC 2578 (SMIv2), RFC 2863 (IF-MIB), RFC 3411-3418 (SNMPv3), RFC 3826 (AES)
  • Słownik terminów: USM (User-based Security Model), VACM (View-based Access Control Model), PDU (Protocol Data Unit), Varbind (wiązanie OID-wartość)
  • Identyfikatory OID: Ciągi liczbowe reprezentujące węzły; notacja kropkowa odzwierciedlająca hierarchię drzewa ISO/ITU-T
  • Operacje protokołu: GET (pobranie), GETNEXT (następny obiekt), GETBULK (pobranie masowe), SET (zapis), TRAP / INFORM (powiadomienia)
RFC (Request for Comments): Oficjalne dokumenty techniczne publikowane przez IETF, opisujące protokoły internetowe, procedury i standardy obowiązujące w globalnej sieci IP.
Słownik pojęć SNMP Słownik pojęć i skrótów prezentacji 2 MIB (Mgmt Info Base) Baza metadanych w formacie ASN.1 OID (Object Identifier) Kropkowy identyfikator węzła w drzewie USM (User Security Model) Model kryptografii SNMPv3 (SHA/AES) VACM (View Access Control) Kontrola widoków i uprawnień OID PDU (Protocol Data Unit) Podstawowa jednostka komunikatu SNMP VarBind (Variable Binding) Para wiążąca numer OID z jego wartością InformRequest Powiadomienie potwierdzane przez NMS gNMI (gRPC Network Mgmt) Nowoczesna telemetria strumieniowa Push
Slajd 22/22
Pytania kontrolne i zadania laboratoryjne
Cel slajdu: Sprawdzenie przyswojenia wiedzy o architekturze SNMP oraz realizacja zadań praktycznych na stanowisku laboratoryjnym.

Pytania sprawdzające i zadania w terminalu Linux

Zaliczenie modułu drugiego wymaga samodzielnego skonfigurowania agenta, wykonania zapytań CLI oraz przeanalizowania struktury pakietów SNMP.

  • Pytania teoretyczne: 1. Dlaczego liczniki 32-bitowe są bezużyteczne na łączach 10 Gb/s? 2. Wymień trzy poziomy bezpieczeństwa w SNMPv3 i wyjaśnij różnice. 3. Czym różni się SNMP Trap od SNMP InformRequest?
  • Zadanie praktyczne 1: Skonfiguruj demona snmpd na serwerze Linux z dostępem tylko do odczytu dla adresu stacji NMS; przetestuj odpytanie poleceniem snmpget
  • Zadanie praktyczne 2: Utwórz użytkownika SNMPv3 z uwierzytelnianiem SHA i szyfrowaniem AES; pobierz nazwę systemu poleceniem wiersza poleceń
  • Zadanie praktyczne 3: Przeanalizuj w programie Wireshark różnicę pomiędzy pakietem SNMPv2c a zaszyfrowanym pakietem SNMPv3
Weryfikacja kompetencji: Samodzielna konfiguracja agenta snmpd i interpretacja odpowiedzi narzędzi CLI to niezbędna umiejętność każdego administratora sieci LAN.
Pytania kontrolne Weryfikacja wiedzy – pytania kontrolne Pytanie 1: Dlaczego Counter32 nie nadaje się dla łączy 1 Gbps? Wyjaśnij zjawisko przepełnienia licznika i czas zawinięcia przy 125 MB/s. Pytanie 2: Czym różni się SNMP InformRequest od SNMP Trap? Wskaż rolę pakietu Response PDU, retransmisji i bufora na agencie. Pytanie 3: Jak model USM zapobiega atakom Replay Attack? Omów rolę parametrów snmpEngineBoots, snmpEngineTime i okna 150 s. Pytanie 4: Dlaczego zmienne skalarne wymagają sufiksu .0? Wyjaśnij różnicę między typem obiektu MIB a konkretną instancją w pamięci.