Spis treści

Simple Network Management Protocol

Historia SNMP

http://www.cs.put.poznan.pl/ddwornikowski/sieci/pizsk/snmp3.html

Protokół SNMP

Protokół SNMP działa na protokole UDP, korzysta z dwóch standardowych portów: 161 oraz 162 (snmp i snmptrap).

Pozwala na odczytywanie i ustawianie danych pod wskazanym identyfikatorem obiektu (OID). OID to sekwencja liczb, np. 1.3.6.
W SNMP dane mogą być tylko typu 'INTEGER', 'OCTET STRING', 'NULL' lub 'OBJECT IDENTIFIER'. Można też tworzyć sekwencje złożone z danych tych typów – listy i tabele.

SNMP definiuje dwie role - agent i manager. Agent działa na zarządzanym urządzeniu i udostępniającego dane o nim po protokole SNMP.

SNMP wspiera następujące żądania kierowane do agenta snmp:

SNMP pozwala też na wysyłanie komunikatów powiadomień trap przez agenta pod ustalony w konfiguracji agenta adres. Takie potwierdzenia są wysyłane jednokrotnie bez kontroli dostarczenia.
W SNMPv2 wprowadzono komunikat inform którego działanie jest identyczne jak trap, ale po odebraniu odsyłane jest potwierdzenie odbioru.

MIB i OID

Protokół SNMP definiuje tylko jak przesyłać dane. Bazy MIB określają co oznaczają dane i jak interpretować wartości.
http://www.cs.put.poznan.pl/ddwornikowski/sieci/pizsk/snmp3.html
https://tools.ietf.org/html/rfc1155

Zadanie 1. Przejrzyj przykładowe bazy MIB:
less /usr/share/snmp/mibs/RFC1155-SMI.txt
https://tools.ietf.org/html/rfc1156#section-5
less /usr/share/snmp/mibs/IP-MIB.txt

Zadanie 2. Przejrzyj bazy MIB używając dedykowanych narzędzi

Zadanie 3. Znajdź jaki numeryczny OID ma SNMPv2-MIB::sysName.0 i co znajduje się pod .1.3.6.1.2.1.5.8

Część drzewa MIB jest ustandaryzowana. Większość producentów sprzętu tworzy własne poddrzewa w przeznaczonej do tego gałęzi SNMPv2-SMI::enterprises / .1.3.6.1.4.1 .

SNMP i bezpieczeństwo

Wersja 1 i 2c nie posiada żadnego mechanizmu poza wysyłaną otwartym tekstem nazwą community. Community pozwalają tylko na ograniczenie dostępu tylko do odczytu lub do odczytu i zapisu.

Wersja 3 wprowadza zabezpieczenia: szyfrowanie (symetryczne) i/lub autoryzację (priv / auth / authpriv). Wprowadza też możliwość ograniczania widoku – konkretny użytkownik ma dostęp tylko do wskazanych gałęzi drzewa MIB.

NET-SNMP - narzędzia

Pakiet NET-SNMP to najpopularniejszy zestaw demonów i narzędzi SNMP na Linuksa.

Do dostępu do serwera SNMP, NET-SNMP zawiera komendy:

I wspomniany wcześniej graficzny tkmib
Dodatkowo dostępne jest też snmptranslate które tłumaczy OIDy.

Odpytywanie agentów

Dla wersji 2c protokołu SNMP przykładowe polecenie to:
snmpgetnext -v 2c -c public 150.254.32.65 ip
snmpgetnext -v 2c -c public 150.254.32.65 .1.3.6

Zadanie 4. Narzędziem graficznym i konsolowym, z adresu 150.254.32.65, z community public:

NET-SNMP - demon SNMPD

NET-SNMP zawiera demona (agenta) SNMP.
Konfiguracja znajduje się w /etc/snmp/snmpd.conf
Strona man snmpd.conf zawiera szczegółowy opis składni tego pliku.

Zadanie 5. Umieść w pliku konfiguracyjnym poniższą treść:

rocommunity public 127.0.0.1

Następnie uruchom demona snmpd poleceniem: systemctl start snmpd i odpytaj go lokalnie.

Ponowne załadowanie konfiguracji snmpd: systemctl reload snmpd
Ponowne uruchomienie snmpd: systemctl restart snmpd
Uwaga Błędy w konfiguracji nie są zgłaszane na konsolę, tylko zapisywane do pliku /var/log/net-snmpd.log

Zadanie 6. Zmień konfigurację snmpd tak, by możliwy był pełen dostęp (read-write) z innych komputerów. Wyłącz koledze interfejs sieciowy wlan0.

Zadanie 7. Skonfiguruj moduł UCD tak, by przez SNMP był dostępny poziom zajętości dysków i poziom obciążenia komputera (load)
http://www.cs.put.poznan.pl/ddwornikowski/sieci/pizsk/snmp3.html#rozszerzenie-ucd

