SNMP – cheat sheet administratora

Simple Network Management Protocol · protokoły, komendy, OID-y, bezpieczeństwo, narzędzia

Spis treści

  • Co to jest SNMP?
  • Wersje v1/v2c/v3
  • ArchitekturaOID i MIB
  • Komendy CLI
  • TypyPDU
  • Porty i firewall
  • Bezpieczeństwo
  • Pułapki Trap
  • Narzędzia

Co to jest SNMP?

SNMP (Simple Network Management Protocol) to protokół warstwy aplikacji (UDP) służący do monitorowania i zarządzania urządzeniami sieciowymi – routerami, przełącznikami, drukarkami, serwerami, UPS-ami i każdym innym urządzeniem obsługującym agenta SNMP.

Bezpłatne warsztaty: Kali Linux od podstaw - fundament pracy pentestera

Naucz się instalacji i konfiguracji Kali Linux, pracy w terminalu, zarządzania uprawnieniami, budowy własnego laboratorium pentestowego oraz korzystania z narzędzi używanych przez specjalistów cyberbezpieczeństwa.

Odbierz dostęp do 13 maja do 23:59

Sprawdź szczegóły: https://asdevops.pl/warsztaty/

 

 

Działa w modelu manager–agent: manager odpytuje agentów, agenci odpowiadają danymi lub wysyłają asynchroniczne powiadomienia (trapy).

NMS / Manager

→ GET/SET →

Agent SNMP

MIB / OID

← Trap ←

Zdarzenie


Wersje protokołu

SNMPv1 SNMPv2c SNMPv3 zalecana

Cechav1v2cv3
Rok198819962004
Uwierzytelnieniecommunity stringcommunity stringHMAC-MD5/SHA
SzyfrowaniebrakbrakDES/AES
GetBulknietaktak
Bezpieczeństwosłabesłabesilne
Użycie produkcyjnelegacywewnętrzna siećzalecana

W v1 i v2c community string przesyłany jest plaintext – każdy w sieci może go przechwycić. Zawsze używaj SNMPv3 na styku z siecią zewnętrzną i tam, gdzie to możliwe.


OID i MIB – kluczowe pojęcia

MIB (Management Information Base)

Baza danych opisująca dostępne zmienne urządzenia. Pliki .mib definiują nazwy, typy i OID-y. Przykład: RFC1213-MIB, IF-MIB, HOST-RESOURCES-MIB.

OID (Object Identifier)

Unikalny identyfikator zmiennej w drzewie OID. Przykład: 1.3.6.1.2.1.1.1.0 = sysDescr. Każdy węzeł drzewa to liczba oddzielona kropką.

Najważniejsze OID-y (MIB-II)

1.3.6.1.2.1.1.1.0sysDescr – opis systemu

1.3.6.1.2.1.1.3.0sysUpTime – czas pracy (w setnych sekundy)

1.3.6.1.2.1.1.5.0sysName – nazwa hosta

1.3.6.1.2.1.1.6.0sysLocation – lokalizacja urządzenia

1.3.6.1.2.1.2.2.1.2ifDescr – opis interfejsu sieciowego

1.3.6.1.2.1.2.2.1.10ifInOctets – bajty wejściowe na interfejsie

1.3.6.1.2.1.2.2.1.16ifOutOctets – bajty wyjściowe na interfejsie

1.3.6.1.2.1.25.3.3.1.2hrProcessorLoad – obciążenie CPU (%)

1.3.6.1.4.1.*enterprises – OID-y producenta (Cisco, HP, Dell…)


Typy PDU (Protocol Data Unit)

PDUKierunekOpis
GetRequestManager → AgentPobierz wartość konkretnego OID
GetNextRequestManager → AgentPobierz kolejny OID (walker)
GetBulkRequestManager → AgentPobierz wiele OID-ów naraz (v2c/v3)
SetRequestManager → AgentUstaw wartość OID (wymaga zapisu)
ResponseAgent → ManagerOdpowiedź na Get/Set
TrapAgent → ManagerAsynchroniczne powiadomienie (v1)
InformRequestAgent → ManagerTrap z potwierdzeniem (v2c/v3)

Komendy CLI – snmptools (Linux)

Pakiet net-snmp / snmp-utils (Debian/Ubuntu: apt install snmp snmpd)

snmpget – pobierz jeden OID

v2c – pobierz sysDescr

snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.1.1.0

v3 – authPriv (SHA + AES)

snmpget -v3 -l authPriv -u admin \
  -a SHA -A "hasloAuth123" \
  -x AES -X "hasloPriv123" \
  192.168.1.1 sysName.0

snmpwalk – przejdź całe drzewo OID

Walk po całym MIB-II

snmpwalk -v2c -c public 192.168.1.1 1.3.6.1.2.1

Walk po interfejsach

snmpwalk -v2c -c public 192.168.1.1 IF-MIB::ifDescr

