1/48 SNMP – Simple Network Management Protocol

SNMP (Simple Network Management Protocol) – standardowy protokół zarządzania siecią, umożliwiający monitorowanie i konfigurację urządzeń sieciowych.

Instalacja na Debianie, konfiguracja i praktyczne użycie – prezentacja obejmuje wprowadzenie teoretyczne, architekturę MIB/OID, instalację narzędzi SNMP na systemie Debian, praktyczne użycie poleceń takich jak snmpget, snmpwalk, snmpset oraz konfigurację bezpiecznego dostępu SNMPv3.

Prezentacja zawiera 48 slajdów z przykładami konfiguracji, tabelami OID i diagramami architektury.

SNMP jest jednym z najważniejszych protokołów w arsenale administratora sieci, ponieważ dostarcza standaryzowanego mechanizmu pozyskiwania informacji o stanie urządzeń sieciowych oraz zdalnego zarządzania nimi.

Protokół ten został zaprojektowany w latach osiemdziesiątych, aby rozwiązać problem rosnącej złożoności sieci komputerowych, w których administratorzy musieli ręcznie sprawdzać każde urządzenie.

Dziś SNMP jest obsługiwany przez praktycznie każde urządzenie sieciowe – od przełączników i routerów, przez serwery i drukarki, aż po systemy UPS i klimatyzatory w serwerowniach.

Prezentacja ta została przygotowana z myślą o studentach kierunków informatycznych oraz początkujących administratorach, którzy chcą zrozumieć zarówno teoretyczne podstawy protokołu, jak i zdobyć praktyczne umiejętności jego konfiguracji i wykorzystania.

Szczególny nacisk położono na instalację i konfigurację w środowisku Debian, które jest jedną z najpopularniejszych dystrybucji serwerowych Linuksa.

Materiał został podzielony na sześć bloków tematycznych prowadzących od podstaw teoretycznych przez praktyczną instalację aż po zaawansowane zagadnienia bezpieczeństwa.

2/48 Streszczenie

SNMP (Simple Network Management Protocol) to protokół warstwy aplikacji służący do zarządzania i monitorowania urządzeń w sieci komputerowej.

Umożliwia odczytywanie i zmienianie parametrów konfiguracyjnych oraz zbieranie statystyk pracy urządzeń sieciowych.

Protokół występuje w trzech głównych wersjach: SNMPv1 (1988), SNMPv2c (1996) oraz SNMPv3 (2002), która wprowadza uwierzytelnianie i szyfrowanie.

W prezentacji omówiono instalację pakietów snmpd, snmp i snmptrapd na systemie Debian, konfigurację agenta SNMP oraz praktyczne użycie narzędzi takich jak snmpget, snmpwalk, snmptable czy snmpset.

Przedstawiono również szczegółowo strukturę bazy MIB i drzewa OID, konfigurację bezpiecznego dostępu SNMPv3 z uwierzytelnianiem SHA i szyfrowaniem AES oraz przykłady integracji SNMP z systemami monitorującymi, takimi jak Nagios, Zabbix i LibreNMS.

Znajomość SNMP jest kluczowa dla każdego administratora sieci, ponieważ umożliwia automatyzację monitorowania, szybkie wykrywanie awarii i efektywne zarządzanie infrastrukturą sieciową.

Niniejsza prezentacja stanowi kompendium wiedzy o protokole SNMP, łącząc aspekty teoretyczne z praktycznymi przykładami.

W pierwszej części omówiono genezę powstania protokołu i problem skalowalności monitorowania.

Następnie przeanalizowano architekturę SNMP z podziałem na menedżera i agentów oraz strukturę bazy MIB i drzewa OID.

Część praktyczna koncentruje się na instalacji narzędzi SNMP w Debianie, konfiguracji agenta snmpd oraz używaniu konsolowych narzędzi do odczytu i zapisu wartości OID.

Osobny blok poświęcono SNMPv3 i mechanizmom kryptograficznym.

Prezentację zamykają przykłady integracji SNMP z systemami monitorującymi oraz pytania kontrolne.

3/48 Literatura

Książki:

  • douglas Mauro, Kevin Schmidt – Essential SNMP, O'Reilly Media, 2005
  • William Stallings – SNMP, SNMPv2, SNMPv3, and RMON 1 and 2, Addison-Wesley, 1999
  • david Zeltserman – Practical Guide to SNMPv3 and Network Management, Prentice Hall, 1999
  • James d. Murray – SNMP mit Perl und Python, O'Reilly, 2001

Źródła internetowe:

Literatura dotycząca protokołu SNMP jest obszerna i obejmuje zarówno pozycje książkowe, jak i bogate źródła internetowe.

Książka Mauro i Schmidta „Essential SNMP” stanowi doskonałe wprowadzenie praktyczne, koncentrując się na konfiguracji w systemach Unix/Linux.

Stallings to wyczerpujące kompendium wiedzy teoretycznej obejmujące wszystkie wersje protokołu.

Najważniejszym źródłem technicznym jest strona projektu Net-SNMP, który dostarcza implementacji referencyjnej.

Dokumenty RFC stanowią autorytatywną definicję protokołu, a MIB depot umożliwia wyszukiwanie OID i przeglądanie definicji MIB od różnych producentów.

4/48 Po co SNMP? Problem zarządzania siecią
  • Monitorowanie stanu urządzeń w czasie rzeczywistym
  • Pobieranie statystyk wydajnościowych
  • Zdalną rekonfigurację parametrów
  • Odbieranie powiadomień o awariach (trapów)
SNMP rozwiązuje problem skalowalnego monitorowania sieci.

Współczesna sieć komputerowa może składać się z dziesiątek, setek lub tysięcy urządzeń: routerów, przełączników, serwerów, drukarek, punktów dostępowych, systemów UPS i wielu innych.

Ręczne sprawdzanie każdego urządzenia – logowanie się przez SSH/Telnet, sprawdzanie obciążenia CPU, zajętości dysku, statusu interfejsów – nie skaluje się w dużych sieciach.

Potrzebny jest zautomatyzowany, ustandaryzowany protokół, który pozwoli na:

Problem zarządzania siecią pojawił się już w latach osiemdziesiątych, gdy sieci komputerowe zaczęły rosnąć w szybkim tempie, a administratorzy zdali sobie sprawę, że ręczne sprawdzanie każdego urządzenia staje się niemożliwe.

W tamtym czasie każde urządzenie sieciowe miało własny, zastrzeżony interfejs zarządzania, co wymuszało znajomość wielu różnych systemów konfiguracyjnych.

SNMP został zaprojektowany jako uniwersalny protokół, który niezależnie od producenta i typu urządzenia dostarcza ustandaryzowanego interfejsu do odczytu i zapisu parametrów konfiguracyjnych.

Dzięki SNMP administrator może w jednym miejscu monitorować setki urządzeń, otrzymywać alerty o przekroczeniu progów i automatycznie reagować na awarie.

Współczesne systemy monitorujące w dużym stopniu opierają się na SNMP, agregując dane z tysięcy agentów w jednym interfejsie.

5/48 Czym jest SNMP?

Architektura: model manager–agent:

  • Manager (NMS) – system zarządzający, wysyła zapytania i odbiera trapy
  • Agent – oprogramowanie na urządzeniu, odpowiada na zapytania i wysyła trapy
  • MIB (Management Information Base) – baza informacji zarządzanych
  • OID (Object Identifier) – unikalny identyfikator zmiennej w drzewie MIB
SNMP umożliwia odczyt i zapis stanu urządzeń oraz odbiór powiadomień o zdarzeniach.

SNMP (Simple Network Management Protocol) – protokół warstwy aplikacji (L7), zdefiniowany początkowo w RFC 1067 (1988), następnie rozwijany w kolejnych dokumentach RFC.

SNMP został zaprojektowany z myślą o prostocie implementacji i niskim narzucie sieciowym, co miało umożliwić jego działanie nawet na mało wydajnych urządzeniach sieciowych.

Model manager–agent zakłada, że agent działa na każdym zarządzanym urządzeniu i udostępnia zbiór zmiennych zdefiniowanych w bazie MIB, a manager centralnie zbiera dane od wszystkich agentów.

