Slajd 1/55
Protokół SNMP – architektura, wersje i budowa
Cel slajdu: Przedstawienie architektury protokołu SNMP, jego ewolucji od wersji v1 do v3 oraz modeli organizacji i opisu danych telemetrycznych.

Strona tytułowa i wprowadzenie do modułu

Simple Network Management Protocol (SNMP) stanowi uniwersalny protokół warstwy aplikacji służący do monitorowania, raportowania stanu oraz zdalnej konfiguracji urządzeń w sieciach IP.

  • Cel modułu: Poznanie relacji Manager-Agent, hierarchicznej struktury bazy MIB, drzewa OID oraz zaawansowanych mechanizmów bezpieczeństwa USM i VACM
  • Ewolucja standardu: Droga od prostego łańcucha wspólnoty w tekście jawnym w SNMPv1 i v2c do kryptograficznego uwierzytelniania i szyfrowania w SNMPv3 (RFC 3411)
  • Format danych: Zrozumienie binarnego kodowania ASN.1 BER oraz definicji zmiennych zawartych w standardzie SMIv2 (RFC 2578)
  • Umiejętności praktyczne: Zdolność do bezpośredniej interpretacji numerów OID, odpytywania agentów za pomocą narzędzi CLI oraz bezpiecznej konfiguracji demonów snmpd
Protokół SNMP: Standard organizacji IETF definiujący format przesyłania danych telemetrycznych i sterujących, oparty na bezpołączeniowym transporcie UDP (porty 161 i 162) oraz sformalizowanym języku opisu struktur ASN.1.
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/55
Spis treści prezentacji 2
Cel slajdu: Przedstawienie struktury dydaktycznej wykładu: od podstaw modelowania MIB/OID, przez mechanizmy protokołu i bezpieczeństwo SNMPv3, po konfigurację i diagnostykę.

Struktura i harmonogram wykładu

Prezentacja została podzielona na trzy spójne bloki tematyczne, prowadzące studenta od teoretycznych podstaw opisu danych do praktycznych wdrożeń laboratoryjnych.

  • Blok I: Architektura, bazy MIB i identyfikatory OID: Zasada działania relacji Manager-Agent, składnia ASN.1 SMIv2, struktura globalnego drzewa OID oraz analiza standardu MIB-II i IF-MIB
  • Blok II: Ewolucja protokołu i bezpieczeństwo SNMPv3: Różnice między v1, v2c i v3, ograniczenia wydajnościowe, model kryptograficzny USM (SHA-2, AES) oraz precyzyjna kontrola uprawnień VACM
  • Blok III: Implementacja, narzędzia CLI i zaawansowana telemetria: Praktyczne odpytywanie poleceniami Net-SNMP, konfiguracja agentów snmpd i RouterOS, kalkulacja przepustowości łączy oraz nowoczesne alternatywy NETCONF i gNMI
Wskazówka dydaktyczna: Opanowanie struktury drzewa OID i typów danych SMIv2 z Bloku I jest warunkiem koniecznym do poprawnego diagnozowania problemów sieciowych oraz tworzenia reguł alertów w systemach klasy LibreNMS czy Zabbix.
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/55
Historia SNMP – od SGMP i CMIP do globalnego standardu
Cel slajdu: Przedstawienie genezy protokołu SNMP, rywalizacji ze standardem CMIP/CMIS oraz powodów, dla których prosta architektura IETF wyparła model OSI.

Fundamenty i geneza protokołu

Pod koniec lat 80. XX wieku gwałtowny rozrost sieci ARPANET/Internet wymusił pilne opracowanie zunifikowanego protokołu zarządzania węzłami transmisyjnymi.

  • Protoplasta SGMP: Simple Gateway Monitoring Protocol (RFC 1028) z 1987 r. służył do monitorowania bram sieciowych i zdefiniował zasady pobierania zmiennych
  • Rywalizacja z modelem OSI: Komitet ISO promował CMIP (Common Management Information Protocol) nad stosem OSI – protokół potężny, lecz zbyt skomplikowany i zasobożerny dla ówczesnych procesorów urządzeń
  • Rozwiązanie 'tymczasowe': W 1988 r. opublikowano RFC 1067 (SNMP), planowane jako proste narzędzie przejściowe przed wdrożeniem CMIP
  • Uznanie standardu (RFC 1157): Dzięki lekkości, bezpołączeniowemu transportowi UDP i natychmiastowej adopcji przez producentów sprzętu, w 1990 r. RFC 1157 uczyniło SNMP faktycznym standardem branżowym
Zasada prostoty SNMP: Podstawowym założeniem architektury SNMP było przeniesienie całej złożoności analitycznej i obliczeniowej na stację zarządzającą (Manager), pozostawiając na zarządzanym agencie wyłącznie minimalny kod odczytujący wartości z pamięci urządzenia.
Ewolucja historyczna SNMP Ewolucja historyczna protokołów zarządzania SGMP 1987 r. (RFC 1028) Brama / Router SNMPv1 1988 r. (RFC 1067) RFC 1157 (1990) CMIP / CMIS (OSI) Złożony, ciężki stos Porażka rynkowa Kluczowe fakty historyczne: 1. SNMP zaprojektowano jako rozwiązanie tymczasowe na czas wdrożenia CMIP. 2. Prostota implementacji na mikrokontrolerach routerów zadecydowała o sukcesie SNMP. 3. RFC 1157 skodyfikowało standard i zapewniło kompatybilność w globalnym Internecie. IETF: Simple Network Management Protocol zdominował zarządzanie w sieciach IP.
Slajd 4/55
Przegląd wersji SNMP: v1, v2c oraz v3
Cel slajdu: Szczegółowe zestawienie trzech generacji protokołu SNMP z uwzględnieniem mechanizmów autoryzacji, typów liczników i modeli bezpieczeństwa.

Ewolucja standardu i wersji

Protokół SNMP przeszedł trzy zasadnicze fazy ewolucji, z których każda odpowiadała na rosnące wymagania przepustowości sieci i cyberbezpieczeństwa.

  • SNMPv1 (RFC 1157): Pierwotny standard; uwierzytelnianie jawnym ciągiem tekstowym (Community String), wyłącznie liczniki 32-bitowe, brak operacji pobierania blokowego
  • SNMPv2c (RFC 3416): Wprowadzenie kluczowej operacji GetBulkRequest, potwierdzanych powiadomień InformRequest oraz 64-bitowych liczników (Counter64); zachowano jednak nieszyfrowany model Community
  • Nieudana próba SNMPv2p / v2u: Próby wdrożenia skomplikowanych mechanizmów bezpieczeństwa na poziomie v2 zakończyły się sporami w IETF; litera 'c' w v2c oznacza powrót do prostego modelu 'Community'
  • SNMPv3 (RFC 3411): Nowoczesny standard; wprowadzenie modułowej architektury, modelu użytkowników i kluczy kryptograficznych USM oraz granularnej kontroli dostępu VACM
Zalecenie operacyjne: Wersja SNMPv1 jest uznana przez IETF za przestarzałą (Historic) i nie powinna być uruchamiana w żadnym segmencie sieci. Wersję SNMPv2c dopuszcza się wyłącznie w wydzielonych, odizolowanych sieciach zarządzających (Out-of-Band Management VLAN).
Przegląd wersji SNMP Porównanie ewolucyjne wersji SNMP SNMPv1 (1988) Brak szyfrowania Jawne hasło: Community Liczniki: tylko 32-bit Operacje: Get, Set, Trap Brak GetBulk Stan: Wycofany RFC 1157 (Historic) SNMPv2c (1996) Brak szyfrowania Jawne hasło: Community Liczniki: 64-bit (HC) Operacja: GetBulk InformRequest (ACK) Stan: Tylko odizolowane RFC 1901 / RFC 3416 SNMPv3 (2002) Pełne szyfrowanie Model USM (Użytkownicy) HMAC-SHA-2 / AES Uprawnienia: VACM Ochrona Replay Attack Stan: Obowiązujący RFC 3411-3418
Slajd 5/55
Architektura SNMP – relacja Manager, Agent i MIB
Cel slajdu: Przedstawienie trójkąta zarządzania SNMP: stacji centralnej (Manager), demona wykonawczego (Agent) oraz sformalizowanego repozytorium metadanych (MIB).

Model architektoniczny

Architektura SNMP opiera się na asymetrycznej relacji klient-serwer, w której stacja monitorująca pełni rolę nadrzędną, a nadzorowane urządzenia udostępniają lokalne parametry za pośrednictwem demona.

  • Zarządca sieci (SNMP Manager): Oprogramowanie stacji NMS odpowiedzialne za cykliczne wysyłanie zapytań, analizowanie odpowiedzi, generowanie wykresów oraz obsługę alertów
  • Agent sieciowy (SNMP Agent): Niskopoziomowy proces (demon) działający w systemie operacyjnym urządzenia (np. snmpd w Linuksie, moduł w RouterOS czy Cisco IOS), mapujący wewnętrzne struktury jądra na format SNMP
  • Baza informacji (MIB): Ustrukturyzowany zbiór definicji opisujących parametry sprzętowe i programowe, zapisany w notacji ASN.1, stanowiący wspólny słownik dla Managera i Agenta
  • Komunikacja dwukierunkowa: Odpytywanie w modelu żądanie-odpowiedź (Pull) oraz asynchroniczne powiadamianie o incydentach za pomocą pułapek Trap/Inform (Push)
Trójkąt zarządzania SNMP: Manager wie, o co zapytać (posiada pliki MIB), Agent wie, skąd pobrać wartość wewnątrz systemu (odczytuje rejestry/interfejsy), a baza MIB zapewnia jednoznaczne znaczenie semantyczne każdego pobieranego bitu informacji.
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 6/55
Manager SNMP (NMS Poller)
Cel slajdu: Przedstawienie budowy i zadań stacji zarządzającej: planowania cykli odpytywania, obsługi retransmisji, translacji MIB oraz odbioru pułapek.

Elementy składowe systemu

SNMP Manager stanowi mózg systemu monitorowania, łączący funkcje aktywnego kolektora danych, interpretera protokołu oraz centrum powiadamiania.

  • Harmonogramowanie zadań: Cykliczne wyzwalanie zapytań (najczęściej co 60 lub 300 sekund) w architekturze wielowątkowej w celu równomiernego rozłożenia obciążenia łączy
  • Obsługa zawodności transportu: Realizacja mechanizmów Timeout (czas oczekiwania na pakiet UDP) oraz Retries (liczba ponowień przed uznaniem węzła za niedostępny)
  • Kompilacja i parsowanie MIB: Lokalna biblioteka plików MIB przekształcająca ciągi numeryczne (np. .1.3.6.1.2.1.1.3.0) na przyjazne nazwy zmiennych (sysUpTimeInstance)
  • Agregacja i składowanie: Zapis pobranych wartości w bazach szeregów czasowych (RRDtool, InfluxDB, Prometheus) oraz wyliczanie pochodnych (np. bitów na sekundę z liczników bajtów)
Wydajność Managera: W dużych sieciach (powyżej 1000 urządzeń) pojedynczy wątek odpytujący nie zdąży wykonać operacji w oknie 5 minut. Dlatego nowoczesne NMS stosują rozproszone pollery (Distributed Pollers) koordynowane przez brokery kolejek, np. Redis lub RabbitMQ.
Struktura SNMP Managera Struktura wewnętrzna SNMP Managera Harmonogram zadań (Scheduler) • Kolejkowanie urządzeń (interwał 5 min) • Dynamiczny podział na procesy robocze Zarządzanie pulą workerów Silnik odpytywania (Poller Engine) • Generowanie pakietów GET / GETBULK • Kontrola limitów czasu (Timeout / Retry) Biblioteki Net-SNMP / Python pysnmp Moduł translacji MIB (Parser) • Tłumaczenie OID na czytelne etykiety • Obsługa formatów Textual Conventions Katalog /usr/share/snmp/mibs Odbiornik pułapek (Trap Receiver) • Nasłuch na porcie UDP 162 • Natychmiastowe wyzwalanie alertów Demony snmptrapd / integracja NMS
Slajd 7/55
Agent SNMP (Zarządzane urządzenie)
Cel slajdu: Przedstawienie wewnętrznej budowy agenta SNMP, mechanizmu pobierania metryk z jądra systemu oraz zabezpieczania portu UDP 161.

Elementy składowe systemu

Agent SNMP jest oprogramowaniem działającym w tle na monitorowanym urządzeniu, tłumaczącym zapytania sieciowe na bezpośrednie odczyty parametrów sprzętowych.

  • Nasłuch sieciowy: Domyślny port UDP 161; w środowiskach bezpiecznych wiązany wyłącznie z dedykowanym adresem interfejsu zarządzającego (loopback lub Management VLAN)
  • Dostęp do struktur jądra: Pobieranie danych w czasie rzeczywistym z warstwy jądra systemu operacyjnego, tablic routingu, interfejsów sieciowych oraz kontrolerów BMC/IPMI
  • Obsługa podagentów (AgentX): Architektura modułowa (RFC 2741) pozwalająca zewnętrznym aplikacjom (np. serwerom WWW, bazom danych) na rejestrowanie własnych gałęzi OID w głównym demonie
  • Implementacje systemowe: Pakiet Net-SNMP (snmpd) w systemach Linux/UNIX, wbudowane procesy w systemach sieciowych MikroTik RouterOS, Cisco IOS-XE, Juniper Junos oraz usługa SNMP Service w Windows
Protokół AgentX (RFC 2741): Standardowy protokół komunikacji między procesem nadrzędnym (Master Agent) a procesami pomocniczymi (Subagents). Umożliwia rozszerzanie funkcjonalności agenta bez konieczności modyfikowania i rekompilacji głównego demona snmpd.
Budowa Agenta SNMP Architektura demona Agenta SNMP Gniazdo sieciowe: Nasłuch na porcie UDP 161 (wszystkie lub wybrane IP) Warstwa kontroli dostępu: Weryfikacja Community String (v1/v2c) lub poświadczeń kryptograficznych USM (v3) Moduły dostępu do jądra systemu (Kernel / Hardware Providers): • Statystyki interfejsów sieciowych (/proc/net/dev, układy switch-chip) • Zużycie procesora, pamięci RAM i dysków (/proc/stat, sysinfo) • Czujniki środowiskowe: temperatura, obroty wentylatorów, napięcia zasilaczy
Slajd 8/55
Baza MIB (Management Information Base)
Cel slajdu: Przedstawienie roli i budowy plików bazy MIB, składni języka ASN.1 oraz zasad opisu obiektów zarządzanych w standardzie SMIv2.

Modelowanie informacji