snmpbulkwalk – szybki bulk walk (v2c/v3)

snmpbulkwalk -v2c -c public -Cn0 -Cr10 192.168.1.1 ifTable

snmpset – zmień wartość

Ustaw sysLocation (string)

snmpset -v2c -c private 192.168.1.1 \
  sysLocation.0 s "Serwerownia A, rack 3"

snmptrap – wyślij trap ręcznie

snmptrap -v2c -c public manager_ip '' \
  1.3.6.1.6.3.1.1.5.4 \
  1.3.6.1.2.1.2.2.1.1.1 i 1

Przydatne flagi snmp

FlagaZnaczenie
-v1 / -v2c / -v3Wersja protokołu
-c <community>Community string (v1/v2c)
-u <user>Użytkownik SNMPv3
-l noAuthNoPriv|authNoPriv|authPrivPoziom bezpieczeństwa v3
-a MD5|SHA|SHA-256Algorytm uwierzytelnienia
-x DES|AES|AES-256Algorytm szyfrowania
-O nWyświetl OID numerycznie
-O sWyświetl OID jako string (nazwa)
-t <s>Timeout (sekundy)
-r <n>Liczba prób (retries)

Porty i firewall

PortProtokółKierunekZastosowanie
161/UDPUDPManager → AgentGet/Set (zapytania)
162/UDPUDPAgent → ManagerTrap / Inform
10161/UDPUDPManager → AgentSNMP over DTLS (v3 TLS)
10162/UDPUDPAgent → ManagerTrap over DTLS

iptables – zezwól na SNMP tylko z konkretnego IP

iptables -A INPUT -p udp --dport 161 -s 10.0.0.5 -j ACCEPT
iptables -A INPUT -p udp --dport 161 -j DROP

Bezpieczeństwo SNMP – best practices

Unikaj

  • Community string public / private
  • SNMPv1 i v2c w publicznych sieciach
  • Otwarty port 161 na firewallu
  • Dostęp zapisu (rw) bez konieczności
  • Brak logowania zapytań SNMP

Stosuj

  • SNMPv3 z authPriv (SHA + AES)
  • ACL ograniczające dostęp po IP
  • Osobnych userów dla ro/rw
  • Mocne hasła auth i priv (>12 znaków)
  • Rotację haseł i audyt użytkowników

Konfiguracja SNMPv3 w snmpd.conf

/etc/snmp/snmpd.conf – podstawowy SNMPv3

createUser monUser SHA "haslAuth#2025" AES "haslPriv#2025"
rouser monUser authPriv
agentAddress udp:161
com2sec none default public   # wyłącz v2c

Pułapki SNMP (Traps) – najważniejsze OID-y

Trap OIDNazwaKiedy wysyłany
1.3.6.1.6.3.1.1.5.1coldStartUrządzenie uruchomiono od zera
1.3.6.1.6.3.1.1.5.2warmStartUrządzenie zrestartowano (agent żyje)
1.3.6.1.6.3.1.1.5.3linkDownInterfejs sieciowy stracił połączenie
1.3.6.1.6.3.1.1.5.4linkUpInterfejs sieciowy odzyskał połączenie
1.3.6.1.6.3.1.1.5.5authenticationFailureBłędne community / auth
1.3.6.1.2.1.11.5snmpInBadVersionsNieobsługiwana wersja SNMP

Nasłuchuj trapów lokalnie

snmptrapd -f -Lo -c /etc/snmp/snmptrapd.conf

snmptrapd to demon nasłuchujący na trapy SNMP – czeka na port 162/UDP i odbiera asynchroniczne powiadomienia od urządzeń sieciowych.

Rozbicie na flagi

FlagaCo robi
-fNie idź w tło (foreground) – zostań w terminalu, widać logi na żywo
-LoLoguj na standardowe wyjście (stdout) – czyli wprost do terminala
-c /etc/snmp/snmptrapd.confUżyj tego pliku konfiguracyjnego

Jak to działa w praktyce?

[pfSense / switch / router]
        |
        |  linkDown trap (UDP 162)
        ↓
[Twój Linux – snmptrapd nasłuchuje]
        |
        ↓
wypisuje w terminalu co odebrał

Gdy np. interfejs na pfSense padnie – pfSense wyśle trap, a Ty zobaczysz go natychmiast w terminalu.


Przykładowy output w terminalu

2025-04-10 14:32:11 192.168.1.1 [UDP: [192.168.1.1]:50412]:
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (12345) 0:02:03.45
SNMPv2-MIB::snmpTrapOID.0 = OID: IF-MIB::linkDown
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifDescr.2 = STRING: em1

Znaczy: interfejs em1 na 192.168.1.1 właśnie stracił połączenie.


Do czego to przydatne?

  • Debugowanie – czy pfSense w ogóle wysyła trapy
  • Testy przed Zabbix – zanim skonfigurujesz odbieranie trapów w Zabbix, sprawdzasz czy trapy w ogóle docierają
  • Szybka diagnostyka – widzisz zdarzenia sieciowe w czasie rzeczywistym