Komunikacja odbywa się w trybie żądanie–odpowiedź, przy czym manager może również odbierać od agentów nieproszone powiadomienia zwane trapami.

MIB definiuje strukturę dostępnych informacji w postaci hierarchicznego drzewa, gdzie każdy liść reprezentuje pojedynczy parametr.

OID identyfikuje jednoznacznie każdą zmienną w tym drzewie, umożliwiając managerowi precyzyjne odwołanie się do konkretnego parametru.

6/48 Wersje SNMP – porównanie
Cechav1v2cv3
UwierzytelnianieCommunity (tekst jawny)Community (tekst jawny)SHA / MD5
SzyfrowanieBrakBrakAES / DES
GetBulkNieTakTak
InformNieTakTak
Kontrola dostępuCommunity (RO/RW)Community (RO/RW)VACM
ZalecenieNie (niezalecany)Sieci wewnętrzneZawsze

Brak szyfrowania i uwierzytelniania.

Dalej używa community string.

SNMPv1 (1988, RFC 1067/1155/1157): pierwsza wersja, używa community string jako hasła w postaci jawnego tekstu.

SNMPv2c (1996, RFC 1901-1908): dodano GetBulk i Inform.

SNMPv3 (2002, RFC 3411-3418): wprowadza USM z uwierzytelnianiem (SHA/MD5) i szyfrowaniem (AES/DES) oraz VACM.

Wybór odpowiedniej wersji SNMP ma kluczowe znaczenie dla bezpieczeństwa infrastruktury sieciowej.

SNMPv1 był pierwszą próbą standaryzacji zarządzania siecią, ale community string przesyłany jawnym tekstem czyni go całkowicie niezabezpieczonym.

SNMPv2c mimo wprowadzenia GetBulk i Inform nadal opiera się na wadliwym modelu bezpieczeństwa.

Dopiero SNMPv3 przyniósł fundamentalną zmianę, wprowadzając USM z silnym uwierzytelnianiem i szyfrowaniem oraz VACM umożliwiający precyzyjną kontrolę dostępu.

W praktyce wiele starszych urządzeń wspiera wyłącznie v1 lub v2c, co wymusza dodatkowe zabezpieczenia.

W nowych wdrożeniach zawsze należy preferować SNMPv3 z SHA i AES.

7/48 Architektura SNMP
Architektura SNMP: NMS ↔ (UDP 161) ↔ Agent (z MIB) → UDP 162 → NMS (trapy)

SNMPv3 może używać TCP.

NMS (Network Management Station) – stacja zarządzania siecią, na której działa aplikacja monitorująca.

Agent – proces na zarządzanym urządzeniu (np. snmpd na serwerze Linux).

MIB – baza danych definiująca zmienne dostępne przez SNMP.

OID – identyfikator obiektu w drzewie MIB (np. .1.3.6.1.2.1.1.1.0).

Transport: domyślnie UDP 161 (zapytania), UDP 162 (trapy).

Architektura SNMP opiera się na modelu, w którym centralny NMS komunikuje się z wieloma agentami rozproszonymi w sieci.

NMS odpowiada za wysyłanie zapytań, zbieranie odpowiedzi i wizualizację wyników.

Agent przechowuje aktualne wartości zmiennych MIB i udostępnia je na żądanie.

Każdy agent posiada MIB definiującą dostępne informacje: o systemie, interfejsach, protokołach IP/TCP/UDP.

Producenci rozszerzają standardową MIB o własne gałęzie OID dla specyficznych parametrów, takich jak temperatura czy obciążenie CPU.

Współczesne agenty potrafią również wysyłać trapy informujące o zdarzeniach w czasie rzeczywistym.

8/48 Operacje SNMP
GETBULK to najefektywniejsza metoda pobierania dużych ilości danych SNMP.

Używana do iteracji po tabelach.

Znacznie szybszy niż GETNEXT.

SET – zapis wartości OID.

Wymaga uprawnień do zapisu.

GET – pobranie wartości jednego lub wielu OID.

GETNEXT – pobranie następnego OID w drzewie MIB.

GETBULK(v2c/v3) – pobranie wielu kolejnych wartości za jednym zapytaniem.

TRAP – nieproszone powiadomienie od agenta do NMS (UDP 162).

INFORM(v2c/v3) – potwierdzany trap z mechanizmem retransmisji.

RESPONSE – odpowiedź na GET, GETNEXT, GETBULK, SET.

Każda operacja SNMP pełni określoną funkcję w procesie zarządzania siecią.

GET jest najprostszą i najczęściej używaną operacją do pobierania pojedynczych wartości.

GETNEXT służy do iteracyjnego przeglądania drzewa MIB, gdy nie znamy dokładnej ścieżki OID.

GETBULK znacząco przyspiesza pobieranie dużych ilości danych dzięki możliwości uzyskania wielu wartości w jednym żądaniu.

SET umożliwia zdalną zmianę konfiguracji urządzenia, ale wymaga odpowiednich uprawnień.

Trapy są wysyłane przez agenta bez zapytania ze strony managera, co pozwala na natychmiastowe powiadomienie o awarii.

Inform jest rozszerzeniem trapa o mechanizm potwierdzenia gwarantujący dostarczenie powiadomienia do NMS.

9/48 Porty i transport
PortProtokółPrzeznaczenie
161UDPZapytania managera do agenta
162UDPTrapy i Inform – powiadomienia od agenta
ss -tuln | grep -E '161|162'
UDP 161 – zapytania, UDP 162 – trapy.

SNMPv3 może również używać TCP (port 161).

SNMP domyślnie używa protokołu UDP ze względu na niski narzut i szybkość.

UDP

UDP TCP

Wybór UDP jako protokołu transportowego dla SNMP wynika z charakterystyki protokołu zarządzania siecią.

Każde żądanie GET czy SET jest samodzielne i nie wymaga kontekstu poprzednich zapytań.

SNMPv3 wprowadza możliwość użycia TCP dla transmisji wymagającej niezawodności.

W praktyce dominuje UDP, a problemy z gubieniem pakietów rozwiązuje się przez wielokrotne wysyłanie zapytań z timeoutami.

10/48 MIB i OID – wprowadzenie
  • .1 – ISO
  • .3 – ORG
  • .6 – DoD
  • .1 – INTERNET
  • .2 – mgmt
  • .1 – mib-2
  • .1 – system
  • .1 – sysdescr
  • .0 – instancja
sysDescr.0 (.1.3.6.1.2.1.1.1.0) – opis systemu.

Przykład: OID .1.3.6.1.2.1.1.1.0 oznacza:

MIB(Management Information Base) – wirtualna baza danych definiująca strukturę informacji dostępnych przez SNMP.

OID(Object Identifier) – unikalny numeryczny identyfikator obiektu w hierarchicznym drzewie MIB.

Zrozumienie struktury MIB i OID jest kluczowe dla efektywnego wykorzystania SNMP.

Drzewo MIB ma strukturę hierarchiczną przypominającą system plików, gdzie kolejne poziomy są oznaczane liczbami oddzielonymi kropkami.

Standardowe gałęzie są zarządzane przez IANA i ISO, które przydzielają zakresy numerów.

Dla administratora najważniejszą gałęzią jest .1.3.6.1.2.1 (mib-2) zawierająca standardowe grupy obiektów: system, interfejsy, IP, TCP i SNMP.

Każda zmienna skalarna ma OID zakończony .0, a obiekty tabelaryczne mają wiele instancji indeksowanych numerem wiersza.

Praktyczna znajomość OID pozwala na szybkie pozyskanie danych bez konieczności przeglądania całego drzewa MIB.

11/48 drzewo MIB – struktura hierarchiczna
OIDNazwaOpis
.1isoISO – korzeń
.1.3orgOrganizacje
.1.3.6dodDepartament Obrony USA
.1.3.6.1internetInternet
.1.3.6.1.1directoryRezerwacja dla OSI
.1.3.6.1.2mgmtZarządzanie (mib-2)
.1.3.6.1.3experimentalEksperymentalne MIB
.1.3.6.1.4privatePrywatne MIB producentów
.1.3.6.1.4.1enterprisesNumery przedsiębiorstw
Najważniejsze gałęzie:

