Zarządzanie sieciami przy użyciu SNMP

Zarządzanie sieciami przy użyciu SNMP

Bezpieczna komunikacja SNMPv3

Tak jak SNMPv1, funkcje SNMPv2 nie istnieją bez specyfikacji SMI. SMI definiuje zasady opisujące zarządzanie informacjami, używając ASN.1. SNMPv2 SMI jest opisane w RFC1902. SNMPv2 oferuje wiele udogodnień w stosunku do SNMPv1, włączając dodatkowe operacje protokołu, specyfikując nowe typy danych, takie jak łańcuch bitów, adres sieciowy, liczniki. Łańcuchy bitów są definiowane wyłącznie w SNMPv2 i określają bity reprezentujące wartość. Liczniki są nieujemnymi całkowitymi liczbami, które rosną aż do osiągnięcia maksymalnej wartości, a następnie wracają do zera. W SNMPv1 jest określony 32-bitowy licznik. W SNMPv2 są zdefiniowane liczniki 32-bitowe i 64-bitowe. Warto zaznaczyć, że SNMPv1 wspiera wyłącznie 32-bitowy adres IP, natomiast SNMPv2 wspiera także inne typy adresów.

Komendy używane w SNMPv2 są dokładnie takie same jak używane w SNMPv1, ale zawierają poprawki. Komunikat Trap w SNMPv2 używa innego formatu wiadomości i został stworzony do wyparcia wersji komendy znanej z SNMPv1. SNMPv2 definiuje zupełnie nowe komendy: GetBulk i Inform. Komenda GetBulk jest używana przez NMS do efektywnego pobierania dużych bloków danych, takich jak wiele wierszy w tabeli. Komenda Inform pozwala jednemu z NMS wysłać informację Trap do innego NMS, a następnie odebrać odpowiedź. W przypadku SNMPv2, jeżeli agent nie dostarcza wartości dla wszystkich operacji, zwracane są częściowe wyniki.

SNMPv1 i SNMPv2 nie oferują praktycznie żadnej możliwości zapewnienia bezpieczeństwa przesyłanych informacji. Obie wersje nie pozwalają także na uwierzytelnienie źródła wiadomości zarządzających, nie zawierają szyfrowania. Brak uwierzytelnienia pozwala nieuprawnionym użytkownikom wykonywać funkcje zarządzające. Prawdopodobna jest także sytuacja, w której nieautoryzowany użytkownik podsłucha informacje przesyłane od zarządcy do systemu zarządzanego. Z powodu tych ograniczeń, większość implementacji SNMPv1/v2 ogranicza się wyłącznie do odczytu parametrów, redukując użyteczność protokołu do monitorowania sieci.

Trzecia wersja SNMP została opublikowana jako propozycja standardu w RFC2271-2275 w czerwcu 1998 r. Platforma SNMPv3 jest zgodna z oryginalną specyfikacją SNMPv1 oraz SNMPv2, wprowadzając dodatkowe możliwości w zakresie bezpieczeństwa i administracji. Nowe opcje w SNMPv3 odnoszą się w szczególności do następujących funkcjonalności:

  • bezpieczeństwo - zapewnienie uwierzytelnienia i prywatności, kontrola dostępu

  • platforma zarządzająca - zarządzenie użytkownikami i kluczami, zdalne konfigurowanie przez operacje SNMP

Zestaw dokumentów z roku 1998 nie definiuje kompletnego systemu SNMP, ale określa ogólną architekturę SNMP i opisuje metody zapewnienia bezpieczeństwa. Jeden z dokumentów roboczych SNMPv3 stwierdzał: "SNMPv3 to SNMPv2 z dodanymi opcjami administracji i bezpieczeństwa".

Zarządzanie sieciami przy użyciu SNMP

Architektura sieci zarządzania z wykorzystaniem protokołu SNMP

SNMPv3 zawiera trzy istotne usługi: uwierzytelnienie, poufność i kontrolę dostępu. Każda jednostka zarządzana zawiera pojedynczy silnik SNMP. Implementuje on funkcje wysyłania i odbierania wiadomości, uwierzytelniania, szyfrowania/deszyfrowania wiadomości oraz kontrolę dostępu do zarządzanych obiektów. Powyższe funkcje są dostarczone jako usługa dla jednej lub większej liczby aplikacji, które zostały skonfigurowane do pracy z silnikiem SNMP. Tego typu modularna architektura dostarcza kilku ciekawych rozwiązań. Funkcja jednostki SNMP jest określona przez zaimplementowane moduły. Agent SNMP i zarządca SNMP wymagają innych zestawów modułów. Modularna struktura pozwala na zdefiniowanie różnych wersji modułów w danej jednostce. Stwarza to możliwość definiowania alternatywnych lub dodatkowych możliwości dla różnych aspektów SNMP, bez potrzeby przechodzenia na nowszą wersję standardu.

Mechanizm uwierzytelniania w SNMPv3 zakłada, że odbierana wiadomość była wysłana przez jednostkę główną, której identyfikator pojawił się jako źródłowy w nagłówku wiadomości. Każda para głównego i zdalnego silnika SNMP, która zamierza się komunikować, musi dzielić tajny klucz uwierzytelnienia. Jednostka wysyłająca umożliwia autoryzację przez dołączenie kodu uwierzytelnienia do wysyłanej wiadomości SNMPv3. Ten kod zawiera wiadomość, tożsamość jednostki i silnika oraz tajny klucz. Tajny klucz musi zostać utworzony poza protokołem i powinien być znany tylko dla nadającego i odbierającego. Administrator sieci jest odpowiedzialny za dystrybucję kluczy, które powinny zostać załadowane do baz danych znanych zarządców i agentów SNMP. Kiedy odbierająca jednostka otrzyma wiadomość, używa tego samego klucza do obliczeń uwierzytelniającego kodu wiadomości.