Baza MIB to formalna specyfikacja opisująca obiekty zarządzane na urządzeniu sieciowym, sformatowana w czytelnym dla człowieka i parserów języku ASN.1.

  • Definicja formalna: Baza MIB nie jest plikiem bazy danych SQL, lecz tekstowym zbiorem makr w notacji ASN.1 definiującym strukturę, typy i relacje hierarchiczne parametrów
  • Struktura informacji zarządzania (SMI): Zasady tworzenia plików MIB określa standard SMIv2 (RFC 2578), precyzujący dozwolone typy danych i strukturę makr OBJECT-TYPE
  • Metadane obiektu: Każdy wpis określa nazwę, typ danych (SYNTAX), prawa dostępu (MAX-ACCESS), status standaryzacyjny oraz precyzyjny opis słowny (DESCRIPTION)
  • Relacja nadrzędności: Zapis '::= { system 3 }' jednoznacznie umieszcza obiekt sysUpTime jako trzecie dziecko w gałęzi nadrzędnej system
Plik MIB (Management Information Base): Standaryzowany plik tekstowy (.txt lub .my) zawierający definicje semantyczne obiektów sieciowych. Pliki te są instalowane na stacji NMS w celu tłumaczenia numerycznych identyfikatorów OID na postać tekstową i odwrotnie.
Baza MIB i składnia ASN.1 Struktura bazy MIB i definicja w ASN.1 Fragment pliku SNMPv2-MIB sysUpTime OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "Czas od uruchomienia podsystemu sieciowego" ::= { system 3 } Kluczowe klauzule MIB • SYNTAX Typ danych (INTEGER, TimeTicks) • MAX-ACCESS read-only, read-write, not-accessible • STATUS current, deprecated, obsolete • Pozycja w drzewie ::= { system 3 } -> .1.3.6.1.2.1.1.3
Slajd 9/55
Struktura drzewa OID (Object Identifier)
Cel slajdu: Przedstawienie hierarchicznej struktury drzewa identyfikatorów OID, zasad delegowania przestrzeni nazw oraz notacji kropkowej.

Hierarchia i adresacja

Każda zmienna w protokole SNMP posiada globalnie unikalny adres logiczny zwany identyfikatorem obiektu OID (Object Identifier), zorganizowany w postaci drzewa.

  • Hierarchia korzenia: Na samym szczycie drzewa znajdują się organizacje standaryzacyjne: iso(1), ccitt/itu-t(0) oraz wspólne joint-iso-ccitt(2)
  • Ścieżka do Internetu: Wszystkie zasoby protokołu SNMP mieszczą się pod gałęzią: iso(1).org(3).dod(6).internet(1), co daje w zapisie numerycznym prefiks .1.3.6.1
  • Notacja kropkowa: Ciąg liczb całkowitych oddzielonych kropkami reprezentuje kolejne węzły drzewa od korzenia do liścia (np. .1.3.6.1.2.1.1.1.0)
  • Zasada jednoznaczności: Dzięki scentralizowanej delegacji poddrzew przez IANA wykluczona jest kolizja identyfikatorów między różnymi producentami i standardami
Identyfikator OID (Object Identifier): Sekwencja liczb całkowitych określająca położenie obiektu w globalnym drzewie informacyjnym ITU-T/ISO. W protokole SNMP prefiks .1.3.6.1 jest punktem wyjścia dla wszystkich zmiennych sieciowych.
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 10/55
Główne gałęzie drzewa OID
Cel slajdu: Przedstawienie podziału drzewa Internet na część standaryzowaną (mgmt) oraz rozszerzenia producenckie (private enterprises).

Hierarchia i adresacja

Pod węzłem internet (1.3.6.1) wydzielono dedykowane poddrzewa realizujące różne zadania: od oficjalnych standardów IETF po specyficzne sensory producentów.

  • Gałąź mgmt (.1.3.6.1.2): Zawiera obiekty standaryzowane przez IETF; bezpośrednio pod nią znajduje się kluczowy węzeł mib-2 (.1.3.6.1.2.1), implementowany przez wszystkich dostawców
  • Gałąź experimental (.1.3.6.1.3): Przeznaczona do testowania nowych grup roboczych IETF przed ich oficjalną publikacją w dokumentach RFC
  • Gałąź private (.1.3.6.1.4): Dedykowana rozwiązaniom autonomicznym; zawiera poddrzewo enterprises (.1.3.6.1.4.1) zarządzane przez rejestr IANA
  • Rejestr kodów PEN (Private Enterprise Numbers): Każda organizacja może bezpłatnie otrzymać unikalny numer PEN w IANA (np. Cisco posiada 9, Juniper 2636, MikroTik 14988)
Praktyka inżynierska: Jeśli system NMS odpytuje nieznane urządzenie, w pierwszej kolejności sprawdza obiekty pod gałęzią 1.3.6.1.2.1 (standardowe nazwy, interfejsy i czasy pracy). Dopiero po rozpoznaniu producenta (sysObjectID) poller sięga po zaawansowane parametry z gałęzi 1.3.6.1.4.1.
Główne gałęzie drzewa OID Podział poddrzewa Internet (1.3.6.1) Standard IETF: mgmt (2) 1.3.6.1.2.1 (mib-2) • Uniwersalne dla każdego sprzętu • RFC 1213 (MIB-II) • RFC 2863 (IF-MIB) • Grupy: system, interfaces, ip, tcp, udp, icmp Gwarancja kompatybilności NMS Prywatne: enterprises (4.1) 1.3.6.1.4.1 (enterprises) • Przydzielane przez IANA firmom • Cisco (.9) • MikroTik (.14988) • Hewlett-Packard (.11) • Linux Net-SNMP (.8072) Metryki specyficzne dla sprzętu
Slajd 11/55
Standard MIB-II (RFC 1213) – przegląd grup
Cel slajdu: Przedstawienie struktury fundamentalnego standardu MIB-II opisanego w RFC 1213 oraz roli jego podstawowych grup obiektów.

Standaryzacja MIB-II

Standard MIB-II (RFC 1213) to najważniejszy dokument w historii monitorowania sieci, definiujący bazowy zbiór zmiennych dla każdego urządzenia ze stosem TCP/IP.

  • Podział funkcjonalny: MIB-II grupuje obiekty według warstw sieciowych i podsystemów urządzenia, tworząc logiczny porządek w gałęzi 1.3.6.1.2.1
  • Grupy systemowe i fizyczne: Grupa 1 (system) opisuje węzeł jako całość, natomiast grupa 2 (interfaces) udostępnia tablicę portów fizycznych i logicznych
  • Warstwa sieciowa i transportowa: Grupy ip(4), icmp(5), tcp(6) oraz udp(7) odzwierciedlają stan protokołów komunikacyjnych, w tym tabele aktywnych połączeń i statystyki błędów
  • Samoobserwacja agenta: Grupa snmp(11) dostarcza metryk na temat samego protokołu zarządzania, m.in. liczby odrzuconych pakietów z błędnym hasłem community (snmpInBadCommunityNames)
Standard MIB-II (RFC 1213): Zbiór 171 obiektów zarządzanych, zdefiniowanych w marcu 1991 roku jako uaktualnienie wcześniejszego MIB-I (RFC 1156). Do dziś stanowi obowiązkowy rdzeń telemetrii w każdym profesjonalnym urządzeniu IP.
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 12/55
Grupa system w MIB-II (1.3.6.1.2.1.1)
Cel slajdu: Szczegółowa analiza siedmiu obiektów grupy system, ich znaczenia diagnostycznego oraz zasad indeksowania instancji skalarnych (.0).

Standaryzacja MIB-II

Grupa system (.1.3.6.1.2.1.1) zawiera podstawowe metadane identyfikacyjne węzła, wykorzystywane przez systemy NMS do automatycznego katalogowania urządzeń.

  • Identyfikacja sprzętu (sysDescr / sysObjectID): sysDescr udostępnia pełny ciąg tekstowy wersji systemu; sysObjectID wskazuje unikalny identyfikator OID przypisany przez producenta do konkretnego modelu
  • Detekcja restartów (sysUpTime): Licznik typu TimeTicks zliczający setne części sekundy (10 ms); nagły spadek wartości sysUpTime jest dla NMS sygnałem nieplanowanego restartu urządzenia (reboot)
  • Metadane administracyjne: Obiekty sysContact, sysName oraz sysLocation pozwalają na automatyczne przypisanie urządzenia do lokalizacji w systemie zarządzania i wskazanie osoby odpowiedzialnej
  • Konwencja instancji skalarnej (.0): Ponieważ obiekty grupy system są zmiennymi skalarnymi (występują w systemie dokładnie raz), przy odpytywaniu wymagają dopisania sufiksu '.0'
Wartość sysServices: Wartość ta jest sumą wag 2^(L-1), gdzie L to obsługiwana warstwa modelu OSI. Przykładowo dla przełącznika L2 wartość wynosi 2 (warstwa 2: 2^(2-1)=2), dla routera L3 wynosi 6 (warstwa 2 + warstwa 3 = 2+4=6), a dla serwera aplikacyjnego 78 (warstwy 2, 3, 4 i 7).
Grupa system w MIB-II Obiekty grupy system (1.3.6.1.2.1.1) .1 sysDescr.0 Opis systemu, wersja jądra/OS, architektura CPU read-only .2 sysObjectID.0 Bazowy OID producenta identyfikujący model sprzętu read-only .3 sysUpTime.0 Czas pracy od restartu (w jednostkach 10 ms = centisekundy) read-only .4 sysContact.0 Dane kontaktowe administratora (e-mail, telefon) read-write .5 sysName.0 W pełni kwalifikowana nazwa domenowa (FQDN) lub hostname read-write .6 sysLocation.0 Fizyczna lokalizacja (np. "Serwerownia A, Szafa RACK-02") read-write .7 sysServices.0 Maska bitowa warstw modelu OSI obsługiwanych przez węzeł read-only
Slajd 13/55
Grupa interfaces i standard IF-MIB (RFC 2863)
Cel slajdu: Przedstawienie architektury tabelarycznej grupy interfaces, ograniczeń klasycznej tabeli ifTable oraz zalet rozszerzenia ifXTable w standardzie IF-MIB.

Standaryzacja MIB-II

Grupa interfaces odpowiada za monitorowanie interfejsów sieciowych. Wraz z nadejściem szybkich sieci standard został rozszerzony w dokumencie RFC 2863 (IF-MIB).

  • Architektura tabelaryczna: Obiekty interfejsowe zorganizowane są w postaci wierszy indeksowanych zmienną ifIndex, reprezentującą port fizyczny, wirtualny (VLAN) lub logiczny (loopback)
  • Statusy administracyjne i operacyjne: Rozróżnienie między stanem zamierzonym przez administratora (ifAdminStatus: up/down) a stanem fizycznym łącza warstwy L1/L2 (ifOperStatus: up/down/testing)
  • Problem przepustowości ifSpeed: Pole ifSpeed w RFC 1213 jest 32-bitową liczbą w bps, co ogranicza raportowaną prędkość do około 4.29 Gbps; w IF-MIB wprowadzono pole ifHighSpeed w jednostkach Mbps
  • Liczniki 64-bitowe (High Capacity): Kluczowe zmienne ifHCInOctets i ifHCOutOctets eliminują problem natychmiastowego przepełniania się liczników na portach 1 Gbps, 10 Gbps, 40 Gbps i 100 Gbps
Krytyczna zasada pomiarowa: Na interfejsach o przepustowości 1 Gbps i wyższej odpytywanie 32-bitowych liczników ifInOctets prowadzi do błędnych wykresów z powodu przepełnienia licznika pomiędzy próbkowaniami. Obowiązkowo należy stosować liczniki 64-bitowe ifHCInOctets z tabeli ifXTable!
Standard IF-MIB i ifXTable Tabela ifTable i rozszerzenie ifXTable (RFC 2863) Klasyczna ifTable (RFC 1213) 1.3.6.1.2.1.2.2.1... • ifIndex (unikalny indeks) • ifDescr (opis techniczny) • ifType (ethernetCsmacd itp.) • ifSpeed (max 4.29 Gbps) • ifAdminStatus / ifOperStatus • ifInOctets (Counter32) • ifOutOctets (Counter32) Nowoczesna ifXTable (RFC 2863) 1.3.6.1.2.1.31.1.1.1... • ifName (czytelna nazwa np. Gi0/1) • ifAlias (opis administratora) • ifHCInOctets (Counter64) • ifHCOutOctets (Counter64) • ifHighSpeed (w jednostkach 1 Mbps) • ifConnectorPresent Wymóg dla łączy 1G, 10G, 100G+
Slajd 14/55
Typy danych w protokole SNMP (SMIv2)
Cel slajdu: Przedstawienie katalogu typów danych zdefiniowanych w dokumencie RFC 2578 (SMIv2), z naciskiem na różnice między licznikami a miernikami.

Modelowanie informacji

Standard SMIv2 (RFC 2578) precyzuje ścisły system typów ASN.1 wykorzystywanych do reprezentowania parametrów telemetrycznych.

  • Typy bazowe ASN.1: INTEGER (wartości całkowite lub stany wyliczeniowe ENUM), OCTET STRING (ciągi znaków lub binarne adresy MAC) oraz OBJECT IDENTIFIER
  • Liczniki monotoniczne (Counter32 / Counter64): Wartości nieujemne, które mogą wyłącznie rosnąć lub ulegać przepełnieniu (zawinięciu do zera); służą do pomiaru przepływu pakietów i bajtów
  • Mierniki chwilowe (Gauge32): Wartości całkowite z zakresu 0 do 2^32-1, które mogą swobodnie rosnąć i maleć; służą do wskazywania aktualnego stanu, np. temperatury, napięcia, obciążenia pamięci
  • Zmienne czasowe (TimeTicks): Reprezentacja czasu w jednostkach centisekund (1/100 sekundy), wykorzystywana m.in. w sysUpTime oraz czasach utworzenia tras routingu
Counter a Gauge: Zmienna typu Counter sama w sobie nie informuje o prędkości – podaje wyłącznie sumę zdarzeń od restartu. Aby poznać prędkość (np. Mbps), NMS musi pobrać dwie próbki, obliczyć różnicę (Delta) i podzielić przez czas między próbkami. Zmienna Gauge podaje gotową wartość bieżącą.
Typy danych SMIv2 Typy danych SMIv2 (RFC 2578) INTEGER / Integer32 Liczba całkowita ze znakiem (-2^31 do 2^31-1) OCTET STRING Ciąg bajtów: tekst UTF-8 lub dane binarne (MAC) Counter32 / Counter64 Licznik monotoniczny; zeruje się po przepełnieniu Gauge32 Miernik bieżący; rośnie i maleje (np. temp., % CPU) TimeTicks Czas w setnych sekundy (10 ms) od zdarzenia IpAddress / BITS Dokładnie 4 oktety IPv4 / flaga bitowa Konwencje tekstowe (Textual Conventions): MacAddress, DisplayString, TruthValue
Slajd 15/55
Kodowanie danych: ASN.1 oraz reguły BER
Cel slajdu: Przedstawienie mechanizmu binarnej serializacji danych w protokole SNMP za pomocą formatu trójkowego TLV (Type-Length-Value) reguł BER.