Każdy producent może otrzymać numer w gałęzi enterprises.

Drzewo MIB jest zorganizowane hierarchicznie.

Cisco ma numer 9 (OID .1.3.6.1.4.1.9), MikroTik 14988.

Hierarchiczna struktura drzewa MIB umożliwia zarówno globalną standaryzację, jak i elastyczne rozszerzanie o prywatne definicje producentów.

Korzeń należy do ISO, które przekazało zarządzanie gałęzią internetową IANA.

Gałąź mgmt zawiera standardowe MIB, z których najważniejszy jest mib-2 zdefiniowany w RFC 1213.

Gałąź private służy do definiowania rozszerzeń MIB przez producentów, którzy muszą uzyskać numer enterprise od IANA.

Dzięki tej hierarchii zarządzanie jest scentralizowane, a każdy producent może swobodnie rozszerzać funkcjonalność SNMP.

12/48 MIB-2 (RFC 1213) – standardowa baza
GrupaOID (.1.3.6.1.2.1.x)Opis
system.1Informacje o systemie
interfaces.2Interfejsy sieciowe
at.3Tabela translacji adresów (przestarzała)
ip.4Statystyki IP
icmp.5Statystyki ICMP
tcp.6Statystyki TCP
udp.7Statystyki UDP
snmp.11Statystyki SNMP

MIB-2 (RFC 1213) – podstawowa baza implementowana przez każde urządzenie zgodne ze SNMP.

Grupa snmp zawiera liczniki dotyczące samego SNMP.

MIB-2 definiuje kilkanaście grup obiektów (grupa system jest obowiązkowa, pozostałe są powszechnie implementowane).

Grupa system dostarcza informacji identyfikacyjnych, grupa interfaces statystyk interfejsów, a grupy ip,, , dostarczają danych o protokołach.

Mimo że RFC 1213 pochodzi z 1991 roku, MIB-2 pozostaje aktualny i jest implementowany we wszystkich nowoczesnych urządzeniach sieciowych.

Znajomość tych grup jest niezbędna do efektywnego monitorowania sieci, ponieważ stanowią one uniwersalny interfejs dostępu do danych niezależnie od producenta sprzętu.

13/48 Grupa system (1.3.6.1.2.1.1)
OIDNazwaTypPrzykład
.1.3.6.1.2.1.1.1.0sysdescrOCTET STRING"Linux Debian-server 5.10"
.1.3.6.1.2.1.1.2.0sysObjectIdOID.1.3.6.1.4.1.8072
.1.3.6.1.2.1.1.3.0sysUpTimeTimeTicks12456789
.1.3.6.1.2.1.1.4.0sysContactOCTET STRING"admin@example.com"
.1.3.6.1.2.1.1.5.0sysNameOCTET STRING"Debian-server"
.1.3.6.1.2.1.1.6.0sysLocationOCTET STRING"Rack A, Slot 12"
snmpget -v2c -c public localhost .1.3.6.1.2.1.1.1.0

Grupa system zawiera podstawowe informacje identyfikujące urządzenie.

Grupa system jest najczęściej używaną grupą MIB-2 podczas wstępnej diagnostyki urządzenia. sysdescr zawiera opis systemu z nazwą producenta i wersją oprogramowania. sysUpTime podaje czas od ostatniego restartu w setnych częściach sekundy (TimeTicks), co pozwala ocenić stabilność systemu.

sysContact i sysLocation są polami konfigurowalnymi przez administratora, które powinny być wypełnione danymi kontaktowymi i lokalizacją urządzenia. sysName to nazwa hosta zgodna z DNS. sysServices to bitowa maska określająca obsługiwane warstwy OSI.

Praktyczne znaczenie grupy system polega na możliwości automatycznego wykrywania i identyfikacji urządzeń w sieci.

14/48 Grupa interfaces (1.3.6.1.2.1.2)
OIDNazwaOpis
.1.3.6.1.2.1.2.1.0ifNumberLiczba interfejsów
.1.3.6.1.2.1.2.2.1.1ifIndexIndeks interfejsu
.1.3.6.1.2.1.2.2.1.2ifdescrOpis interfejsu
.1.3.6.1.2.1.2.2.1.6ifPhysAddressAdres MAC
.1.3.6.1.2.1.2.2.1.8ifOperStatusStatus (1=up, 2=down)
.1.3.6.1.2.1.2.2.1.10ifInOctetsOdebrane oktety
.1.3.6.1.2.1.2.2.1.16ifOutOctetsWysłane oktety

Grupa interfaces zawiera informacje o interfejsach sieciowych.

Monitorowanie ruchu: snmpget -v2c -c public router ifInOctets.1

Najważniejsze są liczniki ifInOctets i ifOutOctets zliczające przesłane oktety.

Grupa interfaces jest kluczowa dla monitorowania wydajności sieci, dostarczając statystyk każdego interfejsu. ifOperStatus informuje czy interfejs jest aktywny, umożliwiając szybkie wykrywanie awarii.

Różnica tych wartości w czasie pozwala obliczyć aktualne wykorzystanie łącza. ifTable jest tabelą, gdzie każdy wiersz odpowiada interfejsie, a kolumny to poszczególne parametry.

Aby odczytać statystyki konkretnego interfejsu, dodaje się ifIndex do OID kolumny, np. ifInOctets.1 dla interfejsu o indeksie 1.

15/48 Grupy IP, ICMP, TCP, UDP
GrupaOIDObiektOpis
ip.1.3.6.1.2.1.4ipInReceives (.3.0)Odebrane datagramy IP
ipipInHdrErrors (.20.0)Błędy nagłówka IP
ipipOutRequests (.10.0)Wysłane datagramy IP
icmp.1.3.6.1.2.1.5icmpInEchos (.8.0)Odebrane ping request
tcp.1.3.6.1.2.1.6tcpActiveOpens (.1.0)Aktywne otwarcia TCP
tcptcpInSegs (.10.0)Odebrane segmenty TCP
udp.1.3.6.1.2.1.7udpIndatagrams (.1.0)Odebrane datagramy UDP
udpudpNoPorts (.2.0)datagramy na zamknięty port

Grupy protokołów dostarczają statystyk warstwy 3 i 4.

Grupy IP, ICMP, TCP i UDP dostarczają statystyk na poziomie protokołów, umożliwiając dogłębną diagnostykę.

Wysoka wartość ipInHdrErrors może wskazywać na uszkodzone pakiety lub atak IP spoofing.

Nadmierna liczba icmpInDestUnreachs sugeruje problemy z routingiem.

Grupa TCP zawiera informacje o retransmisjach i błędach, co jest przydatne przy analizie wydajności serwerów. udpNoPorts wskazuje na liczbę datagramów wysłanych na porty bez nasłuchującego procesu, co może być oznaką skanowania lub ataku DoS.

Monitorowanie tych statystyk pozwala szybko wykrywać anomalie w ruchu sieciowym.

16/48 Private MIB (1.3.6.1.4.1) – MIBy producentów
ProducentNumerOID bazowy
Cisco9.1.3.6.1.4.1.9
MikroTik14988.1.3.6.1.4.1.14988
Net-SNMP8072.1.3.6.1.4.1.8072
Juniper2636.1.3.6.1.4.1.2636
Hewlett-Packard11.1.3.6.1.4.1.11
Aruba Networks14823.1.3.6.1.4.1.14823
VMware6876.1.3.6.1.4.1.6876

Gałąź private.enterprises zawiera autorskie MIB producentów.

Przykład MikroTik: snmpwalk -v2c -c public 192.168.88.1 .1.3.6.1.4.1.14988.1.1

Każdy producent uzyskuje unikalny numer enterprise od IANA.

Gałąź private.enterprises jest kluczowym mechanizmem rozszerzalności SNMP, pozwalającym producentom na definiowanie własnych obiektów MIB.

Cisco (9) udostępnia monitorowanie temperatury, zasilaczy i obciążenia CPU.

MikroTik (14988) udostępnia parametry interfejsów bezprzewodowych.

Net-SNMP definiuje rozszerzenia pod OID .1.3.6.1.4.1.8072, w tym monitorowanie obciążenia systemu, dysków i procesów.

