Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Poprzednia wersja Nowa wersja | Poprzednia wersja | ||
zsk:snmp [2017/10/07 15:18] jkonczak |
zsk:snmp [2017/10/08 17:14] (aktualna) jkonczak |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
- | ====== SNMP ====== | + | ====== Simple Network Management Protocol ====== |
===== Historia SNMP ===== | ===== Historia SNMP ===== | ||
http://www.cs.put.poznan.pl/ddwornikowski/sieci/pizsk/snmp3.html | 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: | ||
+ | * get (pobierz) - pobiera wskazany OID | ||
+ | * getnext (pobierz następny) - pobiera kolejny obiekt po podanym OID - ta opcja pozwala "przejść" przez wszystkie dostępne obiekty bez wiedzy jakie są dostępne. | ||
+ | * getbulk (od SNMPv2) - optymalizacja powyższego | ||
+ | * set (ustaw) | ||
+ | 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 ===== | ===== MIB i OID ===== | ||
- | Protokół SNMP definiuje //jak// przesyłać dane. Bazy MIB określają //co oznaczają// dane. \\ | + | 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 \\ | http://www.cs.put.poznan.pl/ddwornikowski/sieci/pizsk/snmp3.html \\ | ||
https://tools.ietf.org/html/rfc1155 | https://tools.ietf.org/html/rfc1155 | ||
//Zadanie 1.// Przejrzyj przykładowe bazy MIB: \\ | //Zadanie 1.// Przejrzyj przykładowe bazy MIB: \\ | ||
- | ''less /usr/share/snmp/mibs/IP-MIB.txt'' \\ | + | ''less /usr/share/snmp/mibs/RFC1155-SMI.txt'' \\ |
- | https://tools.ietf.org/html/rfc1156#section-5 | + | 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 2.// Przejrzyj bazy MIB używając dedykowanych narzędzi | ||
- | * http://ireasoning.com/mibbrowser.shtml [ [[http://www.ireasoning.com/download/mibfree/mibbrowser.zip|link do pobrania]] ] | + | * http://ireasoning.com/mibbrowser.shtml [ [[http://www.ireasoning.com/download/mibfree/mibbrowser.zip|link do pobrania]] ], w wersji darmowej ograniczenia na ilość załadowanych plików MIB |
- | * Program ''tkmib'' (część net-snmp) | + | * Program ''tkmib'' (część net-snmp, przerywa walk na nieznanych OID) |
+ | * Program [[ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/jimfunk/openSUSE_Factory/x86_64/mbrowse-0.4.3-1.39.x86_64.rpm|mbrowse]] (nie wyświetla tabel) | ||
//Zadanie 3.// Znajdź jaki numeryczny OID ma ''SNMPv2-MIB::sysName.0'' i co znajduje się pod ''.1.3.6.1.2.1.5.8'' | //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. | + | 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 ===== | ===== SNMP i bezpieczeństwo ===== | ||
Wersja 1 i 2c //nie// posiada żadnego mechanizmu poza wysyłaną otwartym tekstem nazwą **community**. | Wersja 1 i 2c //nie// posiada żadnego mechanizmu poza wysyłaną otwartym tekstem nazwą **community**. | ||
- | Pozwala na definiowanie community z uprawieniami tylko do odczytu lub do odczytu i zapisu. | + | 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). | Wersja 3 wprowadza zabezpieczenia: szyfrowanie (symetryczne) i/lub autoryzację (priv / auth / authpriv). | ||
Linia 31: | Linia 50: | ||
===== NET-SNMP - narzędzia ===== | ===== NET-SNMP - narzędzia ===== | ||
- | Pakiet NET-SNMP to najpopularniejszy zestaw demonów i narzędzi SNMP. | + | Pakiet NET-SNMP to najpopularniejszy zestaw demonów i narzędzi SNMP na Linuksa. |
- | Do dostępu do serwera snmp, NET-SNMP zawiera komendy: | + | Do dostępu do serwera SNMP, NET-SNMP zawiera komendy: |
* ''snmpget'' - pobranie pojedynczej wartości o podanym OID | * ''snmpget'' - pobranie pojedynczej wartości o podanym OID | ||
* ''snmpgetnext'' - pobranie następnej wartości po podanym OID | * ''snmpgetnext'' - pobranie następnej wartości po podanym OID | ||
* ''snmpset'' - ustawienie wartości | * ''snmpset'' - ustawienie wartości | ||
* ''snmpwalk'' - przejście całego (pod)drzewa | * ''snmpwalk'' - przejście całego (pod)drzewa | ||
- | * ''snmptable'' - wyświetlenie tablicy | + | * ''snmpbulkwalk'' - efektywniejszy walk; działa od SNMPv2 |
- | I wspomniany wcześniej graficzny ''tkmib'' | + | * ''snmptable'' - wyświetlenie tabel |
+ | I wspomniany wcześniej graficzny ''tkmib'' \\ | ||
+ | Dodatkowo dostępne jest też ''snmptranslate'' które tłumaczy OIDy. | ||
- | ===== Przeglądanie ===== | + | ===== Odpytywanie agentów ===== |
Dla wersji 2c protokołu SNMP przykładowe polecenie to: \\ | Dla wersji 2c protokołu SNMP przykładowe polecenie to: \\ | ||
Linia 54: | Linia 75: | ||
* znajdź i wyświetl jako tabelę listę adresów IP | * znajdź i wyświetl jako tabelę listę adresów IP | ||
* przejdź całe drzewo, zwróć uwagę na nieznane wartości z poddrzewa ''.1.3.6.1.4.1.14988'' | * przejdź całe drzewo, zwróć uwagę na nieznane wartości z poddrzewa ''.1.3.6.1.4.1.14988'' | ||
- | + | * załaduj brakującą MIB: http://download2.mikrotik.com/Mikrotik.mib | |
- | http://download2.mikrotik.com/Mikrotik.mib | + | |
===== NET-SNMP - demon SNMPD ===== | ===== NET-SNMP - demon SNMPD ===== | ||
NET-SNMP zawiera demona (agenta) SNMP. \\ | NET-SNMP zawiera demona (agenta) SNMP. \\ | ||
- | Konfiguracja znajduje się w** ''/etc/snmp/snmpd.conf'' ** | + | Konfiguracja znajduje się w** ''/etc/snmp/snmpd.conf'' ** \\ |
Strona ''man snmpd.conf'' zawiera szczegółowy opis składni tego pliku. | Strona ''man snmpd.conf'' zawiera szczegółowy opis składni tego pliku. | ||
Linia 66: | Linia 86: | ||
</code> Następnie uruchom demona snmpd poleceniem: ''systemctl start snmpd'' i odpytaj go lokalnie. | </code> Następnie uruchom demona snmpd poleceniem: ''systemctl start snmpd'' i odpytaj go lokalnie. | ||
- | Ponowne załadowanie konfiguracji snmpd: ''systemctl reload snmpd'' | + | Ponowne załadowanie konfiguracji snmpd: ''systemctl reload snmpd'' \\ |
- | Ponowne uruchomienie snmpd: ''systemctl restart 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'' | + | __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 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. | ||
Linia 90: | Linia 110: | ||
//Zadanie 9.// Dodaj generowanie przykładowych powiadomień rozszerzając plik ''/etc/snmp/snmpd.conf'' o: | //Zadanie 9.// Dodaj generowanie przykładowych powiadomień rozszerzając plik ''/etc/snmp/snmpd.conf'' o: | ||
<code> | <code> | ||
+ | agentSecName myUser | ||
+ | |||
trapcommunity public | trapcommunity public | ||
trap2sink 127.0.0.1 | trap2sink 127.0.0.1 | ||
Linia 97: | Linia 119: | ||
monitor -r 1s pingi != IP-MIB::icmpInMsgs | monitor -r 1s pingi != IP-MIB::icmpInMsgs | ||
</code> | </code> | ||
+ | |||
+ | 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.\\ | Do odbierania powiadomień można użyć demona ''snmptrapd'' dostarczanego z NET-SNMP.\\ | ||
Linia 102: | Linia 126: | ||
Dokumentacja w podręczniku systemowym: ''man 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 +'' | + | //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 +'' |
<code> | <code> | ||
disableAuthorization yes | disableAuthorization yes | ||
Linia 124: | Linia 148: | ||
===== CISCO ===== | ===== CISCO ===== | ||
- | MIBy: ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz \\ | + | MIBy urządzeń CISCO znajdziesz na: ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz \\ |
- | Przykładowe polecenie wczytujące MIBy z katalogu: ''MIBDIRS=`pwd`:/usr/share/snmp/mibs tkmib'' \\ | + | 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. \\ |
- | Polecenia konfiguracyjne: https://www.cisco.com/c/en/us/td/docs/ios/12_2/configfun/configuration/guide/ffun_c/fcf014.html | + | Przykładowe polecenie wczytujące MIBy z bieżącego katalogu w tkmib: ''MIBDIRS=`pwd`:/usr/share/snmp/mibs tkmib'' \\ |
- | //Zadanie 13.// Wykonaj najprostsza (niezabezpieczona) konfigurację routera i przejrzyj wyniki: | + | Opis poleceń konfiguracyjnych SNMP na CISCO znajduje się [[https://www.cisco.com/c/en/us/td/docs/ios/12_2/configfun/configuration/guide/ffun_c/fcf014.html|tutaj]]. |
+ | |||
+ | //Zadanie 13.// Wykonaj najprostszą (niezabezpieczona) konfigurację routera CISCO i zobacz co można podejrzeć przez SNMP: | ||
<code> | <code> | ||
enable | enable | ||
Linia 139: | Linia 165: | ||
</code> | </code> | ||
- | //Zadanie 14.// Dodaj generację powiadomień (i je wygeneruj i odbierz): | + | //Zadanie 14.// Włącz wybrany interfejs na routerze CISCO przez SNMP |
+ | |||
+ | //Zadanie 15.// Dodaj generację powiadomień, wygeneruj i odbierz przykładowe powiadomienie: | ||
<code> | <code> | ||
snmp-server host <docelowy IP> traps version 2c public | snmp-server host <docelowy IP> traps version 2c public | ||
Linia 145: | Linia 173: | ||
</code> | </code> | ||
- | //Zadanie 15.// Dodaj użytkownika (SNMPv3) dostosowujący przykładowe polecenia: | + | //Zadanie 16.// Dodaj użytkownika (SNMPv3) dostosowujący przykładowe polecenia: |
<code> | <code> | ||
snmp-server group someGroup v3 priv | snmp-server group someGroup v3 priv | ||
snmp-server user myUser someGroup v3 auth md5 12345678 priv des56 12345678 | snmp-server user myUser someGroup v3 auth md5 12345678 priv des56 12345678 | ||
</code> | </code> | ||
- | I przykładowe zapytanie: \\ | + | Sprawdź działanie konfiguracji. Możesz skorzystać z przykładowego zapytania: \\ |
- | ''snmpwalk -v3 -u myUser -A 12345678 -a md5 -X 12345678 -x DES -l authpriv <IP> system'' | + | ''snmpbulkwalk -v3 -u myUser -A 12345678 -a md5 -X 12345678 -x DES -l authpriv <IP> system'' |
===== Mikrotik ===== | ===== Mikrotik ===== | ||
- | //Zadanie 16.//Odpytując 150.254.32.65, znajdź: | + | //Zadanie 17.// Odpytując 150.254.32.65, znajdź: |
* mapowania IP-MAC serwera DHCP | * mapowania IP-MAC serwera DHCP | ||
* statystyki interfejsów | * statystyki interfejsów | ||
Linia 161: | Linia 189: | ||
* wyświetl licznik ruchu przez interfejs który jest bramą domyślną | * wyświetl licznik ruchu przez interfejs który jest bramą domyślną | ||
- | //Zadanie 17.// Skonfiguruj SNMP na Mikrotiku (dostęp i powiadomienia). | + | //Zadanie 18.// Skonfiguruj SNMP na Mikrotiku (dostęp i powiadomienia). |
- | + | ||