Format transmisji danych

Podczas przesyłania pakietów przez sieć zmienne SNMP są serializowane do postaci binarnej przy użyciu reguł Basic Encoding Rules (BER).

  • Format TLV (Type-Length-Value): Każde pole danych składa się z identyfikatora typu (Tag), długości zawartości w bajtach (Length) oraz właściwego ładunku (Value)
  • Elastyczność i rozszerzalność: Odbiorca pakietu nie musi znać z góry rozmiaru pól; odczytuje nagłówek TLV i wie dokładnie, ile bajtów bufora przeznaczyć na dany parametr
  • Brak narzutu formatów tekstowych: W przeciwieństwie do formatów XML czy JSON, BER przesyła liczby i identyfikatory w kompaktowej postaci binarnej, oszczędzając pasmo łącza
  • Zagnieżdżanie struktur (SEQUENCE): Złożone jednostki protokołu (np. całe PDU lub tablice powiązań zmiennych VarBind) są kodowane jako typ SEQUENCE zawierający wewnątrz kolejne elementy TLV
Podstawowe reguły kodowania (BER - Basic Encoding Rules): Zdefiniowany przez ISO standard kodowania struktur ASN.1 do postaci binarnej. Stanowi warstwę prezentacji (L6) wbudowaną bezpośrednio w implementację bibliotek 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 16/55
SNMPv1 – budowa i ograniczenia (RFC 1157)
Cel slajdu: Przedstawienie architektury i krytycznych ograniczeń pierwszej wersji protokołu SNMP opisanej w dokumencie RFC 1157.

Ewolucja standardu i wersji

Mimo że protokół SNMPv1 (RFC 1157) zapewnił podstawy zarządzania sieciami IP, współczesne wymagania wydajnościowe i bezpieczeństwa całkowicie go dyskwalifikują.

  • Uwierzytelnianie Community String: Brak haseł użytkowników; jedynym mechanizmem autoryzacji jest nieszyfrowany ciąg tekstowy przesyłany w każdym pakiecie otwartym tekstem
  • Ograniczenie liczników Counter32: Maksymalna pojemność licznika bajtów wynosi 4.29 GB; w łączach gigabitowych prowadzi to do wielokrotnego przepełnienia w trakcie jednego cyklu próbkowania
  • Narzut operacji GetNextRequest: Pobranie tablicy wymaga wysyłania pojedynczego żądania dla każdego kolejnego wiersza (metoda walk), generując setki pakietów round-trip
  • Atomowość 'Wszystko albo nic': Błąd w jednym odpytywanym identyfikatorze unieważniał całą odpowiedź PDU kodem błędu noSuchName lub genErr, uniemożliwiając odczyt poprawnych zmiennych
Matematyka przepełnienia licznika 32-bit: Łącze 1 Gbps transmituje do 125 MB/s. Licznik 32-bitowy (4 294 967 295 bajtów) ulega przepełnieniu po zaledwie 34 sekundach! Przy standardowym odpytywaniu co 300 sekund NMS nie jest w stanie stwierdzić, ile razy licznik zawinął się w tym czasie.
Ograniczenia SNMPv1 Ograniczenia operacyjne standardu SNMPv1 Brak bezpieczeństwa • Hasło w tekście jawnym • Brak ochrony przed podsłuchem Community: public / private Tylko liczniki 32-bitowe • Max wartość: 4 294 967 295 • Zawijanie w 34 s przy 1 Gbps! Brak typu Counter64 Niska wydajność odpytywania • Tylko operacja GetNext • Tysiące zapytań dla dużej tablicy Brak operacji GetBulk Niejednoznaczne błędy • Kod genErr przy dowolnej wadzie • Brak informacji o braku instancji Trudna diagnostyka w terminalu
Slajd 17/55
SNMPv2c – usprawnienia operacyjne (RFC 3416)
Cel slajdu: Przedstawienie udoskonaleń operacyjnych wprowadzonych w SNMPv2c: operacji GetBulk, liczników Counter64 oraz mechanizmu InformRequest.

Ewolucja standardu i wersji

Standard SNMPv2c (RFC 3416) stanowił przełom wydajnościowy, wprowadzając mechanizmy niezbędne do efektywnego nadzorowania nowoczesnych sieci szerokopasmowych.

  • Operacja GetBulkRequest: Zastąpienie wielokrotnych zapytań GetNext pojedynczym pakietem pobierającym kaskadowo całe tabele za pomocą parametrów Non-repeaters i Max-repetitions
  • Liczniki 64-bitowe (Counter64): Obsługa magistrali o wysokiej przepustowości (1 Gbps i więcej); przy łączu 10 Gbps licznik 64-bitowy zawinie się dopiero po ponad 460 latach
  • Powiadomienia potwierdzane (InformRequest): Mechanizm asynchronicznego raportowania, w którym stacja NMS musi odesłać potwierdzenie odbioru (Response PDU); brak potwierdzenia skutkuje ponowieniem transmisji
  • Granularna obsługa błędów: Wprowadzenie wyjątków wewnątrz VarBind (noSuchObject, noSuchInstance, endOfMibView) zamiast unieważniania całego pakietu odpowiedzi
Parametry GetBulk: Parametr non-repeaters określa liczbę zmiennych skalarnych odpytywanych pojedynczo na początku listy, natomiast max-repetitions mówi agentowi, ile kolejnych wierszy tabeli ma zwrócić dla pozostałych zmiennych w ramach jednego pakietu odpowiedzi.
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 18/55
SNMPv3 – architektura bezpieczeństwa (RFC 3411-3418)
Cel slajdu: Przedstawienie modułowej architektury SNMPv3 opisanej w RFC 3411, rozdzielenia silnika na podsystemy oraz ról modeli USM i VACM.

Bezpieczeństwo i SNMPv3

Standard SNMPv3 (RFC 3411) wprowadził zupełnie nową architekturę bezpieczeństwa, przekształcając SNMP w system odporny na podsłuch, modyfikację i podszywanie się.

  • Unikalny identyfikator silnika (snmpEngineID): Globalnie unikalny ciąg heksadecymalny identyfikujący instancję agenta lub managera, wykorzystywany do synchronizacji zegarów i derywacji kluczy
  • Model bezpieczeństwa USM (RFC 3414): User-based Security Model odpowiada za uwierzytelnianie użytkowników, integralność pakietów za pomocą haszowania HMAC oraz poufność poprzez szyfrowanie symetryczne AES
  • Model kontroli dostępu VACM (RFC 3415): View-based Access Control Model definiuje granularne uprawnienia do poszczególnych poddrzew OID w zależności od grupy, kontekstu i poziomu bezpieczeństwa
  • Trzy poziomy bezpieczeństwa: noAuthNoPriv (identyfikacja nazwą użytkownika), authNoPriv (weryfikacja integralności i tożsamości) oraz authPriv (pełne szyfrowanie ładunku)
snmpEngineID: Kluczowy parametr SNMPv3. Ponieważ klucze kryptograficzne są lokalizowane (localized keys) na podstawie hasła użytkownika i EngineID konkretnego agenta, to samo hasło wygeneruje zupełnie inny klucz binarny na każdym urządzeniu sieciowym.
Architektura SNMPv3 Modularna architektura SNMPv3 (RFC 3411) Podsystem dyspozytora (Dispatcher) & EngineID Model USM (RFC 3414) User-based Security Model • Uwierzytelnianie: HMAC-SHA-2 • Szyfrowanie (Privacy): AES-128/256 Model VACM (RFC 3415) View-based Access Control • Grupy użytkowników i widoki MIB • Filtrowanie gałęzi read/write/notify Trzy poziomy bezpieczeństwa SNMPv3 (Security Levels): 1. noAuthNoPriv (brak autoryzacji i szyfrowania) | 2. authNoPriv (tylko podpis) | 3. authPriv (pełne szyfrowanie)
Slajd 19/55
SNMPv3 USM – uwierzytelnianie i integralność
Cel slajdu: Przedstawienie mechanizmów uwierzytelniania w modelu USM, ewolucji algorytmów haszujących do standardu SHA-2 oraz ochrony przed atakami retransmisji.

Bezpieczeństwo i SNMPv3

Podsystem uwierzytelniania w modelu USM (RFC 3414) zapewnia pewność tożsamości nadawcy oraz gwarancję, że pakiet nie został zmodyfikowany w trakcie transmisji.

  • Kod uwierzytelniania wiadomości (HMAC): Integralność pakietu jest weryfikowana za pomocą funkcji skrótu z kluczem tajnym (Keyed-Hashing for Message Authentication), dołączanej w nagłówku jako msgAuthenticationParameters
  • Ewolucja do standardu SHA-2 (RFC 7860): Odejście od podatnych na kolizje funkcji MD5 i SHA-1 na rzecz nowoczesnych algorytmów HMAC-SHA-224, HMAC-SHA-256, HMAC-SHA-384 oraz HMAC-SHA-512
  • Lokalizacja kluczy (Key Localization): Klucz uwierzytelniający nie jest przesyłany przez sieć; jest wyliczany lokalnie z hasła użytkownika oraz unikalnego identyfikatora snmpEngineID urządzenia
  • Ochrona przed powtórzeniem pakietu (Anti-Replay): Mechanizm zegarów bazujący na parach snmpEngineBoots i snmpEngineTime z oknem tolerancji 150 sekund uniemożliwia ponowne wstrzyknięcie przechwyconych pakietów
Mechanizm okna czasowego (RFC 3414): Agent SNMP akceptuje pakiety tylko wtedy, gdy zawarty w nich czas zgadza się z jego wewnętrznym zegarem z dokładnością do 150 sekund. Przy pierwszej komunikacji Manager wykonuje procedurę automatycznego próbkowania (Time Synchronization Discovery).
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 20/55
SNMPv3 USM – szyfrowanie i poufność (Privacy)
Cel slajdu: Przedstawienie mechanizmów zapewnienia poufności transmisji w modelu USM, standardu AES-128 opisanego w RFC 3826 oraz struktury zaszyfrowanego pakietu scopedPDU.

Bezpieczeństwo i SNMPv3

Podsystem poufności (Privacy) w modelu USM chroni przesyłane informacje przed podsłuchem, szyfrując całą jednostkę danych operacyjnych (scopedPDU).

  • Szyfrowanie symetryczne: Zabezpieczenie ładunku przed podsłuchem w sieciach operatorskich i niezaufanych segmentach LAN/WLAN
  • Standard AES-128 (RFC 3826): Zastosowanie zaawansowanego algorytmu szyfrowania Advanced Encryption Standard w trybie Cipher Feedback (CFB-128) jako oficjalnego standardu IETF
  • Przestarzały algorytm DES: Pierwotny standard RFC 3414 opierał się na 56-bitowym algorytmie CBC-DES; ze względu na podatność na złamanie metodą brute-force w czasie poniżej 24 godzin DES jest obecnie zakazany
  • Struktura scopedPDU: Nagłówek pakietu zawierający metadane bezpieczeństwa pozostaje jawny dla dyspozytora, natomiast właściwe dane (Request-ID, kody błędów, numery OID i wartości) stają się nieczytelnym ciągiem bajtów
Wymóg wstępny szyfrowania: W protokole SNMPv3 nie ma możliwości włączenia szyfrowania bez jednoczesnego włączenia uwierzytelniania! Poziom privNoAuth nie istnieje w specyfikacji; poufność można uruchomić wyłącznie na poziomie authPriv.
Szyfrowanie SNMPv3 Privacy Szyfrowanie ładunku PDU (Privacy) Algorytm CBC-DES • 56-bitowy klucz DES Zdefiniowany w RFC 3414 • Podatny na brute-force Kategorycznie zabroniony! Standard AES (RFC 3826) • AES-128 CFB Mode Oficjalny standard IETF • Rozszerzenia AES-256 Wspierane w Net-SNMP i Cisco Struktura zaszyfrowanego pakietu na przewodzie: [ IP / UDP ] [ msgVersion: 3 ] [ msgGlobalData: flags=authPriv ] [ msgSecurityParameters: user="nms-admin", EngineID, Salt ] [ scopedPDU: ZASZYFROWANY CIĄG BAJTÓW AES (Niewidoczny OID) ]
Slajd 21/55
SNMPv3 VACM – kontrola dostępu oparta na widokach
Cel slajdu: Przedstawienie modelu VACM opisanego w dokumencie RFC 3415, zasad definiowania grup, widoków MIB oraz mapowania uprawnień.

Bezpieczeństwo i SNMPv3

Model VACM (RFC 3415) odpowiada za autoryzację, określając precyzyjnie, które gałęzie drzewa OID mogą być odczytywane, modyfikowane lub wysyłane w powiadomieniach.

  • Pojęcie widoku MIB (MIB View): Podzbiór globalnego drzewa OID zdefiniowany jako suma rodzin poddrzew włączonych (included) lub wykluczonych (excluded) za pomocą masek bitowych
  • Trójstopniowe mapowanie: Struktura relacji: Użytkownicy są przypisywani do Grup Bezpieczeństwa; Grupy posiadają Reguły Dostępu; Reguły Dostępu wskazują konkretne Widoki MIB
  • Trzy typy operacji (Prawa): Niezależne widoki dla odczytu (read-view), zapisu/konfiguracji (write-view) oraz wysyłania powiadomień pułapek (notify-view)
  • Separacja kontekstowa (Contexts): Możliwość udostępniania różnych instancji tej samej bazy MIB w zależności od kontekstu wirtualizacji (np. różne tabele routingu w VRF)
Model VACM (View-based Access Control Model): Standard IETF formalizujący macierz kontroli dostępu do obiektów SNMP. Pozwala administratorowi zagwarantować zasadę najmniejszych uprawnień (Principle of Least Privilege) w zarządzaniu siecią.
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 22/55
Zagrożenia community string w SNMPv1/v2c
Cel slajdu: Przedstawienie wektorów cyberzagrożeń wynikających ze stosowania protokołów SNMPv1 i v2c w sieciach produkcyjnych.

Analiza podatności i zagrożeń