Praktyczna znajomość numerów enterprise najpopularniejszych producentów znacznie przyspiesza konfigurację monitorowania i ułatwia identyfikację dostępnych parametrów na urządzeniach różnych marek.

17/48 SMI – Structure of Management Information
Typ SMIOpisUwagi
INTEGERLiczba całkowita 32-bit-2^31 do 2^31-1
OCTET STRINGCiąg bajtówdowolna długość
OBJECT IDENTIFIERIdentyfikator OIDNp. .1.3.6.1.2.1
IpAddressAdres IPv44 bajty
Counter32Licznik monotonicznyReset po 2^32
Counter64Licznik 64-bitdla szybkich interfejsów
Gauge32Wartość mierzonaMoże rosnąć i maleć
TimeTicksCzas w setnych sekundyNp. sysUpTime

SMI – język definiowania typów danych MIB (RFC 1155 dla v1, RFC 2578 dla v2).

Kluczowe jest rozróżnienie Counter32 (monotoniczny, reset po 2^32) od Gauge32 (może rosnąć i maleć).

SMI korzysta z podzbioru ASN.1 do opisu struktury danych zarządzanych.

Dla administratora znajomość typów SMI jest istotna przy interpretacji wartości zwracanych przez narzędzia SNMP.

W przypadku szybkich interfejsów powyżej 1 Gbps liczniki 32-bitowe resetują się zbyt często, dlatego SNMPv2 wprowadził Counter64.

TimeTicks wyrażany w setnych sekundy: 360000 to jedna godzina.

Znajomość tych typów pozwala prawidłowo interpretować dane monitorowania.

18/48 Jak znaleźć potrzebny OID?

snmpwalk – iteracja drzewa

snmpwalk -v2c -c public 192.168.1.1 .1.3.6.1.2.1.1

snmptranslate – konwersja nazw

snmptranslate -IR -On sysdescr
snmptranslate -OS .1.3.6.1.2.1.1.1.0

Zewnętrzne źródła:

Metody odnajdywania:

W praktyce administrator często nie zna dokładnego OID.

Znalezienie właściwego OID to jedna z najczęstszych czynności administratora. snmpwalk rekurencyjnie przechodzi przez gałęzie drzewa MIB i zwraca wszystkie wartości poniżej wskazanego punktu.

Jeśli nie znamy żadnego OID, wywołanie z OID .1 zwróci wszystkie dostępne zmienne.

snmptranslate konwertuje między numeryczną a tekstową reprezentacją OID.

Zewnętrzne bazy jak MIB depot umożliwiają wyszukiwanie OID po nazwie.

Po zainstalowaniu plików MIB w /usr/share/snmp/mibs nazwy symboliczne stają się dostępne dla wszystkich narzędzi SNMP.

19/48 Pakiety SNMP w Debianie
PakietOpis
snmpdAgent SNMP na UDP 161
snmpNarzędzia klienckie
snmptrapdOdbiornik trapów na UDP 162
libsnmp-devBiblioteki deweloperskie
snmp-mibs-downloaderPobieranie standardowych MIB
apt-cache search snmp | grep -E 'snmp|snmptrap'

Debian oferuje pakiety SNMP do instalacji przez apt.

Debian oferuje kompletną implementację SNMP w osobnych pakietach.

Pakiet snmpd instaluje agenta udostępniającego informacje o systemie.

Pakiet snmp zawiera narzędzia konsolowe do odpytywania agentów. snmptrapd instaluje demona do odbierania trapów.

Pakiet snmp-mibs-downloader automatyzuje pobieranie standardowych plików MIB.

Po jego instalacji narzędzia mogą używać nazw symbolicznych zamiast numerycznych OID.

W typowym scenariuszu wystarczy zainstalować snmpd i snmp. libsnmp-dev potrzebny jest tylko do tworzenia własnych aplikacji.

20/48 Instalacja krok po kroku

Instalacja SNMP na Debianie:

apt update
apt install snmpd snmp snmptrapd
systemctl status snmpd
snmpd --version

Po instalacji:

  • Agent snmpd nasłuchuje na UDP 161
  • Konfiguracja w /etc/snmp/snmpd.conf
  • Konfiguracja klienta w /etc/snmp/snmp.conf
domyślnie: snmpd nasłuchuje tylko na localhost. Zmień agentAddress dla dostępu zdalnego.

Domyślnie używane jest community public z dostępem RO.

Należy je zmienić ze względów bezpieczeństwa.

Instalacja SNMP w Debianie jest prosta, ale warto zwrócić uwagę na szczegóły.

Po instalacji snmpd nasłuchuje tylko na 127.0.0.1, co uniemożliwia monitorowanie z innych hostów.

Aby to zmienić, edytuj agentAddress w snmpd.conf na adres IP interfejsu lub 0.0.0.0.

Po modyfikacji konfiguracji restartuj usługę: systemctl restart snmpd.

Do testowania użyj snmpget -v2c -c public localhost .1.3.6.1.2.1.1.1.0.

21/48 Pliki konfiguracyjne
/etc/snmp/
├── snmpd.conf  # Konfiguracja agenta
├── snmp.conf  # Konfiguracja kliencka
├── snmptrapd.conf  # Konfiguracja trapd
└── /etc/default/
  └── snmpd  # Opcje uruchomieniowe
PlikPrzeznaczenie
/etc/snmp/snmpd.confCommunity, uprawnienia, agentAddress, rozszerzenia
/etc/snmp/snmp.confdomyślne ustawienia narzędzi klienckich
/etc/snmp/snmptrapd.confAutoryzacja trapów, traphandle
/etc/default/snmpdOpcje startowe demona
Kluczowe pliki konfiguracyjne w/etc/snmp/:

Snmpd.conf jest głównym plikiem konfiguracyjnym definiującym community, ograniczenia dostępu i rozszerzenia.

Snmp.conf ustawia domyślne parametry dla narzędzi klienckich, eliminując konieczność podawania ich w każdym wywołaniu. /etc/default/snmpd zawiera zmienne środowiskowe demona.

Katalog /usr/share/snmp/mibs/ zawiera pliki MIB niezbędne do konwersji numerycznych OID na nazwy symboliczne.

Bez zainstalowanych plików MIB narzędzia wyświetlają OID w formacie numerycznym, co utrudnia interpretację wyników.

22/48 Podstawowa konfiguracja snmpd.conf

Minimalna konfiguracja agenta SNMP:

# Community tylko do odczytu
rocommunity public  default  -V systemonly

# Lokalizacja i kontakt
sysLocation  "Serwerownia, Rack A, Slot 12"
sysContact  "admin@example.com"

# Adres nasłuchiwania
agentAddress udp:161,udp6:161

# dołączenie lokalnych ustawień
includeFile /etc/snmp/snmpd.conf.local

Po zmianach: systemctl restart snmpd

Zawsze zmieniaj domyślne community!

Podstawowa konfiguracja snmpd.conf wymaga zrozumienia dyrektyw. rocommunity definiuje community dla dostępu RO z opcjonalnym ograniczeniem źródłowego IP i widoku. agentAddress określa interfejsy nasłuchu – zmiana na :161,udp6:161 udostępnia agenta na wszystkich interfejsach.

sysLocation i sysContact wypełnia się danymi identyfikującymi urządzenie. includeFile pozwala dołączyć dodatkowy plik konfiguracyjny dla niestandardowych ustawień.

Po każdej zmianie należy zrestartować snmpd, aby zmiany zostały zastosowane.

23/48 Konfiguracja dostępu – SNMPv1/v2c

dyrektywy rocommunity:

# dostęp z dowolnego hosta
rocommunity public

# Tylko z podsieci
rocommunity public  192.168.1.0/24

# Z ograniczeniem widoku
rocommunity public  default  -V systemonly

# Wiele community
rocommunity internal  10.0.0.0/8
rocommunity external  0.0.0.0/0  -V systemonly

dostęp RW:

rwcommunity private  192.168.1.100
Community string przesyłany jawnym tekstem – tylko w zaufanych sieciach.

Kontrola dostępu opiera się na community string.

Community string w SNMPv1/v2c pełni funkcję hasła, ale jest przesyłany jawnym tekstem.

