Simple Network Management Protocol

Simple Network Management Protocol – rodzina protokołów sieciowych wykorzystywanych do zarządzania urządzeniami takimi jak routery, przełączniki, komputery czy centrale telefoniczne za pośrednictwem sieci IP. Do transmisji wiadomości SNMP wykorzystywany jest głównie protokół UDP: standardowo port 161 wykorzystywany jest do wysyłania i odbierania żądań, natomiast port 162 wykorzystywany jest do przechwytywania sygnałów trap od urządzeń. Możliwe jest także wykorzystanie innych protokołów do przekazywania żądań, na przykład TCP[1].

Istnieją trzy wersje protokołu:

  • SNMPv1 – pierwsza wersja, która została opublikowana w 1988 roku w dokumencie RFC 1067 ↓ (z późniejszymi zmianami w RFC 1098 ↓ oraz RFC 1157 ↓). W tej wersji protokołu bezpieczeństwo oparte jest na tak zwanych communities, które są pewnego rodzaju nieszyfrowanymi hasłami umożliwiającymi zarządzanie urządzeniem,
  • SNMPv2 – eksperymentalna wersja protokołu, określana także SNMPv2c, opisana w dokumencie RFC 1901 ↓,
  • SNMPv3 – obsługująca uwierzytelnianie oraz szyfrowaną komunikację.

Każdy komunikat dotyczy określonej zmiennej, tzw. OID (ang. Object IDentifier). Dla przykładu zmienna OID o nazwie sysUpTime (czas pracy urządzenia od ostatniego włączenia) ma postać 1.3.6.1.2.1.1.3.0, co odpowiada jej adresowi w drzewie MIB.

Funkcjonowanie

Protokół SNMP zakłada istnienie w zarządzanej sieci dwóch rodzajów urządzeń: zarządzających i zarządzanych. Urządzenie (komputer) jest zarządzającym (tzw. NMS, ang. Network Management Station), gdy jest na nim uruchomiony odpowiedni program, manager SNMP (zarządca SNMP). Urządzenie jest zarządzane, jeśli działa na nim program agent SNMP.

W procesie zarządzania używane są bazy MIB (ang. Management Information Base – baza informacji zarządzania), czyli zbiory zmiennych, które manager SNMP w zależności od uprawnień może odczytać lub zmienić. W tym celu manager SNMP kontaktuje się z agentem na danym zarządzanym urządzeniu wykorzystując jedno z dwóch wcześniej skonfigurowanych haseł:

  • hasło odczytu, tzw. public_community,
  • hasło zapisu, tzw. private_community.

Odczytanie wybranej zmiennej daje managerowi określoną informację o stanie danego elementu sieci, podczas gdy zapis do danej zmiennej pozwala mu na sterowanie zachowaniem się urządzenia w sieci.

Oprócz operacji odczytu i zapisu zmiennych w agencie przez managera istnieje również możliwość takiego skonfigurowania agenta, aby sam poinformował danego managera o zmianie swojego stanu w przypadku zajścia określonego zdarzenia. Odbywa się to przy pomocy wysyłanego przez agenta komunikatu Trap lub (od wersji drugiej protokołu SNMP) przy pomocy komunikatu Inform.

SNMP domyślnie działa na porcie 161 TCP oraz UDP.

Komunikaty Trap są domyślnie wysyłane do portu 162 TCP lub UDP.

Budowa komunikatów

Budowa komunikatów protokołu SNMP zdefiniowana jest przy pomocy notacji zwanej Abstract Syntax Notation One (oznaczanej ASN.1). Sposobem kodowania struktur danych komunikatów SNMP jest uproszczony BER.

Wady i zalety

SNMP to obecnie najpopularniejszy protokół służący do zarządzania sieciami. Swoją popularność zawdzięcza następującym zaletom:

  • Stosunkowo małe dodatkowe obciążenie sieci generowane przez sam protokół,
  • Niewielka liczba poleceń własnych obniża koszty urządzeń go obsługujących,
  • Niskie koszty wdrożenia do eksploatacji.

Główne wady SNMP:

  • Brak zapewnienia bezpieczeństwa przesyłanym danym (SNMP w wersji pierwszej i drugiej).

Rodzaje komunikatów

W wersji pierwszej protokołu dostępne są następujące komunikaty:

  • Get,
  • GetNext,
  • Set,
  • Response,
  • Trap.

W wersji drugiej, oprócz komunikatów wersji pierwszej dostępne są:

  • GetBulk,
  • Inform.

Wersja trzecia nie dodaje do protokołu nowych komunikatów.

Bezpieczeństwo

Kwestie bezpieczeństwa są największym problemem użytkowników protokołu SNMP w wersji pierwszej i drugiej. Jedyne zabezpieczenie w tym protokole, tzw. community string będący de facto hasłem, jest wysyłany poprzez sieć w postaci niezaszyfrowanej. Pozwala to na jego podsłuchanie przy użyciu programów typu sniffer.

SNMPv3 znacząco poprawia bezpieczeństwo protokołu poprzez wprowadzenie bardziej zaawansowanych metod uwierzytelniania.

Przypisy

  1. Douglas Mauro, Kevin Schmidt: Essential SNMP. O'Reilly, 2001.

Zobacz też

Linki zewnętrzne