Wykorzystywanie nieszyfrowanych wersji protokołu SNMP bez odpowiednich zabezpieczeń sieciowych tworzy krytyczne luki w architekturze cyberbezpieczeństwa organizacji.

  • Przechwytywanie poświadczeń (Sniffing): Ciąg community string jest transmitowany w postaci czystego tekstu ASCII; przejęcie pakietu ujawnia hasło dostępowe do wszystkich urządzeń w danej wspólnocie
  • Domyślne poświadczenia producentów: Wielu producentów dostarcza sprzęt z fabrycznie włączonymi wspólnotami 'public' (read-only) i 'private' (read-write); brak ich zmiany umożliwia natychmiastowe przejęcie kontroli przez skanery
  • Zdalna modyfikacja parametrów (Malicious SET): Dostęp read-write pozwala na zmianę konfiguracji tras routingu, wyłączanie portów transmisyjnych lub wymuszenie pobrania konfiguracji routera na zewnętrzny serwer TFTP atakującego
  • Ataki wzmacniające DDoS (Amplification Attack): Wykorzystanie bezpołączeniowości UDP i operacji GetBulk: wysłanie małego żądania ze sfałszowanym adresem IP ofiary generuje potężną odpowiedź, wysycającą łącze atakowanego celu
Zasada obrony w głąb (Defense in Depth): Jeżeli wdrożenie SNMPv3 nie jest chwilowo możliwe z powodu ograniczeń starego sprzętu, wersję SNMPv2c należy bezwzględnie zabezpieczyć: 1) zmienić domyślne community na losowy ciąg min. 16 znaków, 2) zablokować operacje SET, 3) wymusić listy ACL zezwalające na ruch wyłącznie z IP serwera NMS.
Zagrożenia SNMPv1/v2c Wektory ataków na protokoły SNMPv1 i SNMPv2c 1. Podsłuch sieciowy (Sniffing) • Hasło przesyłane otwartym tekstem • Prosty filtr Wireshark: snmp Przejęcie pełnej kontroli 2. Ataki siłowe (Brute-Force) • Domyślne hasła: public / private • Skanery: onesixtyone, nmap Tysiące prób na sekundę 3. Rekonfiguracja (Złośliwy SET) • Zmiana IP, wyłączenie interfejsu • Pobranie pliku konfiguracyjnego TFTP Paraliż infrastruktury sieciowej 4. Wzmocnienie ataku (DDoS Amplification) • Podszycie pod IP ofiary (UDP spoofing) • Odpowiedź GetBulk 50x większa Zalanie łącza docelowego
Slajd 23/55
Tabela porównawcza wersji SNMP: v1 vs v2c vs v3
Cel slajdu: Kompleksowe zestawienie parametrów technicznych, operacyjnych i bezpieczeństwa wszystkich trzech generacji protokołu SNMP w formie matrycy decyzyjnej.

Ewolucja standardu i wersji

Zestawienie właściwości poszczególnych wersji protokołu SNMP ułatwia inżynierowi dobór odpowiedniego wariantu w zależności od wymogów bezpieczeństwa i środowiska sieciowego.

  • Uwierzytelnianie i szyfrowanie: SNMPv1 i v2c przesyłają hasła jawnym tekstem; SNMPv3 zapewnia kryptograficzne podpisy HMAC-SHA-2 oraz symetryczne szyfrowanie AES-128/256
  • Wydajność operacyjna: SNMPv2c i v3 oferują operację GetBulkRequest oraz liczniki 64-bitowe, gwarantując skalowalność na łączach wielogigabitowych
  • Niezawodność zdarzeń: Wprowadzenie potwierdzanych komunikatów InformRequest w v2c i v3 rozwiązuje problem bezpowrotnej utraty pułapek UDP Trap w obciążonych sieciach
  • Status wdrożeniowy: Wersja v1 jest historyczna i zakazana; wersja v2c dopuszczalna wyłącznie w bezpiecznych sieciach wewnętrznych; wersja v3 stanowi obowiązujący standard produkcyjny
Kryterium wyboru: Jeśli urządzenie wspiera SNMPv3, zawsze należy wybrać poziom authPriv z algorytmami SHA-256 i AES-128. SNMPv2c wybieramy wyłącznie w przypadku starszych urządzeń przemysłowych (IoT, sterowniki PLC), izolując je w dedykowanym VLAN-ie bez dostępu do Internetu.
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 24/55
Warstwa transportowa i porty protokołu SNMP
Cel slajdu: Przedstawienie specyfiki transportu UDP w protokole SNMP, roli portów 161 i 162 oraz reguł filtrowania ruchu na zaporach sieciowych.

Mechanizmy komunikacji

Domyślnym protokołem transportowym dla SNMP jest bezpołączeniowy User Datagram Protocol (UDP), który charakteryzuje się minimalnym narzutem transmisyjnym.

  • Port UDP 161 (snmp): Port nasłuchu agenta na zarządzanym urządzeniu; przyjmuje żądania GetRequest, GetNextRequest, GetBulkRequest oraz SetRequest od stacji NMS
  • Port UDP 162 (snmptrap): Port nasłuchu demona snmptrapd na stacji NMS; przyjmuje asynchroniczne powiadomienia o zdarzeniach (Trap i InformRequest) wysyłane przez urządzenia
  • Przyczyny wyboru UDP: Brak konieczności zestawiania trójstopniowego uścisku dłoni (TCP 3-way handshake); możliwość wysłania powiadomienia Trap w warunkach przeciążenia lub degradacji łącza
  • Problem fragmentacji IP: Standardowy rozmiar datagramu SNMP jest projektowany tak, aby mieścił się w standardowym MTU sieci Ethernet (1500 bajtów), zapobiegając fragmentacji pakietów
Transport alternatywny: Choć UDP jest standardem dominującym, specyfikacja RFC 3430 dopuszcza transport SNMP przez TCP, a dokument RFC 6353 (TLS/DTLS for SNMP) definiuje bezpieczną transmisję przez porty TCP 10161 (SNMP-TLS) oraz UDP 10161 (SNMP-DTLS).
Warstwa transportowa UDP Warstwa transportowa UDP i separacja portów Port UDP 161 (snmp) Odpytywanie aktywne (Polling) • Serwer: Agent na urządzeniu • Klient: Stacja NMS (port losowy) • PDU: GET, GETNEXT, GETBULK, SET Port UDP 162 (snmptrap) Raportowanie pasywne (Events) • Serwer: Demon snmptrapd na NMS • Nadawca: Agent na urządzeniu • PDU: TRAPv1, TRAPv2, INFORM Zasady konfiguracji zapor sieciowych (Firewall): • Na routerach i przełącznikach otwieramy wejściowy port UDP 161 (tylko dla IP serwera NMS) • Na serwerze centralnym NMS otwieramy wejściowy port UDP 162 dla pułapek z całej podsieci
Slajd 25/55
Budowa pakietu SNMP (Protocol Data Unit - PDU)
Cel slajdu: Przedstawienie wewnętrznej struktury jednostki PDU protokołu SNMP, roli identyfikatora Request-ID, kodów błędów oraz listy VarBinds.

Format transmisji danych

Jednostka danych protokołu SNMP (PDU) to ustandaryzowany blok danych przenoszący żądania i odpowiedzi telemetryczne wewnątrz ładunku transportowego UDP.

  • Pole PDU Type: Określa typ operacji (np. GetRequest=0, GetNextRequest=1, Response=2, SetRequest=3, Trap=4, GetBulkRequest=5, InformRequest=6)
  • Identyfikator żądania (Request-ID): Losowa 32-bitowa liczba całkowita generowana przez managera; pozwala na bezbłędne dopasowanie asynchronicznej odpowiedzi agenta do wysłanego zapytania
  • Status i indeks błędu (Error-Status / Error-Index): Error-Status określa rodzaj problemu (np. noError=0, tooBig=1, noSuchName=2, badValue=3, genErr=5); Error-Index wskazuje, która zmienna z listy wywołała błąd
  • Lista powiązań zmiennych (VarBinds): Wektor par [OID, Wartość]; w żądaniu GET pole wartości ma typ Null, natomiast w odpowiedzi Response agent wstawia odczytany parametr
Optymalizacja VarBinds: Wysłanie jednego pakietu GET z listą 20 numerów OID jest 20-krotnie bardziej wydajne niż wysłanie 20 oddzielnych pakietów GET. Nowoczesne systemy NMS dynamicznie pakują zapytania do pojedynczych PDU, pilnując jedynie limitu rozmiaru MTU.
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 26/55
Konfiguracja agenta snmpd w systemie Linux
Cel slajdu: Przedstawienie praktycznej konfiguracji demona Net-SNMP (snmpd) w systemie Linux z zachowaniem reguł bezpieczeństwa sieciowego.

Wdrożenie i konfiguracja urządzeń

Demon snmpd wchodzący w skład pakietu Net-SNMP jest standardem de facto monitorowania systemów Linux/UNIX, konfigurowanym za pomocą pliku `/etc/snmp/snmpd.conf`.

  • Ograniczenie gniazda (agentAddress): Domyślna konfiguracja często wiąże agenta ze wszystkimi interfejsami (0.0.0.0); dyrektywa agentAddress pozwala na nasłuch wyłącznie na adresie pętli zwrotnej lub dedykowanym IP w sieci zarządzającej
  • Konfiguracja SNMPv2c (rocommunity): Dyrektywa rocommunity definiuje wspólnotę tylko do odczytu z opcjonalnym ograniczeniem do źródłowego adresu IP managera NMS oraz wskazanego widoku MIB
  • Tworzenie użytkowników SNMPv3 (net-snmp-create-v3-user): Bezpieczne dodawanie kont poprzez dedykowany skrypt przy zatrzymanym demonie snmpd, zapobiegający wyciekowi haseł w plikach konfiguracyjnych
  • Przeładowanie konfiguracji: Weryfikacja poprawności składniowej i zastosowanie zmian za pomocą `sudo systemctl restart snmpd` lub wysłania sygnału SIGHUP
Tworzenie konta v3 w terminalu:
sudo systemctl stop snmpd
sudo net-snmp-create-v3-user -ro -A HasloAuth123 -a SHA-256 -X HasloPriv456 -x AES nms-user
sudo systemctl start snmpd
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 27/55
Konfiguracja agenta SNMP w MikroTik RouterOS
Cel slajdu: Przedstawienie procedury bezpiecznej konfiguracji usługi SNMP w systemie MikroTik RouterOS za pośrednictwem terminala CLI.

Wdrożenie i konfiguracja urządzeń

System MikroTik RouterOS posiada wbudowanego agenta SNMP obsługującego zarówno wersje v1/v2c, jak i zaawansowany model kryptograficzny SNMPv3.

  • Lokalizacja w menu CLI: Zarządzanie demonem odbywa się w podmenu `/snmp` oraz `/snmp community` za pośrednictwem konsoli SSH lub programu WinBox
  • Wyłączenie profilu public: Kluczowy krok hardeningowy; domyślna wspólnota 'public' powinna zostać natychmiast wyłączona lub usunięta
  • Filtracja adresów (addresses): RouterOS pozwala na ścisłe zdefiniowanie dozwolonych adresów IP stacji zarządzających na poziomie samej wspólnoty (dyrektywa addresses=x.x.x.x/32)
  • Konfiguracja profilu v3 (security=private): Wybór trybu private odpowiada poziomowi authPriv; konfiguracja wymaga podania protokołu haszowania (SHA256) oraz szyfrowania (AES)
Praktyka RouterOS v7: W systemie RouterOS v7 dodano pełną obsługę rodziny algorytmów SHA-2 (SHA256, SHA512). Zaleca się stosowanie authentication-protocol=SHA256 oraz encryption-protocol=AES w celu zapewnienia maksymalnego bezpieczeństwa.
Konfiguracja MikroTik SNMP Konfiguracja SNMP w MikroTik RouterOS (v7) [admin@MikroTik-GW] > /snmp # 1. Konfiguracja wspólnoty v3 z autoryzacją i szyfrowaniem community add name=v3-mon security=private \ authentication-protocol=SHA256 authentication-password=AuthPass123 \ encryption-protocol=AES encryption-password=PrivPass456 \ addresses=192.168.53.50/32 read-access=yes write-access=no # 2. Wyłączenie domyślnej wspólnoty 'public' community set [find name=public] disabled=yes # 3. Uruchomienie usługi i parametry węzła set enabled=yes contact="noc@firma.pl" location="Serwerownia RACK-2" \ trap-version=2 trap-target=192.168.53.50 trap-community=v3-mon
Slajd 28/55
Konfiguracja agenta SNMP w systemie Windows Server
Cel slajdu: Przedstawienie procedury instalacji i konfiguracji usługi SNMP w systemie Windows Server oraz omówienie jej ograniczeń technologicznych.

Wdrożenie i konfiguracja urządzeń

W środowisku Windows Server usługa SNMP Service stanowi opcjonalny składnik systemu, instalowany za pośrednictwem menedżera ról lub konsoli PowerShell.

  • Instalacja funkcji systemowej: Polecenie PowerShell: `Install-WindowsFeature -Name SNMP-Service -IncludeManagementTools` instaluje usługę oraz przystawkę konfiguracyjną
  • Konfiguracja zabezpieczeń (services.msc): Właściwości usługi 'SNMP Service', zakładka 'Zabezpieczenia' (Security); definiowanie dozwolonych wspólnot oraz listy zaufanych hostów zarządzających
  • Ograniczenie architektoniczne Windows: Natywna usługa firmy Microsoft zatrzymała się na standardzie SNMPv2c; system Windows nie posiada wbudowanego wsparcia dla protokołu SNMPv3
  • Dedykowany port w zaporze: Automatyczne utworzenie reguły Windows Defender Firewall zezwalającej na ruch przychodzący na port UDP 161
Stan wsparcia SNMP w Windows: Firma Microsoft oznaczyła natywną usługę SNMP Service jako przestarzałą (Deprecated). W nowoczesnych wdrożeniach serwerów Windows do celów telemetrycznych zaleca się stosowanie protokołów WinRM/WMI, dedykowanych eksporterów Prometheus (windows_exporter) lub portu Net-SNMP.
SNMP w Windows Server Konfiguracja usługi SNMP w Windows Server 1. Instalacja składnika • Menedżer serwera (Add Roles) • Składnik: SNMP Service Install-WindowsFeature -Name SNMP-Service 2. Zakładka Security • Accepted community names: MonCorpCommunity (READ ONLY) • Accept SNMP packets from: 192.168.53.50 (Tylko NMS!) Ograniczenie natywnego agenta Windows: • Natywna usługa SNMP Service w Windows obsługuje wyłącznie SNMPv1 i SNMPv2c! • Brak natywnego wsparcia dla SNMPv3 wymusza stosowanie zewnętrznych agentów • Alternatywa produkcyjna: instalacja Net-SNMP for Windows lub agentów Zabbix/WMI
Slajd 29/55
Narzędzia linii poleceń Net-SNMP
Cel slajdu: Przedstawienie zestawu narzędzi CLI z pakietu Net-SNMP służących do odpytywania, testowania i diagnozowania urządzeń sieciowych.