Każdy z dostępem do sieci może przechwycić community za pomocą analizatora pakietów.

Dlatego SNMPv1/v2c należy stosować wyłącznie w izolowanych sieciach zarządzania.

Zawsze ograniczaj źródłowe adresy IP do minimum i stosuj widoki MIB ograniczające dostęp do niezbędnych gałęzi.

Dyrektywa rocommunity z -V przypisuje widok do community, umożliwiając zróżnicowanie dostępu. rwcommunity używaj bardzo rzadko i tylko z konkretnych adresów IP.

24/48 Konfiguracja agenta (opcje snmpd.conf)
agentAddress udp:161,udp6:161
rocommunity monit  192.168.1.0/24

# Monitorowanie dysków
disk / 80%
disk /var 90%
includeAlldisks 10%

# Monitorowanie obciążenia CPU
load 12 10 5

# Monitorowanie procesów
proc sshd
proc apache2
proc snmpd

includeFile /etc/snmp/snmpd.conf.local

Zaawansowana konfiguracja z rozszerzeniami monitorowania:

Rozszerzone opcje snmpd.conf umożliwiają monitorowanie parametrów systemu.

Dyrektywa disk definiuje progi ostrzegawcze użycia partycji. load monitoruje obciążenie systemu (load average) dla 1, 5 i 15 minut. proc sprawdza, czy procesy są uruchomione.

Te rozszerzenia są dostępne przez UCd-SNMP-MIB (.1.3.6.1.4.1.2021).

Wartości są wykorzystywane przez systemy monitorujące do generowania alertów.

Dzięki tym rozszerzeniom SNMP staje się kompletnym narzędziem do monitorowania zarówno urządzeń sieciowych, jak i serwerów.

25/48 Uruchamianie i testowanie agenta
systemctl restart snmpd
systemctl status snmpd
ss -tuln | grep 161

# Test podstawowy
snmpget -v2c -c monit localhost .1.3.6.1.2.1.1.1.0

# Test z adresem IP
snmpget -v2c -c monit 192.168.1.100 .1.3.6.1.2.1.1.1.0

# Test snmpwalk
snmpwalk -v2c -c monit localhost .1.3.6.1.2.1.1
Timeout: No Response? Sprawdź firewall, agentAddress i community.

Po konfiguracji uruchom i przetestuj agenta:

Testowanie agenta SNMP jest kluczowe po każdej zmianie konfiguracji.

systemctl status snmpd potwierdza poprawne uruchomienie. ss -tuln | grep 161 sprawdza nasłuch na UDP 161.

Jeśli agent nasłuchuje tylko na 127.0.0.1, nie będzie dostępny zdalnie.

Podstawowy test snmpget z sysdescr powinien zwrócić opis systemu.

Błąd Timeout oznacza problem z konfiguracją agentAddress, firewallem lub nieprawidłowym community.

Po udanym teście pojedynczego OID warto wykonać snmpwalk grupy system, aby sprawdzić dostępność wszystkich zmiennych.

26/48 snmpget – pobieranie pojedynczej wartości

Składnia:

snmpget [opcje] host OID [OID ...]
OpcjaOpis
-v wersja1, 2c lub 3
-c communityCommunity string
-t timeoutTimeout w sekundach (dom. 1)
-r retriesLiczba ponowień (dom. 5)

Przykłady:

snmpget -v2c -c public localhost sysDescr.0
snmpget -v2c -c public localhost sysName.0 sysUpTime.0
snmpget -v2c -c public 192.168.1.1 .1.3.6.1.2.1.1.1.0

snmpget – podstawowe narzędzie do pobierania wartości OID.

Wysyła żądanie GET do agenta i wyświetla odpowiedź.

snmpget jest najprostszym narzędziem w zestawie Net-SNMP do szybkiego sprawdzania pojedynczych parametrów.

Może być wywołany z nazwami symbolicznymi OID (jeśli MIB są zainstalowane) lub numerycznymi.

Przy podaniu wielu OID w jednym wywołaniu, snmpget wysyła je w jednym żądaniu, co jest efektywniejsze niż wielokrotne wywołania.

Wartość timeout ma znaczenie dla wolnych urządzeń. snmpget jest często używany w skryptach monitorujących do okresowego sprawdzania parametrów.

27/48 snmpwalk – iteracja drzewa MIB

Składnia:

snmpwalk [opcje] host [OID]

Przykłady:

snmpwalk -v2c -c public localhost .1.3.6.1.2.1.1
snmpwalk -v2c -c public localhost .1.3.6.1.2.1.2
snmpwalk -v2c -c public localhost .1.3.6.1.2.1
snmpwalk -v2c -c public localhost .1
snmpwalk używa GETNEXT – wolniejszy niż GETBULK, ale działa ze wszystkimi wersjami SNMP.

snmpwalk – iteracyjne przeglądanie drzewa MIB przez GETNEXT.

Wynik można przekierować do pliku i analizować offline.

snmpwalk jest nieoceniony do eksploracji drzewa MIB nieznanego urządzenia.

Działa poprzez wielokrotne wywoływanie GETNEXT, zwracając kolejne OID w porządku leksykograficznym.

Dla dużych drzew MIB generuje znaczną liczbę zapytań, ale daje pełny obraz dostępnych danych.

Praktyczne zastosowanie to szybka inwentaryzacja: snmpwalk na grupie system zwraca wszystkie informacje o systemie, na grup interfaces pełną listę interfejsów.

28/48 snmptable – odczyt tabel SNMP

Składnia:

snmptable [opcje] host OID

Przykłady:

snmptable -v2c -c public localhost .1.3.6.1.2.1.2.2
snmptable -Ci -v2c -c public localhost ifTable
snmptable -v2c -c public router ipRouteTable

Przykład ifTable:

ifIndex ifdescr ifType ifMtu  ifSpeed  ifOperStatus
1  lo  24  65536  10000000 1
2  eth0  6  1500  100000000 1
3  wlan0  6  1500  100000000 2

snmptable – formatuje dane tabelaryczne w czytelną tabelę.

Opcja -Ci dodaje indeks wiersza.

snmptable znacząco ułatwia odczyt danych tabelarycznych, formatując surowe dane w tabelę z nagłówkami.

Bez niego odczytanie tabeli wymaga ręcznego snmpwalk dla każdej kolumny.

Najczęściej używane tabele to ifTable (interfejsy) i ipRouteTable (tablica routingu). snmptable wymaga plików MIB do wyświetlania nazw kolumn.

W przypadku setek wpisów może działać wolno, ale jest użyteczny do selektywnego przeglądania.

29/48 snmpset – zdalna konfiguracja

snmpset – modyfikacja OID. Wymaga RW.

Składnia:

snmpset [opcje] host OID typ wartość
SymbolTypPrzykład
sOCTET STRINGs "nowa nazwa"
iINTEGERi 42
uunsignedu 1000
aIpAddressa 192.168.1.100
xHEX STRINGx "AA BB"

Przykłady:

snmpset -v2c -c private localhost sysName.0 s "nowy-serwer"
snmpset -v2c -c private localhost sysLocation.0 s "Rack B"
UWAGA! snmpset może uszkodzić konfigurację urządzenia.

Wymaga uprawnień RW.

Przy użyciu należy dokładnie określić typ danych.

snmpset umożliwia zdalną modyfikację konfiguracji urządzeń przez SNMP, co jest przydatne przy masowej rekonfiguracji.

Nieostrożne użycie może doprowadzić do unieruchomienia urządzenia, dlatego zawsze testuj na urządzeniu laboratoryjnym.

Najczęściej używany do zmiany sysName, sysLocation i sysContact.

W środowiskach produkcyjnych zaleca się ograniczenie dostępu RW do minimum i stosowanie SNMPv3 z authPriv.

30/48 snmpbulkget i snmpbulkwalk – szybki odczyt

snmpbulkget

snmpbulkget -v2c -c public localhost .1.3.6.1.2.1.1.1.0 .1.3.6.1.2.1.1.5.0

snmpbulkwalk

snmpbulkwalk -v2c -c public localhost .1.3.6.1.2.1.1
snmpbulkwalk -v2c -c public -Cr10 localhost system
GETBULK nawet 10-100x szybszy niż iteracyjny GETNEXT przy dużych tabelach.