SNMPv3 włącza szyfrowanie wiadomości pomiędzy zarządcami i agentami, aby zapobiec podsłuchaniu komunikacji. Gdy funkcja poufności jest włączona, cały ruch pomiędzy elementami sieci jest szyfrowany przy użyciu DES (Data Encryption Standard). Jednostka wysyłająca szyfruje wiadomości używając algorytmu DES i tajnego klucza. Jednostka odbierająca deszyfruje informacje używając algorytmu DES i tego samego klucza.

Bezpieczeństwo protokołu

W RFC1157, tak jak w RFC 1901 do 1907, które opisują SNMP2, można znaleźć tylko jedną wzmiankę dotyczącą bezpieczeństwa: "Przypadki bezpieczeństwa nie są omawiane w tym dokumencie". Podobnie jak w przypadku innych pierwotnych wersji różnych protokołów internetowych, bezpieczeństwo nie jest mocną stroną dwóch pierwszych wersji protokołu.

Jedynym zabezpieczeniem SNMPv1/v2 jest parametr określany społecznością (community). Społeczność definiuje zestaw zmiennych, do którego zarządca ma dostęp: read-only, read-write, write-only. W praktyce istnieją dwie wersje społeczności - społeczność odczytu (read-only) i społeczność zapisu (read-write). Możliwe jest zdefiniowanie innych społeczności w agencie opartym na SNMP, a następnie użycie tego parametru do ograniczenia widoczności w hierarchii MIB.

Większość agentów używa nazwy "public" jako społeczności read-only oraz "private" jak społeczności read-write. Dla twórców systemów zarządzania sieciowego to zaleta, ponieważ urządzenia i systemy z włączonym SNMP komunikują się z oprogramowaniem przy użyciu domyślnych ustawień. Pod względem bezpieczeństwa jest to jednak wada. Jeżeli nie mamy zmienionych domyślnych wartości, każdy kto ma dostęp do sieci po protokole UDP port 161 może odpytać i zmodyfikować zmienne należące do agenta SNMP. Atakujący może nawet wyłączyć sieć używając SNMP, jeżeli nazwa społeczności read-write nie zostanie zmieniona. Używając domyślnych wartości "public", atakujący może otrzymać listę interfejsów na routerze, a następnie użyć domyślnej społeczności read-write ("private"), wyłączając interfejsy. Z takiego scenariusza powinni zdawać sobie sprawę wszyscy administratorzy, którzy powinni zmieniać domyślne ustawienia społeczności w swoich sieciach.

Urządzenia sieciowe nie są jedynym celem ataków na SNMP. Systemy Unix posiadają włączonego agenta SNMP. Przykładowo w systemie Linux jest to net-snmp lub ucd-snmp. System Windows także może zawierać agenta SNMP z ustawioną domyślną społecznością read-only o nazwie "public". Luki w oprogramowaniu mogą stanowić poważne zagrożenie bezpieczeństwa systemu.

Używanie SNMP do skanowania sieci nie jest zbyt wyrafinowane. Zazwyczaj agent SNMP będzie zwracał tylko jedną zmienną w danym czasie, więc spacer po hierarchii obiektów będzie czasochłonny. Jeżeli nie posiadamy skonfigurowanego systemu wykrywania intruzów, możemy spodziewać się dużego ruchu na porcie UDP 161. Zabezpieczenie dostępu do agenta SNMP polega na zastosowaniu blokady portu UDP o numerze 161. Użyteczna sieciowa usługa niestety daje też duże możliwości napastnikowi.

SNMPv3 umożliwia stworzenie rzeczywistego bezpieczeństwa dla tego protokołu. RFC2274 opisuje mechanizm uwierzytelniania agentów, realizujący integralność danych, zabezpieczenie przed atakami odpowiedzi oraz zapewnienie poufności. Silnik SNMP wymaga konfiguracji dwóch prywatnych kluczy. Pierwszy klucz jest używany do stworzenia cyfrowego podpisu o długości 96 bitów w celu zapewnienia uwierzytelniania i integralności. Drugi jest rzeczywistym kluczem, który może być użyty do szyfrowania odpowiedzi od agenta (aktualnie używa DES w trybie Cipher Block Chaining CBC). Wadą SNMPv3 może być konieczność konfiguracji każdego agenta przed podjęciem pracy, czego nie wymaga struktura SNMPv1/v2. Jest to jednak niska cena za poczucie bezpieczeństwa.

Podsumowanie

Nowoczesne sieci danych składają się ze sprzętu, który pochodzi od wielu producentów. Administratorzy potrzebują automatycznego narzędzia, które będzie łatwe w użyciu, instalacji i nie zajmie wiele zasobów sieciowych. Przyczyniło się to do popularyzacji SNMP. Począwszy od 1988 r. i wprowadzenia możliwości zarządzania do sieci opartej na TCP/IP, SNMP staje się najczęściej używanym standardem zarządzania sieciowego. Praktycznie wszyscy producenci sprzętu sieciowego zapewniają obsługę SNMP. Zaletą protokołu jest prostota - dostarcza zestawu funkcji, które są łatwe w instalacji i użyciu. Moduły SNMP pochodzące od różnych producentów mogą pracować razem bez większego kłopotu. Agenci używani przez sieciowe urządzenia, takie jak routery czy przełączniki, raportują tysiące statystyk dotyczących prawidłowej pracy urządzeń sieciowych. Niestety, przekazują jednocześnie wiele użytecznych informacji dla atakującego. Może więc już czas na SNMPv4?


TOP 200