SNMP USM

Zadanie 8. Dodaj do pliku konfiguracyjnego użytkownika SNMP w wersji 3, np:

createUser myUser MD5 "doscdlugiehaslo" DES doscdlugiehaslo
rwuser myUser

Następnie odpytaj SNMP, na przyład:
snmpwalk -v3 -u myUser -a MD5 -A doscdlugiehaslo -x DES -X doscdlugiehaslo -l authPriv localhost system
Za pomocą programu wireshark porównaj wymianę informacji w SNMPv2c i SNMPv3.

trap i inform

SNMP poza aktywnym oczekiwaniem pozwala generować automatycznie powiadomienia.

Zadanie 9. Dodaj generowanie przykładowych powiadomień rozszerzając plik /etc/snmp/snmpd.conf o:

agentSecName myUser

trapcommunity public
trap2sink 127.0.0.1

linkUpDownNotifications yes
defaultMonitors yes
monitor -r 1s pingi != IP-MIB::icmpInMsgs

Zastąpienie trap2sink przez informsink spowoduje wysyłanie komunikatów inform (które są powtarzane w przypadku braku potwierdzenia odbioru).

Do odbierania powiadomień można użyć demona snmptrapd dostarczanego z NET-SNMP.
Plik konfiguracyjny tego demona to: /etc/snmp/snmptrapd.conf
Dokumentacja w podręczniku systemowym: man snmptrapd.conf

Zadanie 10. Dodaj do pliku konfiguracyjnego snmptrapd.conf poniższe ustawienia, a następnie uruchom demona poleceniem systemctl start snmptrapd i przetestuj ich działanie. Do śledzenia logów systemowych użyj journalctl -f. Uwaga: aby program xmessage miał uprawnienia aby coś wyświetlić, musisz ze zwykłego użytkownika wydać polecenie xhost +

disableAuthorization yes
traphandle default logger
#traphandle default wall
#traphandle default sh -c "DISPLAY=:0 xmessage -file -"
#traphandle IF-MIB::linkDown sh -c "DISPLAY=:0 xmessage -file -"
#traphandle IF-MIB::linkUp sh -c "DISPLAY=:0 xmessage -file -"

Zadanie 11. Wysyłaj powiadomienia na komputer kolegi.

Aby ręcznie wygenerować powiadomienie (trap lub inform), można użyć np:
snmptrap -v 2c -c public [-Ci] 127.0.0.1 0 warmStart

SNMP VACM

Zadanie 12. Pozwól na dostęp po SNMPv1 i SNMPv2c tylko do wybranego poddrzewa, korzystając z materiałów na: http://www.cs.put.poznan.pl/ddwornikowski/sieci/pizsk/snmp3.html#model-vacm
Następnie ustaw też widok wybranemu użytkownikowi.

CISCO

MIBy urządzeń CISCO znajdziesz na: ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz
Do wszytania dużej ilości plików MIB warto ustawić zmienną środowiskową MIBDIRS, np. esport MIBDIRS=<katalog_z_mib_cisco>:/usr/share/snmp/mibs, lub wyedytować plik /etc/snmp/snmp.conf.
Przykładowe polecenie wczytujące MIBy z bieżącego katalogu w tkmib: MIBDIRS=`pwd`:/usr/share/snmp/mibs tkmib

Opis poleceń konfiguracyjnych SNMP na CISCO znajduje się tutaj.

Zadanie 13. Wykonaj najprostszą (niezabezpieczona) konfigurację routera CISCO i zobacz co można podejrzeć przez SNMP:

enable 
configure terminal
snmp-server community public ro
snmp-server community private rw
interface GigabitEthernet 0/0
ip address …
no shut

Zadanie 14. Włącz wybrany interfejs na routerze CISCO przez SNMP

Zadanie 15. Dodaj generację powiadomień, wygeneruj i odbierz przykładowe powiadomienie:

snmp-server host <docelowy IP> traps version 2c public
snmp-server enable traps snmp linkup linkdown

Zadanie 16. Dodaj użytkownika (SNMPv3) dostosowujący przykładowe polecenia:

snmp-server group someGroup v3 priv
snmp-server user myUser someGroup v3 auth md5 12345678 priv des56 12345678

Sprawdź działanie konfiguracji. Możesz skorzystać z przykładowego zapytania:
snmpbulkwalk -v3 -u myUser -A 12345678 -a md5 -X 12345678 -x DES -l authpriv <IP> system

Mikrotik

Zadanie 17. Odpytując 150.254.32.65, znajdź:

Zadanie 18. Skonfiguruj SNMP na Mikrotiku (dostęp i powiadomienia).