Ważne

Ta komenda działa tylko jako test/diagnostyka – działa dopóki terminal jest otwarty. Do produkcji uruchamia się snmptrapd jako usługę systemową:

systemctl enable snmptrapd
systemctl start snmptrapd

Popularne narzędzia SNMP

Monitoring

  • Zabbix
  • Nagios / Icinga
  • Grafana + SNMP Exporter
  • LibreNMS
  • Checkmk

Diagnostyka CLI

  • net-snmp (snmpget, walk)
  • snmpcheck
  • snmpenum (audyt)
  • Wireshark (dekoder SNMP)
  • mib2c (generowanie kodu)

GUI / komercyjne

  • PRTG Network Monitor
  • SolarWinds NPM
  • ManageEngine OpManager
  • Paessler PRTG
  • iReasoning MIB Browser

Szybka ściąga – poziomy bezpieczeństwa SNMPv3

PoziomAuthPriv (szyfrowanie)Zastosowanie
noAuthNoPrivbrakbraktylko testy/dev
authNoPrivMD5 / SHAbrakwewnętrzna sieć
authPrivSHA / SHA-256AES / AES-256produkcja

Zabbix – New Host dla pfSense przez SNMPv3

Co najpierw zrobić w pfSense

Zanim dodasz hosta w Zabbix, musisz skonfigurować agenta SNMP w pfSense:

  1. Services → SNMP
  2. Zaznacz Enable
  3. SNMP v3 → dodaj użytkownika:
    • Username: zabbix
    • Auth type: SHA
    • Auth passphrase: (to samo co w Zabbix)
    • Priv type: AES
    • Priv passphrase: (to samo co w Zabbix)
  4. Zapisz i sprawdź czy port 161 UDP nie jest blokowany przez firewall pfSense

Stwórz nowego hosta (przykładowa konfiguracja SNMPv3):

Weryfikacja po dodaniu

Sprawdź z Linux/CLI czy agent odpowiada:

snmpget -v3 -l authPriv -u zabbix \
  -a SHA -A "TwojeHasloAuth123!" \
  -x AES -X "TwojeHasloPriv123!" \
  192.168.1.30 sysName.0

Jeśli zwróci nazwę hosta – konfiguracja działa poprawnie i Zabbix zacznie zbierać dane.

Wymagania na hoście Linux

# Debian/Ubuntu
apt install snmp

# RHEL/Rocky/AlmaLinux
dnf install net-snmp-utils

Komenda testowa

snmpget -v3 -l authPriv -u zabbix \
  -a SHA -A "TwojeHasloAuth123!" \
  -x AES -X "TwojeHasloPriv123!" \
  192.168.1.30 sysName.0

Oczekiwana odpowiedź:

SNMPv2-MIB::sysName.0 = STRING: pfSense.localdomain

Jeśli nie odpowiada – co sprawdzić?

ProblemGdzie sprawdzić
Port 161 zablokowanypfSense → Firewall → Rules → LAN
SNMP nie włączonypfSense → Services → SNMP → Enable
Zły użytkownik/hasłopfSense → SNMP → Users – porównaj dane
Zły adres IPping 192.168.1.30 z tego samego hosta
Firewall na hoście Linuxiptables -L lub ufw status

FAQ (pod AI / SEO)

Jak sprawdzić SNMP na urządzeniu?

Użyj:

snmpwalk -v2c -c public IP

Jakie porty używa SNMP?

  • UDP 161 – zapytania
  • UDP 162 – trapy

Czy SNMP jest bezpieczne?

  • v1/v2c → NIE
  • v3 → TAK (szyfrowanie i autoryzacja)

Co to jest OID w SNMP?

OID to unikalny identyfikator parametru (np. CPU, uptime), zapisany jako ciąg liczb.

Podsumowanie

SNMP to nadal jeden z najważniejszych protokołów w pracy administratora. Mimo swojej prostoty:

  • pozwala monitorować niemal każde urządzenie
  • działa w praktycznie każdej infrastrukturze
  • integruje się z popularnymi systemami monitoringu

Najważniejsze zasady:

  • używaj SNMPv3
  • ogranicz dostęp do sieci
  • monitoruj kluczowe metryki

Bezpłatne warsztaty: Kali Linux od podstaw - fundament pracy pentestera

Naucz się instalacji i konfiguracji Kali Linux, pracy w terminalu, zarządzania uprawnieniami, budowy własnego laboratorium pentestowego oraz korzystania z narzędzi używanych przez specjalistów cyberbezpieczeństwa.

Odbierz dostęp do 13 maja do 23:59

Sprawdź szczegóły: https://asdevops.pl/warsztaty/

 

 

 

 

Bezpłatne szkolenie "Kali Linux od podstaw - fundament pracy pentestera"

X