Używają GETBULK (v2c/v3) – znacznie szybsze od GETNEXT.

GETBULK to kluczowa optymalizacja SNMPv2c.

W przeciwieństwie do GETNEXT pobierającego jedną wartość na iterację, GETBULK może pobrać wiele wartości w jednym żądaniu.

Parametry non-repeaters i max-repetitions kontrolują liczbę pobieranych wartości.

Pobranie całej ifTable z setkami wpisów wymaga kilku żądań GETBULK zamiast setek GETNEXT. snmpbulkwalk automatyzuje iterację z GETBULK.

W systemach monitorujących jak Zabbix czy LibreNMS GETBULK jest domyślną metodą pobierania danych.

31/48 snmptrap – wysyłanie trapów

Składnia (v1):

snmptrap -v1 -c community host agent-addr gen-trap spec-trap uptime [OID value]

Składnia (v2c/v3):

snmptrap -v2c -c community host uptime OID value

Przykład:

snmptrap -v2c -c public 192.168.1.200 "" .1.3.6.1.6.3.1.1.5.3 \
  ifIndex i 1 ifAdminStatus i 1 ifOperStatus i 2
Trapy v1: coldStart(0), warmStart(1), linkdown(2), linkUp(3), authFailure(4).

snmptrap – ręczne wysyłanie trapów do testów.

W SNMPv1 trapy mają predefiniowane typy ogólne.

snmptrap testuje konfigurację odbiornika trapów przez symulację zdarzeń.

W v2c/v3 są elastyczne i opierają się na OID identyfikującym zdarzenie.

Przy wysyłaniu podaje się adres odbiornika, znacznik czasu i OID.

W praktyce snmptrap sprawdza, czy snmptrapd poprawnie odbiera trapy i czy traphandle działają.

W środowiskach produkcyjnych trapy są wysyłane automatycznie przez agentów przy zdarzeniach, np. przekroczeniu temperatury na przełączniku.

32/48 snmptrapd – odbiór trapów

Konfiguracja /etc/snmp/snmptrapd.conf:

authCommunity log,execute public
traphandle .1.3.6.1.6.3.1.1.5.3 /usr/local/bin/link-down.sh
traphandle default /usr/bin/logger -t snmptrapd

Włączenie (/etc/default/snmptrapd):

TRAPDRUN=yes

Test:

snmptrapd -f -Lo
# w drugim terminalu:
snmptrap -v2c -c public 127.0.0.1 "" .1.3.6.1.6.3.1.1.5.3 ifIndex i 1

snmptrapd – demon na UDP 162 do odbierania trapów.

TRAPDRUN=yes włącza automatyczne uruchamianie.

snmptrapd nasłuchuje na 162 i odbiera trapy od agentów SNMP.

Jego zadaniem jest rejestrowanie zdarzeń i inicjowanie akcji: alerty e-mail, skrypty naprawcze, przekazanie do systemu monitorującego. authCommunity określa akceptowane trapy.

traphandle definiuje akcje dla konkretnych typów trapów lub wartość default dla wszystkich.

Tryb debug (-f -Lo) wyświetla trapy na konsoli, co jest przydatne przy testowaniu.

33/48 snmpstatus – szybki podgląd urządzenia

Składnia:

snmpstatus [opcje] host

Przykład:

snmpstatus -v2c -c public 192.168.1.1

Wyjście:

[192.168.1.1] => [Linux Debian-router 5.10.0-21-amd64]
  Uptime: 27 days, 14:23:11.45
  Interfaces: 5
  IP Forwarding: enabled
  Inet addresses: 192.168.1.1, 10.0.0.1
  Incoming traffic: 1,234,567,890 octets
  Outgoing traffic: 987,654,321 octets

snmpstatus – podstawowe info o urządzeniu w jednym wywołaniu.

snmpstatus w jednym wywołaniu pobiera najważniejsze informacje: sysdescr, sysUpTime, ifNumber, adresy IP i sumaryczny ruch.

Obsługuje wszystkie wersje SNMP, najczęściej używany z v2c.

Jest idealny do szybkiej orientacji podczas inwentaryzacji sieci.

Pozwala sprawdzić, jakie urządzenie jest pod danym adresem IP.

Często używany w skryptach odkrywających urządzenia w sieci.

Najpierw snmpstatus sprawdza dostępność SNMP, potem snmpwalk pobiera szczegółowe dane.

34/48 snmpdelta – monitorowanie zmian

Składnia:

snmpdelta [opcje] host OID [OID ...]

Przykłady:

snmpdelta -v2c -c public -t 2 192.168.1.1 ifInOctets.1
snmpdelta -v2c -c public -t 5 192.168.1.1 ifInOctets.1 ifOutOctets.1

Wyjście (co 2 s):

ifInOctets.1  ifOutOctets.1
  1404  5792
  1012  6112
  1600  5690

snmpdelta – śledzi zmiany liczników w czasie.

Opcja -t określa interwał w sekundach.

Nie zapisuje historii pomiarów – wyniki na konsoli.

snmpdelta monitoruje zmiany liczników SNMP w czasie, idealny do pomiaru przepustowości łącza.

Okresowo odczytuje wartości OID i wyświetla różnicę między odczytami.

Różnica ifInOctets podzielona przez czas daje aktualną przepustowość w B/s.

Działa tylko z Counter32/Counter64 (monotonicznie rosnącymi).

Do długoterminowego monitorowania użyj MRTG, Cacti lub Zabbix.

35/48 snmpdf – monitorowanie dysków

Składnia:

snmpdf [opcje] host

Przykład:

snmpdf -v2c -c monit 192.168.1.100

Wyjście:

device  Size (kB)  Used (kB)  Avail (kB)  Used%
/  40,960,000 12,345,678 28,614,322  30%
/var  20,480,000  8,200,000 12,280,000  40%
Physical memory  8,192,000  5,600,000  2,592,000  68%
Virtual memory  16,384,000  6,800,000  9,584,000  42%

snmpdf – wyświetla użycie dysków przez SNMP.

Korzysta z HOST-RESOURCES-MIB i UCd-SNMP-MIB.

Pokazuje partycje z rozmiarem, użyciem i procentem.

snmpdf sprawdza użycie dysków zdalnego serwera bez logowania przez SSH.

Aby działał, agent musi mieć włączoną dyrektywę disk w snmpd.conf.

Często używany w skryptach monitorujących do okresowego sprawdzania dysków i wysyłania alertów przy przekroczeniu progów.

W systemach monitorujących dane z snmpdf są zbierane automatycznie i prezentowane na wykresach.

36/48 Dlaczego SNMPv3?

Problemy v1/v2c:

  • Brak uwierzytelniania
  • Brak szyfrowania
  • Brak integralności
  • Ograniczona kontrola dostępu

SNMPv3 wprowadza:

  • USM – uwierzytelnianie SHA/MD5 i szyfrowanie AES/DES
  • VACM – precyzyjna kontrola dostępu do gałęzi MIB
Zawsze używaj SNMPv3 w sieciach produkcyjnych!

SNMPv1/v2cprzesyła community string jawnym tekstem.

Przejście na SNMPv3 eliminuje podstawowe słabości wcześniejszych wersji.

W SNMPv1/v2c community string jest przesyłany jawnym tekstem – każdy z analizatorem pakietów może go przechwycić.

Wiele urządzeń używa domyślnych public/private, które są powszechnie znane.

SNMPv3 wprowadza model użytkowników z hasłami nieprzesyłanymi jawnie, uwierzytelnianie kryptograficzne (SHA) i szyfrowanie (AES).

VACM definiuje reguły: który użytkownik ma dostęp do jakich gałęzi MIB i czy tylko do odczytu czy także do zapisu.

37/48 Poziomy bezpieczeństwa SNMPv3

Trzy poziomy bezpieczeństwa SNMPv3:

PoziomNazwaUwierz.Szyfr.Zalecany
noAuthNoPrivBrakNieNieNie
authNoPrivTylko authSHA/MD5NieOgraniczony
authPrivPełnySHA/MD5AES/DESZalecany

