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.
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
| Cecha | v1 | v2c | v3 |
|---|---|---|---|
| Rok | 1988 | 1996 | 2004 |
| Uwierzytelnienie | community string | community string | HMAC-MD5/SHA |
| Szyfrowanie | brak | brak | DES/AES |
| GetBulk | nie | tak | tak |
| Bezpieczeństwo | słabe | słabe | silne |
| Użycie produkcyjne | legacy | wewnę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)
| PDU | Kierunek | Opis |
|---|---|---|
GetRequest | Manager → Agent | Pobierz wartość konkretnego OID |
GetNextRequest | Manager → Agent | Pobierz kolejny OID (walker) |
GetBulkRequest | Manager → Agent | Pobierz wiele OID-ów naraz (v2c/v3) |
SetRequest | Manager → Agent | Ustaw wartość OID (wymaga zapisu) |
Response | Agent → Manager | Odpowiedź na Get/Set |
Trap | Agent → Manager | Asynchroniczne powiadomienie (v1) |
InformRequest | Agent → Manager | Trap 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
| Flaga | Znaczenie |
|---|---|
-v1 / -v2c / -v3 | Wersja protokołu |
-c <community> | Community string (v1/v2c) |
-u <user> | Użytkownik SNMPv3 |
-l noAuthNoPriv|authNoPriv|authPriv | Poziom bezpieczeństwa v3 |
-a MD5|SHA|SHA-256 | Algorytm uwierzytelnienia |
-x DES|AES|AES-256 | Algorytm szyfrowania |
-O n | Wyświetl OID numerycznie |
-O s | Wyświetl OID jako string (nazwa) |
-t <s> | Timeout (sekundy) |
-r <n> | Liczba prób (retries) |
Porty i firewall
| Port | Protokół | Kierunek | Zastosowanie |
|---|---|---|---|
161/UDP | UDP | Manager → Agent | Get/Set (zapytania) |
162/UDP | UDP | Agent → Manager | Trap / Inform |
10161/UDP | UDP | Manager → Agent | SNMP over DTLS (v3 TLS) |
10162/UDP | UDP | Agent → Manager | Trap 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 OID | Nazwa | Kiedy wysyłany |
|---|---|---|
1.3.6.1.6.3.1.1.5.1 | coldStart | Urządzenie uruchomiono od zera |
1.3.6.1.6.3.1.1.5.2 | warmStart | Urządzenie zrestartowano (agent żyje) |
1.3.6.1.6.3.1.1.5.3 | linkDown | Interfejs sieciowy stracił połączenie |
1.3.6.1.6.3.1.1.5.4 | linkUp | Interfejs sieciowy odzyskał połączenie |
1.3.6.1.6.3.1.1.5.5 | authenticationFailure | Błędne community / auth |
1.3.6.1.2.1.11.5 | snmpInBadVersions | Nieobsł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
| Flaga | Co robi |
|---|---|
-f | Nie idź w tło (foreground) – zostań w terminalu, widać logi na żywo |
-Lo | Loguj na standardowe wyjście (stdout) – czyli wprost do terminala |
-c /etc/snmp/snmptrapd.conf | Uż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
| Poziom | Auth | Priv (szyfrowanie) | Zastosowanie |
|---|---|---|---|
noAuthNoPriv | brak | brak | tylko testy/dev |
authNoPriv | MD5 / SHA | brak | wewnętrzna sieć |
authPriv | SHA / SHA-256 | AES / AES-256 | produkcja |
Zabbix – New Host dla pfSense przez SNMPv3
Co najpierw zrobić w pfSense
Zanim dodasz hosta w Zabbix, musisz skonfigurować agenta SNMP w pfSense:
Services → SNMP- Zaznacz Enable
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)
- Username:
- 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ć?
| Problem | Gdzie sprawdzić |
|---|---|
| Port 161 zablokowany | pfSense → Firewall → Rules → LAN |
| SNMP nie włączony | pfSense → Services → SNMP → Enable |
| Zły użytkownik/hasło | pfSense → SNMP → Users – porównaj dane |
| Zły adres IP | ping 192.168.1.30 z tego samego hosta |
| Firewall na hoście Linux | iptables -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