Praktyka laboratoryjna i narzędzia

Projekt Net-SNMP dostarcza podstawowy zestaw narzędzi konsolowych w systemach Linux, stanowiących fundament pracy każdego inżyniera sieciowego.

  • Narzędzia pobierania pojedynczego (snmpget / snmpgetnext): Pobieranie konkretnej instancji zmiennej; snmpget wymaga podania pełnego OID wraz z indeksem (np. .0), natomiast snmpgetnext zwraca następny węzeł w drzewie
  • Narzędzia pobierania masowego (snmpwalk / snmpbulkwalk): Cykliczne przeszukiwanie całego poddrzewa; snmpbulkwalk wykorzystuje pakiety GetBulk, wykonując operację wielokrotnie szybciej niż snmpwalk
  • Modyfikacja parametrów (snmpset): Wysyłanie żądania zapisu; wymaga podania typu danych (np. i dla INTEGER, s dla STRING, x dla HEX) oraz odpowiednich uprawnień read-write
  • Parser i translacja (snmptranslate): Niezastąpione narzędzie diagnostyczne pozwalające na konwersję nazw symbolicznych na kropkowe OID, inspekcję drzewa MIB oraz badanie typów
Pakiet Net-SNMP: Otwartoźródłowy pakiet programistyczny rozwijany od 1992 roku (początkowo jako UCD-SNMP). Zawiera demona snmpd, demona snmptrapd, biblioteki w języku C oraz zestaw uniwersalnych narzędzi CLI.
Narzędzia Net-SNMP CLI Pakiet narzędziowy Net-SNMP CLI snmpget Odczyt dokładnie jednej lub wielu instancji OID snmpgetnext Pobranie następnika leksykograficznego w drzewie snmpwalk Automatyczny zrzut całego poddrzewa (pętla GetNext) snmpbulkwalk Szybki zrzut poddrzewa operacjami GetBulk (v2c/v3) snmpset Zdalna modyfikacja wartości zmiennej na agencie snmptranslate Translacja między nazwami MIB a liczbami OID snmptrap Ręczne generowanie i wysyłanie pułapek testowych snmptrapd Serwis nasłuchujący i rejestrujący trapy na porcie 162
Slajd 30/55
Przykłady zapytań SNMPv2c w terminalu
Cel slajdu: Przedstawienie praktycznej składni poleceń SNMPv2c w terminalu systemu Linux, interpretacji parametrów oraz flag formatowania wyjścia.

Praktyka laboratoryjna i narzędzia

Wywoływanie poleceń Net-SNMP wymaga znajomości podstawowych flag określających wersję protokołu, poświadczenia oraz formatowanie wynikowe.

  • Flagi podstawowe (-v oraz -c): Opcja `-v2c` definiuje wersję protokołu, a flaga `-c nazwa` podaje łańcuch wspólnoty (Community String)
  • Odpytywanie skalarne (snmpget): Zawsze wymaga wskazania dokładnego numeru instancji (zazwyczaj `.0` dla zmiennych pojedynczych, np. `sysUpTime.0`)
  • Pobieranie tabelaryczne (snmpbulkwalk): Zalecane narzędzie do inspekcji tablic; wysyła żądania GetBulk, redukując czas trwania zrzutu nawet o 90% względem zwykłego snmpwalk
  • Flagi formatowania wyjścia (-O): Przełącznik `-On` wyświetla OID czysto numerycznie; `-Os` skraca etykiety MIB; `-Oq` eliminuje zbędne spacje i znaki równości ułatwiając parsowanie w skryptach Bash
Flaga -m w systemach Debian/Ubuntu: W systemach Debian domyślnie wyłączone jest ładowanie baz MIB. Aby polecenia CLI poprawnie interpretowały nazwy tekstowe, należy podać flagę -m +ALL lub załadować konkretny moduł: snmpget -v2c -c public -m SNMPv2-MIB localhost sysDescr.0.
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 31/55
Przykłady zapytań SNMPv3 w terminalu
Cel slajdu: Przedstawienie zaawansowanej składni wywołań SNMPv3 na najwyższym poziomie bezpieczeństwa authPriv z wykorzystaniem algorytmów SHA-256 oraz AES.

Praktyka laboratoryjna i narzędzia

Wersja SNMPv3 wymaga podania w linii poleceń zestawu parametrów kryptograficznych definiujących tożsamość, algorytmy oraz hasła dostępowe.

  • Użytkownik i poziom bezpieczeństwa (-u, -l): Flaga `-u nazwa` wskazuje konto w modelu USM; opcja `-l authPriv` wymusza najwyższy poziom z pełnym szyfrowaniem
  • Parametry uwierzytelniania (-a, -A): Flaga `-a SHA-256` (lub SHA) określa algorytm haszowania; przełącznik `-A hasło` definiuje hasło autoryzacyjne użytkownika
  • Parametry poufności (-x, -X): Flaga `-x AES` definiuje algorytm symetryczny AES-128; przełącznik `-X hasło` podaje hasło szyfrujące ładunek PDU
  • Plik konfiguracyjny klienta (~/.snmp/snmp.conf): Aby uniknąć wpisywania długiego ciągu flag przy każdym wywołaniu, parametry te można zdefiniować w pliku konfiguracyjnym użytkownika
Konfiguracja ~/.snmp/snmp.conf:
defVersion 3
defSecurityName nms-admin
defSecurityLevel authPriv
defAuthType SHA-256
defAuthPassphrase SuperAuthPass123
defPrivType AES
defPrivPassphrase SuperPrivPass456
Dzięki temu wystarczy wpisać: snmpget 192.168.53.84 sysUpTime.0!
Przykłady SNMPv3 CLI Praktyczne zapytania SNMPv3 w terminalu (authPriv) jnowak@terminal:~$ snmpget -v3 authPriv # Pełne zapytanie z uwierzytelnianiem SHA i szyfrowaniem AES $ snmpget -v3 \ -u nms-admin \ -l authPriv \ -a SHA-256 -A "SuperAuthPass123" \ -x AES -X "SuperPrivPass456" \ 192.168.53.84 sysUpTime.0 # Prawidłowa odpowiedź zdeszyfrowana przez klienta: DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1298400) 3:36:24.00 Flagi: -u użytkownik | -l poziom | -a alg. autoryzacji | -x alg. szyfrowania
Slajd 32/55
Narzędzia graficzne: Przeglądarki MIB (MIB Browser)
Cel slajdu: Przedstawienie roli graficznych przeglądarek MIB w eksploracji nieznanych urządzeń, kompilacji plików producenckich oraz testowaniu tabelarycznym.

Praktyka laboratoryjna i narzędzia

Graficzne przeglądarki MIB Browser umożliwiają intuicyjną, wizualną nawigację po drzewie OID bez konieczności pamiętania numerycznych ścieżek.

  • Popularne oprogramowanie: iReasoning MIB Browser, ManageEngine MIB Browser oraz wbudowane narzędzia diagnostyczne w platformach NMS
  • Wizualizacja drzewa hierarchicznego: Prezentacja węzłów w postaci rozwijalnego drzewa katalogów; kliknięcie węzła natychmiast wyświetla jego opis semantyczny, typ oraz prawa dostępu
  • Wbudowany kompilator MIB: Możliwość wczytania plików MIB dostarczonych przez producenta sprzętu; program automatycznie weryfikuje zależności i umieszcza gałąź pod odpowiednim OID
  • Widok tabelaryczny (SNMP Table View): Automatyczne mapowanie wierszy i kolumn tabeli (np. ifTable), prezentujące parametry interfejsów w czytelnej siatce danych
Zastosowanie laboratoryjne: MIB Browser jest idealnym narzędziem podczas integracji nietypowych urządzeń (np. zasilaczy UPS, agregatów prądotwórczych, czujników klimatyzacji), gdy producent dostarcza plik MIB, a inżynier musi zidentyfikować OID konkretnego sensora.
Graficzny MIB Browser Graficzna inspekcja drzewa OID w MIB Browser Drzewo MIB (GUI Tree) ▼ iso(1) ▼ org(3) ▼ dod(6) ▼ internet(1) ▼ mgmt(2) ▼ mib-2(1) ► system(1) ► interfaces(2) ▼ private(4) ► enterprises(1) Panel operacyjny i tabela Host: 192.168.53.84 | Port: 161 Operacja: SNMP Walk / Table View ifIndex | ifDescr | ifOperStatus 1 | ether1 | up(1) 2 | ether2 | down(2) 3 | wlan1 | up(1) Funkcje MIB Browser: • Kompilacja zewnętrznych plików MIB (.my/.txt) • Wizualny edytor tabel SNMP Table View
Slajd 33/55
Prywatne bazy MIB producentów (Enterprises)
Cel slajdu: Przedstawienie struktury gałęzi prywatnych producentów w poddrzewie 1.3.6.1.4.1 oraz sposobu rejestrowania i wykorzystywania kodów PEN.

Rozszerzenia producenckie

Poddrzewo enterprises (.1.3.6.1.4.1) stanowi przestrzeń innowacji dla producentów sprzętu, pozwalając na publikowanie metryk wykraczających poza standardy IETF.

  • Rejestr IANA PEN: Internet Assigned Numbers Authority przydziela unikalny numer PEN (Private Enterprise Number) każdej zarejestrowanej organizacji
  • Cisco Systems (.1.3.6.1.4.1.9): Tysiące wyspecjalizowanych modułów MIB: CISCO-PROCESS-MIB (obciążenie CPU per proces), CISCO-ENVMON-MIB (wentylatory, zasilacze, temperatura)
  • MikroTik (.1.3.6.1.4.1.14988): Dedykowane moduły MIKROTIK-MIB: statystyki sieci bezprzewodowych, stan zasilania PoE, napięcie na wejściu zasilania, temperatura płyty RouterBOARD
  • Rozszerzenia Net-SNMP (.1.3.6.1.4.1.8072): Możliwość wykonywania własnych skryptów Bash/Python na serwerze i udostępniania ich wyników przez SNMP za pomocą dyrektywy `extend`
Dyrektywa extend w snmpd.conf:
Dodanie linijki: extend check_users /usr/bin/who | /usr/bin/wc -l
tworzy dynamiczny OID w gałęzi .1.3.6.1.4.1.8072.1.3.2..., zwracający bieżącą liczbę zalogowanych użytkowników!
Prywatne bazy Enterprises Prywatne poddrzewa producentów (1.3.6.1.4.1) Cisco Systems (.9) 1.3.6.1.4.1.9 (ciscoEnvMon, ciscoMemoryPool) MikroTik SIA (.14988) 1.3.6.1.4.1.14988 (mtxrWireless, mtxrHlHealth) Hewlett Packard Ent. (.11) 1.3.6.1.4.1.11 (hpSwitch, procurve, iLO) Juniper Networks (.2636) 1.3.6.1.4.1.2636 (jnxBoxAnatomy, jnxOperating) Net-SNMP Project (.8072) 1.3.6.1.4.1.8072 (netSnmpObjects, extend) APC by Schneider (.318) 1.3.6.1.4.1.318 (PowerNet-MIB, UPS battery) Rejestr kodów PEN IANA: https://www.iana.org/assignments/enterprise-numbers
Slajd 34/55
Standard HOST-RESOURCES-MIB (RFC 2790)
Cel slajdu: Przedstawienie standardu RFC 2790 dedykowanego do monitorowania zasobów sprzętowych i programowych serwerów operacyjnych.

Standardy telemetryczne

Standard HOST-RESOURCES-MIB (RFC 2790) rozszerza SNMP o ujednolicony model nadzoru nad serwerami z systemami Linux, Windows i UNIX.

  • Lokalizacja w drzewie (.1.3.6.1.2.1.25): Standardowa gałąź pod mib-2 dedykowana serwerom i stacjom roboczym; wspierana natywnie przez Net-SNMP oraz Windows SNMP Service
  • Nadzór nad procesorami (hrProcessorLoad): Tabela rejestrująca średnie obciążenie każdego rdzenia procesora w procentach z ostatniej minuty
  • Pamięć i dyski (hrStorageTable): Zunifikowane podejście do magazynu: każda partycja dyskowa, pamięć fizyczna RAM oraz przestrzeń wymiany (Swap) jest reprezentowana jako wiersz o określonej liczbie bloków (hrStorageAllocationUnits)
  • Inspekcja procesów (hrSWRunTable): Możliwość zdalnego audytu uruchomionych procesów systemowych (nazwa pliku, parametry startowe, zużycie CPU i pamięci przez konkretny PID)
Matematyka zajętości dysku z hrStorage:
Rozmiar całkowity = hrStorageSize * hrStorageAllocationUnits
Rozmiar zajęty = hrStorageUsed * hrStorageAllocationUnits
Gwarantuje to poprawny odczyt macierzy dyskowych o pojemnościach wielu terabajtó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 35/55
Szczegółowa analiza IF-MIB (RFC 2863)
Cel slajdu: Przedstawienie zaawansowanych relacji tabelarycznych w standardzie IF-MIB, relacji warstwowych w ifStackTable oraz optymalizacji odpytywania.

Standardy telemetryczne

Standard IF-MIB (RFC 2863) to najbardziej kompletny model telemetryczny warstwy łącza danych, definiujący relacje między interfejsami fizycznymi i logicznymi.

  • Struktura indeksowania relacyjnego: Wszystkie tablice standardu (ifTable, ifXTable, ifTestTable) dzielą wspólny klucz główny ifIndex, umożliwiając łatwe łączenie danych
  • Stosowanie opisów administracyjnych (ifAlias): Pole przechowujące opis portu wpisany w konfiguracji urządzenia (np. poleceniem `description Uplink do Core-1` w Cisco); NMS automatycznie pobiera tę wartość
  • Hierarchia stosu interfejsów (ifStackTable): Prezentacja relacji logicznych w strukturach wielowarstwowych: agregacja łączy LACP (Bond/Port-Channel), interfejsy wirtualne VLAN oraz podinterfejsy
  • Detekcja zmian (ifTableLastChange): Pojedynczy znacznik czasu sysUpTime; jeśli wartość nie uległa zmianie od ostatniego cyklu, NMS nie musi ponownie odpytywać całej konfiguracji interfejsów