Rekomendacje:

  • authPriv z SHA+AES – standard bezpieczeństwa
  • authNoPriv – gdy szyfrowanie niemożliwe
  • noAuthNoPriv – tylko testy
SHA + AES – zalecane w sieciach produkcyjnych.

MD5 i DES są słabe kryptograficznie.

noAuthNoPriv odpowiada SNMPv2c – ani uwierzytelniania, ani szyfrowania. authNoPriv dodaje uwierzytelnianie (pakiet podpisany, ale nie szyfrowany). authPriv zapewnia najwyższy poziom: uwierzytelnianie SHA/MD5 i szyfrowanie AES/DES.

Zaleca się authPriv z SHA (uwierzytelnianie) i AES (szyfrowanie).

Wyższy poziom bezpieczeństwa zwiększa narzut obliczeniowy, co może mieć znaczenie na starszych urządzeniach.

38/48 Tworzenie użytkownika SNMPv3 (net-snmp)

Tworzenie użytkownika:

systemctl stop snmpd
net-snmp-config --create-snmpv3-user -a SHA \
  -x AES -A "HasloAuth123" -X "HasloPriv456" admin
systemctl start snmpd
OpcjaZnaczenie
-a SHA | MD5Algorytm uwierzytelniania
-x AES | DESAlgorytm szyfrowania
-A "haslo"Hasło uwierzytelniania (min. 8 zn.)
-X "haslo"Hasło szyfrowania (min. 8 zn.)
Użytkownicy SNMPv3 w /var/lib/snmp/snmpd.conf (Debian).

Narzędzie net-snmp-config do tworzenia użytkowników.

Hasła powinny mieć min. 8 znaków i być różne.

net-snmp-config automatyzuje tworzenie użytkowników SNMPv3, generując klucze i zapisując konfigurację.

Przed uruchomieniem zatrzymaj snmpd. -a określa algorytm uwierzytelniania (zalecany SHA), -x algorytm szyfrowania (zalecany AES).

Po utworzeniu użytkownika i uruchomieniu snmpd, testuj dostęp snmpget z parametrami SNMPv3.

W razie potrzeby można też konfigurować użytkowników ręcznie przez createUser w snmpd.conf.

39/48 Konfiguracja SNMPv3 w snmpd.conf (ręczna)
# Tworzenie użytkownika
createUser admin SHA "haslo_auth" AES "haslo_priv"

# dostęp RO
rouser admin authPriv

# dostęp RW
# rwuser admin authPriv

# Z ograniczeniem widoku
rouser admin authPriv -V systemonly

# definicja widoku
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1

# Wielu użytkowników
rouser monitor authNoPriv
rouser admin  authPriv

systemctl restart snmpd

Ręczna konfiguracja użytkowników SNMPv3:

Widoki (view) definiują dostępne gałęzie MIB.

Po dodaniu użytkowników restartuj snmpd.

Ręczna konfiguracja daje większą kontrolę nad widokami MIB. createUser definiuje użytkownika – po pierwszym uruchomieniu klucze są zapisywane w /var/lib/snmp/snmpd.conf. rouser przyznaje dostęp RO z poziomem bezpieczeństwa. rwuser dodaje prawo zapisu.

Pozwala to tworzyć użytkowników z ograniczonym dostępem, np. monitor tylko do odczytu grupy system, a admin pełny dostęp z authPriv.

40/48 Testowanie SNMPv3 z konsoli

Testowanie dostępu SNMPv3 z konsoli:

# Poziom authPriv (SHA + AES)
snmpget -v3 -u admin -l authPriv \
  -a SHA -A "HasloAuth123" \
  -x AES -X "HasloPriv456" \
  localhost .1.3.6.1.2.1.1.1.0

# Poziom authNoPriv (tylko SHA)
snmpget -v3 -u admin -l authNoPriv \
  -a SHA -A "HasloAuth123" \
  localhost .1.3.6.1.2.1.1.1.0

# Poziom noAuthNoPriv
snmpget -v3 -u test -l noAuthNoPriv \
  localhost .1.3.6.1.2.1.1.1.0
-l określa poziom bezpieczeństwa: noAuthNoPriv, authNoPriv, authPriv.

Testowanie SNMPv3 wymaga podania parametrów: -u (user), -l (security level), -a (auth protocol), -A (auth password), -x (priv protocol), -X (priv password). authPriv z SHA i jest zalecany dla sieci produkcyjnych.

Poziom noAuthNoPriv odpowiada v2c pod względem bezpieczeństwa – używać tylko do testów. authNoPriv zapewnia uwierzytelnianie bez szyfrowania.

W praktyce do codziennego monitorowania wystarczy authPriv z silnymi hasłami.

41/48 Konfiguracja SNMPv3 – RouterOS (MikroTik)
# Włączenie SNMP
/snmp set enabled=yes contact="admin@firma.pl" \
  location="Serwerownia"

# dodanie użytkownika SNMPv3 – security=private (authPriv)
/snmp community add name=admin \
  security=private \
  authentication-protocol=SHA authentication-password="HasloAuth" \
  encryption-protocol=AES encryption-password="HasloPriv" \
  read-access=yes write-access=no

Konfiguracja SNMPv3 na routerze MikroTik (RouterOS):

Konfiguracja przez interfejs CLI lub WinBox.

MikroTik RouterOS wspiera SNMPv3 z uwierzytelnianiem (SHA/MD5) i szyfrowaniem (/DES).

SNMPv3 w RouterOS konfiguruje się w podmenu /snmp community, gdzie definiuje się nazwę, protokoły uwierzytelniania i szyfrowania oraz poziom bezpieczeństwa (none, authorized, private).

SNMP na MikroTiku umożliwia monitorowanie interfejsów, obciążenia CPU, użycia pamięci i wielu innych parametrów przez prywatne MIB producenta.

Warto skonfigurować dostęp tylko z zaufanych IP i używać authPriv.

42/48 SNMPv3 – dobre praktyki
  • Zawsze używaj authPriv (SHA + AES)
  • Silne hasła – min. 12 znaków, różne dla auth i priv
  • Ograniczenie IP – tylko zaufane adresy/strefy zarządzania
  • Firewall – blokuj UDP 161/162 z zewnątrz
  • Read-only gdzie możliwe – RW tylko gdy konieczne
  • Widoki MIB – ograniczaj dostęp do niezbędnych gałęzi
  • Audyt – regularnie przeglądaj logi SNMP
  • Aktualizacje – utrzymuj Net-SNMP w aktualnej wersji

Praktyki bezpiecznego stosowania SNMPv3:

Aktualizuj oprogramowanie SNMP do najnowszej wersji.

Stosowanie SNMPv3 z authPriv (SHA+AES) to podstawa bezpieczeństwa monitorowania.

Hasła powinny mieć minimum 12 znaków i być różne dla uwierzytelniania i szyfrowania.

Należy ograniczyć źródłowe adresy IP do sieci zarządzania i blokować porty SNMP na firewallu.

Zasadę najmniejszych uprawnień stosuj zarówno do dostępu RW (tylko gdy konieczne), jak i do widoków MIB (udostępniaj tylko niezbędne gałęzie).

Regularnie audytuj logi SNMP pod kątem nieudanych prób dostępu.

43/48 Połączenie SNMP z systemami monitoringu
SystemTypZastosowanie SNMP
Nagios / IcingaAgentowy i bezagentowySprawdzanie statusu urządzeń, trapy
ZabbixBezagentowyPobieranie danych przez SNMP, niskopoziomowe odkrywanie (LLd)
CactiSNMP + RRdtoolWykresy wykorzystania łącza, trendów
LibreNMS / ObserviumAuto-discovery SNMPAutomatyczne wykrywanie urządzeń i wykresy
PRTGBezagentowySensory SNMP, mapy sieci

SNMP jest podstawą wielu systemów monitorujących:

Większość systemów wspiera SNMPv3 z authPriv.

Systemy monitorujące w dużym stopniu opierają się na SNMP do zbierania danych.

Zabbix wykorzystuje SNMP do pobierania danych i niskopoziomowego odkrywania urządzeń (LLd).

LibreNMS automatycznie wykrywa urządzenia przez SNMP i generuje wykresy.