Optymalizacja NMS Discovery: Zamiast odpytywać tysiące wierszy ifTable przy każdym cyklu, zaawansowane systemy NMS najpierw sprawdzają zmienną skalarną ifTableLastChange (.1.3.6.1.2.1.31.1.5.0). Jeśli jej wartość się nie zmieniła, lista interfejsów pozostaje bez zmian.
Relacje w standardzie IF-MIB Relacje tabelaryczne w standardzie IF-MIB (RFC 2863) ifTable (Klasyczna) • ifIndex: unikalny identyfikator portu • ifDescr: nazwa interfejsu w systemie • ifType: ethernetCsmacd, softwareLoopback • ifAdminStatus / ifOperStatus • ifInOctets / ifOutOctets (32-bit) ifXTable (Rozszerzona) • ifName: krótka nazwa (np. Gi0/1) • ifAlias: opis nadany przez inżyniera • ifHCInOctets (64-bit High Capacity) • ifHCOutOctets (64-bit High Capacity) • ifHighSpeed: prędkość w Mbps Zaawansowane tablice IF-MIB: • ifStackTable: relacje nadrzędności między warstwami (np. VLAN nad portem fizycznym) • ifRcvAddressTable: tablica adresów MAC odbieranych przez dany port • ifTableLastChange: znacznik czasu sysUpTime ostatniej zmiany stanu w tabeli interfejsów
Slajd 36/55
Matematyka SNMP – wyliczanie przepustowości łącza
Cel slajdu: Przedstawienie aparatu matematycznego stosowanego przez systemy NMS do wyliczania realnej przepustowości łączy oraz obsługi przepełnienia liczników.

Obliczenia inżynierskie

Agenty SNMP raportują jedynie stan sumaryczny przesłanych oktetów (bajtów); wyliczenie chwilowej i średniej prędkości transmisji należy do stacji NMS.

  • Równanie różnicowe: Przepustowość jest wyliczana jako iloczyn przyrostu licznika oktetów (Delta) i liczby bitów w bajcie (8), podzielony przez rzeczywisty czas w sekundach między próbkami
  • Nieregularność interwałów (Delta Time): NMS nie może zakładać, że interwał wynosi dokładnie 300 sekund; czas delta musi być mierzony precyzyjnie na podstawie stempla czasowego odpowiedzi lub sysUpTime
  • Algorytm obsługi przepełnienia (Counter Wrap): Gdy wartość bieżąca jest mniejsza od poprzedniej, system NMS sprawdza, czy nastąpiło pojedyncze zawinięcie licznika (dodając pojemność rejestru 2^32 lub 2^64)
  • Wykrywanie restartu urządzenia: Jeśli nagłemu spadkowi licznika towarzyszy spadek wartości sysUpTime, NMS wie, że nastąpił reboot węzła i odrzuca błędną ujemną lub gigantyczną próbkę
Wzór na utylizację procentową łącza:
Utylizacja [%] = ( Przepustowość [bps] / ifSpeed [bps] ) * 100%
W przypadku łączy asymetrycznych (np. GPON/DOCSIS) utylizacja jest liczona niezależnie dla pasma pobierania (Download) i wysyłania (Upload).
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 37/55
Tabele SNMP i zasady indeksowania instancji
Cel slajdu: Przedstawienie mechanizmu tabelarycznego w SNMP, reguł tworzenia instancji wierszy za pomocą kluczy prostych i złożonych oraz przejścia leksykograficznego.

Modelowanie informacji

Większość kluczowych danych telemetrycznych (interfejsy, trasy routingu, sesje TCP) zorganizowana jest w relacyjne tabele o dynamicznej liczbie wierszy.

  • Struktura ENTRY i klauzula INDEX: Tabela MIB składa się z obiektu TABLE zawierającego powtarzalny rekord ENTRY; klauzula INDEX definiuje jeden lub więcej parametrów tworzących unikalny klucz wiersza
  • Indeksowanie proste: Pojedyncza liczba całkowita (np. ifIndex) doklejana na końcu OID kolumny w celu zaadresowania konkretnej komórki tabeli
  • Indeksowanie złożone (Wielowymiarowe): Klucz złożony z kilku atrybutów, np. adresu IPv4 (4 oktety) i portu (np. w tabeli aktywnych połączeń TCP `tcpConnTable`)
  • Porządek leksykograficzny: Operacja GetNext wędruje po tabeli w głąb kolumny (od góry do dołu), a po osiągnięciu ostatniego wiersza przechodzi do kolejnej kolumny (nie wiersz po wierszu!)
Przejście leksykograficzne (Lexicographical Ordering): Zasada porządkowania OID w drzewie SNMP. Kolejnym elementem po .1.3.6.1.2.1.2.2.1.2.1 nie jest .1.3.6.1.2.1.2.2.1.3.1, lecz .1.3.6.1.2.1.2.2.1.2.2 (następny wiersz tej samej kolumny).
Zasady indeksowania tabel Zasady indeksowania tabel w SNMP 1. Indeksowanie pojedyncze (np. ifIndex): OID kolumny: .1.3.6.1.2.1.2.2.1.2 (ifDescr) Pełny OID instancji: .1.3.6.1.2.1.2.2.1.2.1 -> "eth0" (indeks = 1) Pełny OID instancji: .1.3.6.1.2.1.2.2.1.2.2 -> "eth1" (indeks = 2) 2. Indeksowanie złożone (np. ipRouteTable / tcpConnTable): Klucz główny: [ IP lokalne ] . [ Port lokalny ] . [ IP zdalne ] . [ Port zdalny ] tcpConnState.192.168.1.10.22.10.0.0.5.54120 = established(5) • Kolejność leksykograficzna: odpytywanie GETNEXT przechodzi po tabeli kolumnowo
Slajd 38/55
Pułapki SNMP (Traps) – zdarzenia standardowe
Cel slajdu: Przedstawienie standardowego zestawu pułapek SNMP zdefiniowanych w RFC 1157 oraz RFC 3418, ich roli w detekcji awarii oraz analizy zawartości pakietu.

Raportowanie zdarzeń

Pułapki SNMP (Traps) to asynchroniczne komunikaty wysyłane natychmiast przez agenta w momencie wystąpienia istotnego zdarzenia w systemie lub na interfejsach.

  • Zdarzenia startowe (coldStart / warmStart): Informacja o restarcie urządzenia; coldStart oznacza restart sprzętowy (zanik zasilania), warmStart to restart oprogramowania z zachowaniem części konfiguracji
  • Status łącza (linkDown / linkUp): Krytyczne dla NMS zdarzenia informujące o rozłączeniu lub ponownym zestawieniu łącza fizycznego na porcie; pakiet dołącza zmienne ifIndex, ifAdminStatus i ifOperStatus
  • Alarm bezpieczeństwa (authenticationFailure): Natychmiastowe ostrzeżenie o próbie nieautoryzowanego odpytania agenta ze złym ciągiem community string lub błędnym podpisem SNMPv3 (możliwy skan sieciowy)
  • Pułapki producenckie (enterpriseSpecific): Zdarzenia specyficzne dla danego urządzenia zdefiniowane w prywatnych plikach MIB (np. zanik fazy w zasilaczu UPS, przekroczenie temperatury procesora)
Struktura pakietu Trap w SNMPv2c/v3: Wersje nowoczesne ujednoliciły format pułapek; są one przesyłane jako standardowa lista VarBind, w której druga zmienna to zawsze snmpTrapOID.0 wskazująca dokładny typ zdarzenia.
Standardowe pułapki SNMP Standardowe pułapki SNMP (Generic Traps) coldStart (0) / warmStart (1) Pełny restart sprzętowy / restart programowy demona linkDown (2) / linkUp (3) Spadek/podniesienie stanu łącza (zawiera ifIndex) authenticationFailure (4) Próba odpytania z błędnym community / poświadczeniami enterpriseSpecific (6) Zdarzenie zdefiniowane przez producenta sprzętu Przykładowa zawartość pułapki linkDown w snmptrapd: 2026-09-29 14:10:02 Router-Brzeg [UDP: [192.168.53.84]:51201->[192.168.53.50]:162] DISMAN-EVENT-MIB::sysUpTimeInstance = 42100 | SNMPv2-MIB::snmpTrapOID.0 = linkDown IF-MIB::ifIndex.2 = 2 | IF-MIB::ifAdminStatus.2 = up | IF-MIB::ifOperStatus.2 = down
Slajd 39/55
SNMPv2c Trap a SNMP InformRequest
Cel slajdu: Szczegółowe porównanie mechanizmów raportowania pasywnego: bezpotwierdzeniowego Trap oraz niezawodnego InformRequest.

Raportowanie zdarzeń

Jedną z kluczowych innowacji standardu SNMPv2c było wprowadzenie operacji InformRequest, eliminującej główną wadę klasycznych pułapek – brak pewności dostarczenia.

  • Zawodność pułapek Trap (UDP Best-Effort): Pakiet Trap wysyłany jest bezpołączeniowo; w przypadku zrzucenia pakietu przez przeciążony przełącznik stacja NMS nigdy nie dowie się o awarii
  • Potwierdzanie w InformRequest (ACK): Stacja NMS po odebraniu komunikatu InformRequest ma obowiązek odesłać do urządzenia standardowy pakiet odpowiedzi Response PDU z tym samym Request-ID
  • Pamięć i kolejka retransmisji na agencie: Agent przechowuje wysłany komunikat w pamięci podręcznej; w przypadku braku potwierdzenia w zadanym czasie timeout ponawia transmisję określoną liczbę razy
  • Narzut zasobów urządzenia: Obsługa mechanizmu Inform wymaga utrzymywania buforów i zegarów po stronie agenta, co nieznacznie zwiększa zużycie pamięci RAM urządzenia
Rekomendacja wdrożeniowa: Dla krytycznych węzłów sieciowych (routery brzegowe BGP, przełączniki rdzeniowe, zasilacze UPS) zawsze należy konfigurować powiadomienia typu inform zamiast trap. Gwarantuje to, że alarm o zaniku zasilania dotrze do NOC nawet w warunkach chwilowej degradacji łącza.
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 40/55
Konfiguracja wysyłania pułapek na urządzeniach
Cel slajdu: Przedstawienie praktycznej konfiguracji wysyłania powiadomień Trap i Inform w systemach Linux oraz MikroTik RouterOS.

Raportowanie zdarzeń

Aby urządzenie aktywnie raportowało awarie, konieczne jest wskazanie adresu IP serwera odbiorczego (Trap Receiver), portu UDP 162 oraz typu zdarzeń podlegających wysyłce.

  • Dyrektywy Linux snmpd.conf: Polecenie `trap2sink` wysyła pułapki w standardzie SNMPv2c; dyrektywa `informsink` uruchamia mechanizm potwierdzany Inform; dyrektywa `trapsess` umożliwia wysyłkę w SNMPv3 authPriv
  • Zdarzenia autoryzacji (authtrapenable): Ustawienie `authtrapenable 1` nakazuje agentowi natychmiastowe wysłanie alertu o każdej błędnej próbie odpytania
  • Konfiguracja MikroTik RouterOS: Parametry `trap-target`, `trap-community` oraz `trap-generators` określają cel oraz kategorie generowanych zdarzeń
  • Włączenie per interfejs: W systemach sieciowych wysyłanie pułapek linkDown/linkUp można włączać selektywnie (np. tylko dla portów szkieletowych i łączy WAN, wyłączając porty stacji roboczych)
Higiena konfiguracji: Wyłączenie pułapek linkDown na portach dostępowych (Access Ports), do których podłączone są komputery użytkowników, zapobiega zalewaniu stacji NMS tysiącami zbędnych alertów podczas codziennego włączania i wyłączania stacji roboczych.
Konfiguracja wysyłania pułapek Konfiguracja wysyłania Trap/Inform w Linux i RouterOS 1. Linux: /etc/snmp/snmpd.conf # Pułapka SNMPv2c lub potwierdzany Inform: trap2sink 192.168.53.50 TajneCommunityTrap 162 informsink 192.168.53.50 TajneCommunityTrap 162 authtrapenable 1 # Włącz wysyłanie authenticationFailure 2. MikroTik RouterOS CLI # Ustawienie celu pułapek w podmenu /snmp: /snmp set trap-target=192.168.53.50 trap-community=v3-mon \ trap-version=2 trap-generators=interfaces,start-trap /interface ethernet set [find] trap-link-up-down=yes
Slajd 41/55
Odbieranie pułapek na serwerze: demon snmptrapd
Cel slajdu: Przedstawienie architektury i konfiguracji demona snmptrapd, mechanizmu autoryzacji pułapek oraz integracji ze skryptami automatyzacji.

Raportowanie zdarzeń

Demon snmptrapd wchodzący w skład pakietu Net-SNMP odpowiada za ciągły nasłuch na porcie UDP 162, weryfikację nadawców oraz przetwarzanie odebranych pułapek.

  • Plik konfiguracyjny snmptrapd.conf: Określa zasady bezpieczeństwa; dyrektywa `authCommunity` definiuje dozwolone wspólnoty oraz przypisane im akcje (logowanie, wykonywanie skryptów)
  • Mechanizm traphandle: Potężne narzędzie integracyjne pozwalające na uruchomienie dowolnego skryptu systemowego (Bash, Python) w momencie nadejścia wskazanego OID pułapki
  • Przekazywanie danych przez strumień stdin: Skrypt wywoływany przez traphandle otrzymuje pełną treść pułapki (nazwę hosta, adres IP oraz listę par OID-wartość) na standardowym wejściu
  • Integracja z platformami NMS: Systemy takie jak LibreNMS instalują dedykowany handler w snmptrapd, który zapisuje zdarzenia wprost do bazy danych NMS w czasie rzeczywistym
Uruchomienie usługi w systemie Linux:
sudo systemctl enable --now snmptrapd
Weryfikacja nasłuchu gniazda: ss -uln | grep 162
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 42/55
SNMP Proxy i translacja wersji
Cel slajdu: Przedstawienie standardu SNMP Proxy opisanego w dokumencie RFC 3413, umożliwiającego translację wersji protokołu oraz dostęp do odizolowanych segmentów sieci.

Zaawansowane architektury

Mechanizm SNMP Proxy (RFC 3413) pozwala agentowi na pełnienie roli pośrednika, przekazującego zapytania do innych węzłów sieciowych.

  • Translacja wersji (Version Mapping): Możliwość odpytywania nowoczesną stacją NMS przez bezpieczny protokół SNMPv3; lokalna brama Proxy deszyfruje pakiet i odpytuje stare urządzenie przez SNMPv1/v2c
  • Omijanie barier adresowych (NAT/Firewall): Monitorowanie urządzeń w odizolowanych sieciach przemysłowych (OT/SCADA) bez konieczności bezpośredniego routowania ruchu do centrum danych
  • Mapowanie kontekstowe (SNMP Contexts): Wykorzystanie pola contextName w SNMPv3 do wskazania, które urządzenie za bramą proxy ma zostać odpytane
  • Agregacja ruchu: Redukcja obciążenia łączy rozległych WAN poprzez koncentrację odpytywania w lokalnej podsieci
SNMP Proxy (RFC 3413): Aplikacja protokołu SNMP odbierająca pakiety PDU od zarządcy i przekazująca je do agenta docelowego (często z konwersją parametrów bezpieczeństwa lub formatu PDU), a następnie zwracająca odpowiedź do pierwotnego nadawcy.
Mechanizm SNMP Proxy Mechanizm pośredniczenia SNMP Proxy (RFC 3413) NMS Manager 192.168.53.50 SNMPv3 authPriv WAN / VPN Brama Proxy Net-SNMP Daemon Translacja protokołu v3 <--> v2c/v1 Izolowany LAN Stary Agent Sterownik PLC Tylko SNMPv1 Zalety architektury SNMP Proxy: 1. Bezpieczna transmisja przez Internet/WAN z pełnym szyfrowaniem SNMPv3 2. Dostęp do urządzeń w odizolowanych prywatnych podsieciach za translacją NAT 3. Zgodność z zaleceniami RFC 3413 dotyczącymi aplikacji zarządzających
Slajd 43/55
Obsługa protokołu IPv6 w SNMP
Cel slajdu: Przedstawienie zasad monitorowania infrastruktury IPv6, specyfikacji transportowej udp6 oraz zunifikowanego standardu IP-MIB opisanego w RFC 4293.

Zaawansowane architektury

Współczesne sieci teleinformatyczne funkcjonują w modelu Dual-Stack (IPv4/IPv6) lub czystym IPv6-only, co wymaga pełnej obsługi adresacji 128-bitowej w protokole SNMP.

  • Transport UDP przez IPv6 (RFC 3419): Wskazywanie gniazda transportowego za pomocą prefiksu `udp6:` oraz ujęcia adresu w nawiasy kwadratowe, np. `udp6:[2001:db8::1]:161`
  • Zunifikowane bazy MIB (RFC 4293): Wycofanie oddzielnych baz IPv6 na rzecz ujednoliconej tablicy `ipAddressTable`, obsługującej adresy dowolnej rodziny za pomocą typu InetAddressType
  • Indeksowanie zmienną InetAddress: Typ danych InetAddress koduje długość adresu (4 oktety dla IPv4, 16 oktetów dla IPv6), umożliwiając bezkolizyjne współistnienie wpisów obu protokołów w jednej tabeli
  • Gotowość systemów NMS: Platformy takie jak LibreNMS natywnie wspierają dodawanie urządzeń po adresach IPv6 Link-Local oraz Global Unicast
Adresy Link-Local (fe80::/10): Odpytywanie urządzeń po adresie link-local wymaga podania identyfikatora strefy (Scope ID / Interface), np. udp6:[fe80::1%eth0]:161. W środowiskach NMS zaleca się stosowanie stałych adresów Global Unicast (GUA) lub Unique Local (ULA).
Obsługa protokołu IPv6 Integracja protokołu IPv6 w SNMP (RFC 4293) Składnia transportowa IPv6 w Net-SNMP: # Nasłuch na wszystkich adresach IPv6 w snmpd.conf: agentAddress udp:161,udp6:[::]:161 # Odpytanie hosta przez adres IPv6 w CLI: $ snmpget -v2c -c public udp6:[2001:db8::10]:161 sysDescr.0 Ewolucja baz MIB dla IPv6: • Pierwotny standard RFC 2465 (IPV6-TC / IPV6-MIB) został zdeprecjonowany • Nowoczesny standard RFC 4293 (Management Information Base for the Internet Protocol) • Zunifikowane tablice ipAddressTable i ipIfStatsTable dla IPv4 i IPv6
Slajd 44/55
Zabezpieczanie protokołu SNMP w sieci produkcyjnej
Cel slajdu: Przedstawienie kompleksowej metodyki zabezpieczania protokołu SNMP zgodnie z modelem obrony wielowarstwowej oraz wymogami norm bezpieczeństwa.

Dobre praktyki i cyberbezpieczeństwo

Prawidłowe zabezpieczenie protokołu SNMP wymaga podejścia wielowarstwowego, łączącego separację sieciową, kontrolę dostępu na zaporach oraz kryptografię.

  • Dedykowany VLAN zarządzający (OOB): Całkowite odseparowanie ruchu zarządzającego od sieci użytkowników biurowych i ruchu gościnnego; brak routingu do Internetu
  • Listy kontroli dostępu (ACL): Wymuszenie reguł zapory na każdym urządzeniu zezwalających na pakiety UDP 161 wyłącznie ze statycznego adresu IP serwera NMS
  • Eliminacja operacji SET (Read-Only): Kategoryczne wyłączenie prawa zapisu (write-access) w środowiskach monitoringu; do konfiguracji urządzeń należy stosować dedykowane systemy (SSH, Ansible, NETCONF)
  • Zgodność z normami (ISO/IEC 27001 / NIS 2): Spełnienie wymogów kontroli A.8.15 (Logowanie) oraz A.8.16 (Działania monitorujące) normy ISO/IEC 27001 oraz dyrektywy NIS 2
Złota zasada monitoringu: Nigdy nie używaj tego samego hasła community string lub hasła SNMPv3 na routerach brzegowych i stacjach testowych. Kompromitacja jednego węzła w sieci laboratoryjnej nie może zagrażać sieci produkcyjnej.
Zabezpieczanie protokołu SNMP Architektura bezpiecznego wdrożenia SNMP 1. Separacja sieciowa (OOB) • Dedykowany Management VLAN • Brak routingu do stacji użytkowników • Fizyczne porty OOB na przełącznikach Izolacja wektorów ataku 2. Listy kontroli dostępu (ACL) • Reguły zapory sprzętowej • Zezwolenie TYLKO dla IP serwera NMS • Odrzucanie zapytań z innych podsieci Ograniczenie ekspozycji portu 161 3. Hardening konfiguracji • Bezwzględny zakaz community "public" • Wyłączenie uprawnień zapisu (write) • Wymóg standardu SNMPv3 authPriv Zasada Least Privilege 4. Zgodność z normami • ISO/IEC 27001 (Kontrola A.8.15/16) • Dyrektywa NIS 2 (UE 2022/2555) • Ustawa o KSC (ochrona infrastruktury) Audytowalność i zgodność
Slajd 45/55
Analiza pakietów SNMP w programie Wireshark
Cel slajdu: Przedstawienie metodyki analizy pakietów SNMP w analizatorze Wireshark, filtrów wyświetlania oraz procedury deszyfrowania sesji SNMPv3.

Diagnostyka i inspekcja ruchu

Program Wireshark to podstawowe narzędzie diagnostyczne inżyniera sieciowego, pozwalające na weryfikację poprawności nagłówków, badania kodów błędów i analizę szyfrowania.

  • Podstawowe filtry wyświetlania: Filtr `snmp` wyświetla cały ruch protokołu; filtr `snmp.error_status != 0` natychmiast filtruje pakiety z błędami; filtr `snmp.name contains "sysUpTime"` wyszukuje konkretne zmienne
  • Inspekcja flag bezpieczeństwa (msgFlags): Wartość 0x00 oznacza noAuthNoPriv; 0x01 oznacza authNoPriv (tylko podpis); 0x03 oznacza authPriv (podpis i szyfrowanie)
  • Deszyfrowanie SNMPv3 w Wireshark: Menu: `Edit -> Preferences -> Protocols -> SNMP -> Users Table`; podanie EngineID, nazwy użytkownika oraz haseł auth/priv pozwala na pełne rozszyfrowanie zawartości scopedPDU w locie
  • Weryfikacja synchronizacji czasu: Badanie pól `snmpEngineBoots` i `snmpEngineTime` w celu diagnozy błędów odrzucania pakietów z powodu rozjechania zegarów
Przydatny filtr Wireshark:
snmp.getBulkRequest (lub snmp.max_repetitions) — wyświetla wyłącznie zapytania GetBulkRequest, pozwalając ocenić parametry Non-Repeaters i Max-Repetitions wysyłane przez system NMS.
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 46/55
Ograniczenia architektury SNMP
Cel slajdu: Przedstawienie strukturalnych ograniczeń architektury SNMP w wielkich środowiskach operatorskich i centrach danych.

Nowe horyzonty i telemetria

Mimo powszechnej obecności, protokół SNMP zaprojektowany w latach 80. napotyka na bariery technologiczne we współczesnych sieciach Hyperscale i centrach Cloud.

  • Narzut modelu Pull (Odpytywanie): W sieci liczącej 10 000 przełączników odpytywanie wszystkich portów co 60 sekund generuje gigantyczny narzut na procesory urządzeń i łącza
  • Ślepota na mikroszczyty (Microbursts): Typowy interwał 300 sekund wygładza wykres; chwilowe nasycenie bufora przełącznika trwające 50 milisekund powoduje odrzucenie pakietów TCP, ale jest całkowicie niewidoczne na wykresie SNMP
  • Brak transakcyjności konfiguracji: Protokół SNMP nie posiada mechanizmów dwufazowego zatwierdzania (Two-Phase Commit) ani wycofywania zmian (Rollback); błąd w trakcie operacji SET pozostawia urządzenie w stanie niespójnym
  • Ograniczenia modeli ASN.1: Język ASN.1 jest trudny w automatyzacji w porównaniu do nowoczesnych struktur JSON, YAML czy schematów bazujących na modelach YANG
Problem mikroszczytu (Microburst): Gwałtowny, trwający ułamek sekundy skok ruchu sieciowego, który całkowicie wysyca bufor interfejsu przełącznika. Z powodu 5-minutowego uśredniania w SNMP wykres wykaże zaledwie 10% średniego obciążenia, ukrywając przyczynę degradacji aplikacji.
Ograniczenia SNMP Wąskie gardła i ograniczenia architektury SNMP Model odpytywania (Pull) • Skalowanie liniowe O(N) • Tysiące zapytań co 5 min Zasobożerne pętle odpytujące Brak strumieniowania • Próbkowanie dyskretne • Pomijanie mikroszczytów (Microbursts) Brak czasu rzeczywistego (< 1s) Brak transakcyjności • Operacja SET nie jest atomowa • Brak mechanizmu Commit / Rollback Ryzyko niespójnej konfiguracji Ograniczenia bufora UDP • Rozmiar MTU ogranicza GetBulk • Ryzyko fragmentacji pakietów IP Błąd SNMP 'TooBig'
Slajd 47/55
NETCONF i model danych YANG (RFC 6241 / 7950)
Cel slajdu: Przedstawienie architektury protokołu NETCONF oraz języka modelowania YANG jako nowoczesnych standardów automatyzacji konfiguracji i telemetrii.

Nowe horyzonty i telemetria

Protokół NETCONF (RFC 6241) oraz język YANG (RFC 7950) powstały z inicjatywy IETF w celu rozwiązania problemów z konfiguracją urządzeń sieciowych.

  • Bezpieczny transport SSH: NETCONF działa domyślnie przez szyfrowaną sesję SSH na porcie 830, wykorzystując sprawdzoną kryptografię asymetryczną kluczy publicznych
  • Transakcyjność konfiguracji: Podział na magazyny konfiguracji: konfiguracja robocza (candidate) może być testowana i walidowana; operacja `commit` aktywuje ją atomowo; w razie błędu następuje natychmiastowy `rollback`
  • Język modelowania YANG: Zastępuje archaiczny język ASN.1; definiuje strukturę danych, ograniczenia semantyczne oraz operacje RPC w sposób zoptymalizowany pod formaty XML i JSON
  • Inicjatywa OpenConfig: Wspólny projekt czołowych operatorów (Google, Microsoft, AT&T) tworzący neutralne producencko modele YANG dla przełączników i routerów
Koegzystencja technologiczna: NETCONF i SNMP nie wykluczają się wzajemnie. W wielu nowoczesnych przedsiębiorstwach standardem jest hybryda: NETCONF odpowiada za automatyczne wdrażanie konfiguracji (Infrastructure as Code), natomiast SNMPv3 za ciągły monitoring i wykresy w NMS.
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 48/55
Telemetria strumieniowa i protokół gNMI
Cel slajdu: Przedstawienie koncepcji nowoczesnej telemetrii strumieniowej (Streaming Telemetry), protokołu gNMI oraz przejścia z modelu Pull do modelu Push.

Nowe horyzonty i telemetria

Telemetria strumieniowa rewolucjonizuje nadzór sieciowy, zastępując cykliczne odpytywanie ciągłym strumieniem danych wypychanych przez urządzenie w czasie rzeczywistym.

  • Architektura subskrypcji (Pub/Sub): Kolektor danych subskrybuje wybrane ścieżki w modelu danych (np. statystyki interfejsu); urządzenie nieustannie strumieniuje próbki z częstotliwością rzędu milisekund
  • Protokół gNMI (gRPC Network Management Interface): Opracowany przez konsorcjum OpenConfig standard bazujący na wydajnym protokole gRPC, wielodostępnym transporcie HTTP/2 oraz binarnej kompresji Protocol Buffers
  • Raportowanie sterowane zdarzeniami (On-Change): Urządzenie wysyła pakiet tylko wtedy, gdy stan zmiennej ulegnie zmianie (np. zmiana stanu portu lub skok temperatury), eliminując przesyłanie powtarzalnych danych
  • Brak narzutu procesora: Generowanie telemetrii w nowoczesnych przełącznikach jest odciążane sprzętowo przez układy NPU/ASIC, nie obciążając głównego CPU urządzenia
Protokół gNMI: Ujednolicony interfejs oparty na gRPC służący do pobierania stanu (telemetrii), modyfikowania konfiguracji oraz subskrybowania strumieni danych sieciowych z wykorzystaniem modeli OpenConfig YANG.
Telemetria strumieniowa gNMI Telemetria strumieniowa (Push) i protokół gNMI Klasyczne SNMP (Pull) Model cyklicznego odpytywania • Interwał: 60 s - 300 s • Manager pyta -> Agent odpowiada • Podwójny ruch na łączu (Req/Resp) • Znaczne obciążenie procesora agenta Zastosowanie: Standardowy monitoring infrastruktury LAN Telemetria gNMI (Push) Ciągły strumień subskrypcyjny • Częstotliwość: 100 ms - 1 s • Model Publish-Subscribe (Pub/Sub) • Raportowanie tylko zmian (On-Change) • gRPC / HTTP/2 + Protocol Buffers Zastosowanie: Data Center, sieci SDN, ISP, chmura
Slajd 49/55
Kluczowe dokumenty RFC protokołu SNMP
Cel slajdu: Przedstawienie kanonu dokumentów IETF RFC stanowiących fundament prawno-techniczny protokołu SNMP oraz ich powiązań.