Cacti używa SNMP z RRdtool do tworzenia historycznych wykresów.

Integracja SNMP z systemami monitorującymi pozwala na scentralizowane zarządzanie alertami, wizualizację trendów i automatyczne reagowanie na zdarzenia.

Większość nowoczesnych systemów wspiera SNMPv3 z authPriv, co zapewnia bezpieczną komunikację.

44/48 Praktyczny przykład – monitoring routera

Obciążenie CPU (MikroTik MIB):

snmpwalk -v2c -c public 192.168.88.1 .1.3.6.1.4.1.14988.1.1

Ruch na interfejsie ether1:

# Odebrane oktety
snmpget -v2c -c public 192.168.88.1 ifInOctets.1
# Wysłane oktety
snmpget -v2c -c public 192.168.88.1 ifOutOctets.1

Uptime i nazwa systemu:

snmpget -v2c -c public 192.168.88.1 sysUpTime.0
snmpget -v2c -c public 192.168.88.1 sysName.0

Skrypt monitorujący w bashu:

#!/bin/bash
RX=$(snmpget -v2c -c public $1 ifInOctets.2 2>/dev/null)
echo "RX: $RX"

Monitorowanie routera MikroTik przez SNMP:

Praktyczny monitoring routera przez SNMP pozwala na bieżąco śledzić kluczowe parametry bez logowania się do urządzenia.

Obciążenie CPU MikroTika jest dostępne przez prywatne MIB producenta.

Ruch na interfejsach monitoruje się przez standardowe ifInOctets/ifOutOctets.

Skrypty bashowe z snmpget mogą zbierać dane do plików lub przekazywać je do systemów monitorujących.

W środowisku produkcyjnym używa się dedykowanych systemów jak Zabbix, które automatyzują zbieranie i wizualizację danych SNMP z wielu urządzeń.

45/48 Podsumowanie bloków I–VI

Blok I – Wprowadzenie

  • SNMP rozwiązuje problem skalowalnego monitorowania
  • Architektura manager–agent, MIB, OID
  • Wersje: v1 (przestarzała), v2c (GetBulk), v3 (auth+encrypt)

Blok II – MIB i OID

  • Hierarchiczne drzewo MIB (ISO→ORG→DoD→INTERNET)
  • MIB-2: system, interfaces, ip, tcp, udp, snmp
  • Private MIB producentów (Cisco, MikroTik)

Blok III – Instalacja

  • apt install snmpd snmp snmptrapd
  • Konfiguracja: rocommunity, agentAddress, rozszerzenia

Blok IV – Narzędzia

  • snmpget, snmpwalk, snmptable, snmpset, snmpbulkwalk
  • snmptrap/snmptrapd, snmpstatus, snmpdelta, snmpdf

Blok V – SNMPv3

  • USM + VACM, authPriv (SHA+AES)
  • net-snmp-config --create-snmpv3-user

Blok VI – Monitoring

  • Integracja z Zabbix, Nagios, LibreNMS
  • Praktyczny monitoring routera przez SNMP

Każdy blok stanowi zamkniętą całość.

Szczególny nacisk położono na bezpieczeństwo i SNMPv3.

Prezentacja obejmuje sześć bloków tematycznych prowadzących od podstaw teoretycznych SNMP przez strukturę MIB i OID, instalację na Debianie, praktyczne użycie narzędzi, bezpieczeństwo SNMPv3, aż po integrację z systemami monitorującymi.

Materiał został zaprojektowany tak, aby student stopniowo budował wiedzę – od zrozumienia problemu zarządzania siecią, przez poznanie architektury SNMP, aż po praktyczne umiejętności konfiguracji i monitorowania.

46/48 Pytania kontrolne
  1. Jakie są trzy główne wersje SNMP i czym się różnią? (v1, v2c, v3 – community vs USM/VACM)
  2. Jakie operacje SNMP znasz i do czego służy GETBULK? (GET, GETNEXT, GETBULK, SET, TRAP, INFORM)
  3. Co to jest OID i MIB? Podaj przykład. (.1.3.6.1.2.1.1.1.0 = sysdescr)
  4. Jak zainstalować i skonfigurować SNMP na Debianie? (apt, snmpd.conf, rocommunity)
  5. Wymień 5 narzędzi SNMP i ich zastosowania. (snmpget, snmpwalk, snmpset, snmptrap, snmpdf)
  6. Jakie poziomy bezpieczeństwa oferuje SNMPv3? (noAuthNoPriv, authNoPriv, authPriv)
  7. Jak zintegrować SNMP z systemem monitorującym? (Zabbix, Nagios, LibreNMS)
  8. Czym różni się GETBULK od GETNEXT? (wiele wartości vs jedna iteracja)

Pytania kontrolne sprawdzają znajomość kluczowych zagadnień omówionych w prezentacji.

Obejmują wersje protokołu, operacje SNMP, strukturę MIB/OID, instalację na Debianie, narzędzia konsolowe, bezpieczeństwo SNMPv3 i integrację z monitoringiem.

Znajomość odpowiedzi na te pytania potwierdza opanowanie materiału na poziomie wymaganym od administratora sieci.

Zachęca się do samodzielnego eksperymentowania z narzędziami SNMP w laboratorium w celu ugruntowania wiedzy praktycznej.

47/48 Najważniejsze wnioski
  1. SNMP jest standardem w monitorowaniu urządzeń sieciowych – wspierany przez wszystkich producentów
  2. MIB i OID to fundament SNMP – znajomość drzewa MIB jest kluczowa
  3. Debian oferuje kompletną implementację Net-SNMP z snmpd i narzędziami
  4. Narzędzia CLI (snmpget, snmpwalk, snmpset) są niezbędne w codziennej pracy
  5. SNMPv3 z authPriv (SHA+AES) to standard bezpieczeństwa w sieciach produkcyjnych
  6. GETBULK znacząco przyspiesza pobieranie danych w porównaniu z GETNEXT
  7. Systemy monitorujące (Zabbix, Nagios, LibreNMS) w dużym stopniu opierają się na SNMP
  8. Praktyczne umiejętności konfiguracji i diagnostyki SNMP są niezbędne dla administratora

Prezentacja pokazała, że SNMP jest nieodzownym narzędziem w pracy administratora sieci, umożliwiającym automatyzację monitorowania i szybkie wykrywanie awarii.

Znajomość struktury MIB i OID pozwala na precyzyjne pozyskiwanie potrzebnych danych z dowolnego urządzenia sieciowego.

Instalacja i konfiguracja SNMP na Debianie jest prosta, ale wymaga zrozumienia mechanizmów bezpieczeństwa.

SNMPv3 z authPriv powinien być standardem w każdej sieci produkcyjnej.

Systemy monitorujące integrujące SNMP dostarczają kompleksowego obrazu stanu infrastruktury IT.

48/48 Koniec prezentacji

Kluczowe umiejętności:

  • Instalacja i konfiguracja Net-SNMP na Debianie
  • Używanie narzędzi CLI (snmpget, snmpwalk, snmpset, snmptrap)
  • Konfiguracja SNMPv3 z uwierzytelnianiem SHA i szyfrowaniem AES
  • Znajomość struktury MIB i OID do pozyskiwania danych
  • Integracja SNMP z systemami monitorującymi
Prezentacja zawiera 48 slajdów. Użyj menu "Skocz do" u góry.

SNMP (Simple Network Management Protocol) – protokół niezbędny do zarządzania i monitorowania sieci komputerowych.

Dziękuję za uwagę.

SNMP pozostaje kluczowym protokołem w nowoczesnych sieciach komputerowych, umożliwiającym scentralizowane zarządzanie i monitorowanie urządzeń różnych producentów.

Mimo upływu lat i pojawienia się nowszych technologii, takich jak NETCONF czy gRPC, SNMP wciąż jest powszechnie stosowany ze względu na swoją uniwersalność i dojrzałość.

Zachęcam do samodzielnego eksperymentowania z narzędziami SNMP w środowisku laboratoryjnym oraz do zgłębiania dokumentacji Net-SNMP i OSI.

Praktyczne doświadczenie jest najlepszym sposobem na zrozumienie działania protokołu i nabycie umiejętności niezbędnych w pracy administratora sieci.