Standardy i normy IETF

Standardy protokołu SNMP są rozproszone w kilkunastu dokumentach Request for Comments (RFC) publikowanych przez organizację Internet Engineering Task Force (IETF).

  • Fundamenty historyczne: RFC 1157 (SNMPv1) oraz RFC 1213 (MIB-II) – zdefiniowanie architektury protokołu oraz bazowych obiektów systemowych
  • Modelowanie informacji (SMIv2): RFC 2578 – reguły definiowania modułów MIB, typów danych i makr OBJECT-TYPE
  • Standard interfejsowy IF-MIB: RFC 2863 – obowiązkowy standard definiujący liczniki 64-bitowe dla szybkich sieci
  • Zbiór standardów SNMPv3: RFC 3411 (Architektura), RFC 3414 (Model USM), RFC 3415 (Model VACM), RFC 3826 (AES) oraz RFC 7860 (HMAC-SHA-2)
Repozytorium oficjalne: Pełne, aktualne wersje dokumentów RFC wraz z erratami i informacjami o statusie (Standards Track, Historic) są bezpłatnie dostępne w repozytorium IETF na stronie: www.rfc-editor.org.
Kluczowe standardy RFC Kluczowe specyfikacje IETF RFC dla protokołu SNMP RFC 1157: SNMPv1 Standard Pierwotna specyfikacja protokołu (1990) RFC 1213: MIB-II Definicja bazowych grup obiektów IP RFC 2578: SMIv2 Struktura informacji zarządzania v2 RFC 2863: IF-MIB Rozszerzenie ifXTable i liczniki 64-bit RFC 3411-3418: SNMPv3 Pełny zbiór standardu SNMPv3 RFC 3826: AES in USM Szyfrowanie symetryczne AES-128 CFB RFC 7860: SHA-2 in USM (HMAC-SHA-224 / 256 / 384 / 512) Nowoczesny standard kryptograficzny zastępujący przestarzałe MD5 i SHA-1
Slajd 50/55
Instalacja pakietów Net-SNMP w systemie Linux
Cel slajdu: Przedstawienie procedury instalacji pakietów Net-SNMP w systemach Linux Debian/Ubuntu/RHEL oraz poprawnego odblokowania i pobrania oficjalnych baz MIB.

Wdrożenie i konfiguracja urządzeń

Prawidłowa instalacja oprogramowania Net-SNMP wymaga zainstalowania zarówno komponentów wykonawczych, jak i bazy definicji MIB.

  • Pakiety w Debian/Ubuntu: `snmp` (narzędzia konsolowe CLI), `snmpd` (demon agenta), `snmptrapd` (odbiornik pułapek) oraz `snmp-mibs-downloader`
  • Pułapka licencyjna w Debianie: Ze względów licencyjnych pliki MIB IETF nie wchodzą w skład głównego archiwum Debiana; domyślnie w pliku `/etc/snmp/snmp.conf` linijka `mibs :` blokuje ładowanie MIB
  • Odblokowanie i pobranie baz (download-mibs): Zakomentowanie dyrektywy `mibs :` oraz uruchomienie narzędzia `download-mibs` automatycznie pobiera oficjalne bazy IETF do katalogu `/usr/share/snmp/mibs`
  • Pakiety w RHEL/Rocky/AlmaLinux: `sudo dnf install net-snmp net-snmp-utils`; w systemach rodziny Red Hat bazy MIB są domyślnie dostarczane w pakiecie
Częsty błąd: Jeśli polecenie snmpget zwraca błąd sysDescr.0: Unknown Object Identifier, oznacza to, że w pliku /etc/snmp/snmp.conf nadal aktywna jest linijka mibs : blokująca parsowanie plików MIB!
Instalacja Net-SNMP Instalacja i konfiguracja Net-SNMP w systemie Linux Instalacja pakietów w dystrybucjach Debian / Ubuntu # 1. Instalacja narzędzi klienta, demona i pobieracza MIB: sudo apt update && sudo apt install -y snmp snmpd snmp-mibs-downloader # 2. Odblokowanie ładowania baz MIB w /etc/snmp/snmp.conf: # (Domyślnie Debian wyłącza MIB dyrektywą 'mibs :') sudo sed -i 's/^mibs :/#mibs :/' /etc/snmp/snmp.conf # 3. Pobranie oficjalnych baz IETF/IANA do /usr/share/snmp/mibs: sudo download-mibs # 4. Uruchomienie i weryfikacja statusu demona: sudo systemctl enable --now snmpd && systemctl is-active snmpd
Slajd 51/55
Kompletny plik konfiguracyjny snmpd.conf
Cel slajdu: Przedstawienie kompletnego, produkcyjnego szablonu konfiguracyjnego demona snmpd łączącego bezpieczeństwo SNMPv3, kontrolę widoków oraz metadane.

Wdrożenie i konfiguracja urządzeń

Przedstawiony wzorzec konfiguracyjny stanowi bezpieczny punkt wyjścia dla wdrożeń serwerowych w infrastrukturze korporacyjnej.

  • Izolacja sieciowa gniazda: Brak otwarcia portu na wszystkich interfejsach (0.0.0.0); wiązanie agenta ze statycznym adresem IP w dedykowanym segmencie zarządzającym
  • Granularne widoki (view v_prod): Ograniczenie ekspozycji obiektów do oficjalnego drzewa mib-2 oraz wybranych gałęzi Net-SNMP, chroniąc przed ujawnieniem prywatnych parametrów jądra
  • Standard authPriv (rouser): Wymuszenie najwyższego poziomu zabezpieczeń dla konta nms-operator; próba połączenia bez szyfrowania AES zostanie natychmiast odrzucona
  • Automatyzacja powiadomień: Skonfigurowanie celu wysyłki pułapek oraz kompletnych informacji administracyjnych (sysLocation, sysContact)
Wdrażanie przez Ansible: Przedstawiony plik konfiguracyjny doskonale nadaje się jako szablon Jinja2 (snmpd.conf.j2) do masowego wdrażania na setkach serwerów Linux za pomocą narzędzia Ansible.
Wzorcowy plik snmpd.conf Wzorcowy produkcyjny plik snmpd.conf Wzorzec produkcyjny: /etc/snmp/snmpd.conf # 1. Gniazdo nasłuchu (Loopback + interfejs zarządzający) agentAddress udp:127.0.0.1:161,udp:192.168.53.97:161 # 2. Widoki MIB: pełne mib-2 oraz metryki Net-SNMP view v_prod included .1.3.6.1.2.1 view v_prod included .1.3.6.1.4.1.8072.1 # 3. Użytkownik SNMPv3 z wymogiem authPriv i widokiem rouser nms-operator authpriv -V v_prod # 4. Wysyłanie pułapek do stacji centralnej trapsink 192.168.53.50 TrapsCommunity 162 # 5. Metadane administracyjne sysLocation "Serwerownia Glowna RACK-1" | sysContact "noc@firma.pl"
Slajd 52/55
Diagnostyka problemów z agentem SNMP
Cel slajdu: Przedstawienie usystematyzowanej procedury diagnozowania usterek komunikacji SNMP (SNMP Troubleshooting).

Diagnostyka i inspekcja ruchu

Gdy stacja zarządzająca zgłasza błąd 'Timeout: No Response from host', inżynier musi przeprowadzić metodyczną weryfikację od warstwy fizycznej do aplikacyjnej.

  • Zjawisko 'Cichego odrzucenia' (Silent Drop): Kluczowa cecha bezpieczeństwa SNMP: agent przy błędnym haśle community lub złym podpisie USM nie odsyła komunikatu błędu; po prostu ignoruje pakiet, udając nieobecność
  • Weryfikacja gniazda i procesu: Sprawdzenie poleceniem `systemctl status snmpd` oraz `ss -ulnp | grep 161` czy demon działa i z jakim adresem IP powiązał gniazdo UDP
  • Test skanowania portu UDP: Zastosowanie polecenia `nmap -sU -p 161 adres_IP`; stan 'open' oznacza działającego agenta, 'open|filtered' brak pewności (możliwa blokada zapory)
  • Tryb głębokiego debugowania (-D): Uruchomienie demona na pierwszym planie z flagami debugowania: `sudo snmpd -f -Lo -Dusm,vacm` ujawnia dokładne przyczyny odrzucenia zapytań SNMPv3
Częsty problem z SNMPv3: Jeśli zapytanie zwraca błąd Unknown user name, sprawdź czy użytkownik został dodany przy zatrzymanym demonie! Net-SNMP nadpisuje plik haseł przy zamykaniu procesu, co może skasować ręcznie dodanego użytkownika.
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 53/55
Ćwiczenie laboratoryjne: Konfiguracja agenta i menedżera
Cel slajdu: Przedstawienie praktycznego scenariusza laboratoryjnego umożliwiającego studentom samodzielne wdrożenie, zabezpieczenie i przetestowanie SNMPv3.

Praktyka laboratoryjna i narzędzia

W ramach ćwiczenia laboratoryjnego studenci wdrażają bezpiecznego agenta SNMPv3 na serwerze Linux, konfigurują konto USM i weryfikują szyfrowanie.

  • Zadanie 1: Przygotowanie środowiska: Zainstalowanie pakietów Net-SNMP, skonfigurowanie adresu nasłuchu na interfejsie sieci laboratoryjnej oraz dodanie metadanych lokalizacji
  • Zadanie 2: Kreacja użytkownika kryptograficznego: Użycie narzędzia `net-snmp-create-v3-user` do wygenerowania konta o poziomie authPriv z silnymi hasłami dla HMAC-SHA-256 oraz AES
  • Zadanie 3: Testy odpytywania z menedżera: Wykonanie zapytań `snmpget` dla sysDescr.0 oraz `snmpbulkwalk` dla tablicy ifTable z poziomu stacji zdalnej
  • Zadanie 4: Inspekcja pakietów i deszyfracja: Uruchomienie programu Wireshark, przechwycenie ruchu na porcie UDP 161, weryfikacja nieczytelności szyfrogramu oraz deszyfracja kluczami w GUI
Kryterium zaliczenia: Student musi wykazać, że próba odpytania urządzenia z poziomu authNoPriv lub z błędnym hasłem szyfrowania kończy się niepowodzeniem, a w logach Wiresharka zawartość zmiennych jest w pełni zaszyfrowana.
Scenariusz laboratoryjny Scenariusz laboratoryjny: Wdrożenie SNMPv3 Krok 1: Konfiguracja agenta snmpd (Linux) Zatrzymaj snmpd, utwórz użytkownika 'lab-user' z SHA-256 i AES-128, uruchom serwis Krok 2: Weryfikacja lokalna i zdalna Odpytaj sysUpTime.0 poleceniem snmpget -v3 z opcją authPriv z poziomu stacji roboczej Krok 3: Analiza w Wireshark Przechwyć pakiety, zaobserwuj scopedPDU, zdeszyfruj pakiet w preferencjach programu Krok 4: Weryfikacja ograniczeń VACM Zmodyfikuj widok MIB tak, aby wykluczyć tablicę routingu, i zweryfikuj odmowę dostępu
Slajd 54/55
Słownik pojęć prezentacji 2
Cel slajdu: Uporządkowanie i zestawienie najważniejszych pojęć, skrótów i definicji wprowadzonych w ramach wykładu o protokole SNMP.

Podsumowanie i weryfikacja wiedzy

Zestawienie kluczowych terminów technologicznych wykorzystywanych w architekturze protokołu SNMP i nowoczesnej telemetrii sieciowej.

  • MIB / OID: Management Information Base (formalny schemat danych ASN.1) oraz Object Identifier (numeryczny adres logiczny zmiennej w drzewie hierarchicznym)
  • USM / VACM: User-based Security Model (podsystem uwierzytelniania i szyfrowania) oraz View-based Access Control Model (podsystem kontroli uprawnień do widoków)
  • PDU / VarBind: Protocol Data Unit (nagłówek i ładunek protokołu SNMP) oraz Variable Binding (para wiążąca konkretny OID z jego typowaną wartością)
  • Trap / Inform: Asynchroniczne komunikaty o zdarzeniach: jednokierunkowy Trap (brak potwierdzenia) oraz potwierdzany przez stację zarządzającą InformRequest
Słownik inżynierski: Opanowanie powyższych terminów jest niezbędne do sprawnego czytania oficjalnej dokumentacji urządzeń sieciowych Cisco, Juniper, MikroTik oraz specyfikacji IETF RFC.
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 55/55
Pytania kontrolne i test wiedzy
Cel slajdu: Weryfikacja stopnia przyswojenia wiedzy z zakresu architektury, mechanizmów protokołu i bezpieczeństwa SNMP.

Podsumowanie i weryfikacja wiedzy

Zestaw pytań kontrolnych pozwala studentowi na samodzielną ocenę zrozumienia mechanizmów działania protokołu SNMP.

  • Pytanie 1: Liczniki 32-bit vs 64-bit: Dlaczego na interfejsach Gigabit Ethernet odpytywanie zmiennej ifInOctets prowadzi do zafałszowania wyników, a standard IF-MIB wymaga stosowania ifHCInOctets?
  • Pytanie 2: Pewność dostarczenia zdarzeń: W jakich warunkach sieciowych pakiet SNMP Trap zostanie utracony i w jaki sposób mechanizm InformRequest rozwiązuje ten problem?
  • Pytanie 3: Ochrona przed retransmisją USM: W jaki sposób agent SNMPv3 weryfikuje, czy odebrany pakiet authPriv nie jest przechwyconym nagraniem wysłanym ponownie przez atakującego?
  • Pytanie 4: Adresacja instancji skalarnych: Jaka jest semantyczna różnica między identyfikatorem typu obiektu sysDescr (.1.3.6.1.2.1.1.1) a instancją zmiennej sysDescr.0 (.1.3.6.1.2.1.1.1.0)?
Odpowiedzi wzorcowe:
1. Licznik 32-bitowy przepełnia się po 34 s przy 1 Gbps; w oknie 300 s zawija się wielokrotnie, fałszując Deltę. Licznik 64-bitowy eliminuje ten problem na stulecia.
2. InformRequest wymaga odesłania Response PDU (ACK); brak odpowiedzi wyzwala retransmisję.
3. Agent weryfikuje parę snmpEngineBoots / snmpEngineTime; pakiety spoza 150-sekundowego okna są odrzucane.
4. OID w MIB definiuje klasę/właściwość; sufiks .0 reprezentuje jedyną instancję skalarną tej zmiennej w pamięci RAM.
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.