Протокол SNMP


Содержание

Введение
SNMP Framework
База данных управляемых элементов
Язык описания информации
Протокол
Безопасность и администрирование
Развитие SNMP
SNMPv1
SNMPv2
SNMPv3
Пример использования протокола SNMP
Заключение

Введение

Одной из проблем большинства сегодняшних сетей — быстрорастущих, больших по количеству узлов и зачастую широко раскинутых географически — является управление и получение информации о состоянии всей сети или отдельных ее участков.

Целью данной курсовой работы является изучение протокола SNMP, предназначенного для удаленного управления и сбора информации с удаленных систем. К настоящему времени данный протокол достаточно хорошо развит и используется во многих областях сетевых технологий.

SNMP Framework

Simple Network Management Protocol (SNMP) — протокол, предназначенный для сетевого управления удаленных систем. С его помощью можно управлять и получать информацию о состоянии сетевого оборудования или сетевого протокола, реализованного на удаленной системе.

SNMP является не просто протоколом для обмена управляющей информацией между объектами сети. Чаще всего под SNMP понимают Internet-Standard Management Framework или SNMP Framework, т.е. совокупность стандартов описывающих модели и средства использующиеся при сетевом управлении.

SNMP Framework состоит из нескольких частей:

  • Язык описания информации

  • База данных управляемых элементов

  • Описание протокола

  • Решение проблем безопасности и администрирования

При развитии стандарта от версии к версии, обновляется содержание этих модулей, но основные принципы строения SNMP остаются неизменны.

Причиной модульного строения было желание упростить предполагаемый в скором времени переход от протокола SNMP к протоколам ISO. По этому были созданы протоколо-независимые SMI и MIB. В результате, планы по переходу к OSI не осуществились, но модульное строение SNMP Framework все же сыграло свою роль упростив переход от SNMPv1 к SNMPv2, и от SNMPv2 к SNMPv3.

База данных управляемых элементов

Для управления тем или иным сетевым протоколом или устройством с помощью SNMP, выделяются основные объекты этого протокола или устройства, которые могут предоставлять (для чтения или для изменения) какую-либо информацию о протоколе или устройстве. Все эти объекты являются управляемыми элементами этого протокола или оборудования. Управляемые элементы рассматриваются как объекты виртуального хранилища информации, называемого Management Information Base (MIB). В MIB все эти объекты рассматриваются как переменные, содержащие информацию о представляемом ими объекте. Например, для протокола IP, существует переменная ipDefaultTTL, которая содержит значение по умолчанию для поля TTL в заголовке датаграммы протокола IP, или переменная ipInHdrErrors, предоставляющая информацию о том, какое количество ip-пакетов было отсеено по причине ошибок в их заголовке. Наборы этих переменных определяются в MIB-модулях.

Вообще, MIB имеет структуру дерева, каждый узел которого является переменной MIB. Для нужд сетевого управления сети Internet выделена отдельное поддерево, в котором могут быть определены все требуемые элементы. В одном из поддеревьев этого дерева содержатся все управляемые элементы сети Internet. Раньше вся эта ветка определялась одним MIB-модулем.

Позже, после публикации второй версии этого MIB-модуля, был принят другой подход к созданию базы управляемых элементов. До этого существовал единственный комитет, работающий над документом, описывающим Стандартный MIB для Internet. Теперь же принято разделение на группы, каждая из которых специализируется в одной из областей сетевых технологий. Небольшие MIB-модули разработанные каждой группой, составляют единый Internet MIB. Т.о. теперь поддерево сетевого управления Internet описывается не единой спецификацией, входящей в состав SNMP, а набором отдельных документов, выпускаемых отдельно от Стандартов SNMP.

Язык описания информации

Вся База Управляемых Элементов описывается с помощью упрощенного подмножества стандартного языка OSI, Abstract Syntax Notation One (ASN.1). Это подмножество описывается в документе называемом Structure of Management Information, по этому и весь язык описания информации для SNMP называется SMI. По мимо языка определения данных этот документ описывает также и древовидную структуру MIB и все стандартные поддеревья, которые должны присутствовать во всех реализациях MIB.

Протокол

Эта часть Стандартной Модели описывает протокол, посредством которого происходит обмен информацией между управляемым объектом (называемым агентом) и управляющей системой (называемой менеджером). PDU (protocol data unit) протокола SNMP содержит операцию, выполняемую протоколом и список переменных и их значений, участвующих в данной транзакции.

Во всех версиях SNMP определены следующие операции: get, get-next, get-response, set-request. Более поздние версии определяют еще несколько операций. Этот модуль также содержит рекомендации о том, какой транспортных протокол может использоваться для доставки сообщений SNMP. Все версии SNMP, используемые на сегодняшний день содержат рекомендации об использовании транспортных протоколов без установки соединения (UDP).

Безопасность и администрирование

Система сетевого управления SNMP предоставляет достаточно большие возможности для непосредственного управления удаленными системами. По средствам SNMP можно получить доступ к достаточно критическим параметрам системы. Таким образом, проблемы безопасности должны учитываться на каждом этапе проектирования SNMP. В то же время безопасность любого открытого протокола всегда является очень спорным вопросом.

В первой версии SNMP проблемы безопасности практически не учитывались. Этот недостаток SNMPv1 предполагался уже на стадии разработки, т.к. на тот момент основной задачей был скорейший выпуск стандартной модели сетевого управления, в которой нуждалось интернет-сообщество, а обсуждение спорных вопросов безопасности еще на долго затянуло бы разработку стандарта.

Именно тогда проблемы безопасности и администрирования были вынесены в отдельный блок общей модели, рассмотрение которого было оставлено на будущие версии SNMP.

Развитие SNMP

В настоящее время существует три версии SNMP Framework. В следующих трех частях будут кратко описаны изменения произошедшие в каждой версии SNMP и ссылки на документы описывающие компоненты каждой версии SNMP.

SNMPv1

Первоначальным Internet-Standard Management Framework стал SNMPv1, история его развития описана в первой части. Стандарт SNMPv1 содержится в следующих документах:

  • RFC-1155, Structure and identification of management information for TCP/IP-based internets. Определяет механизмы используемые при описании и именовании объектов предназначенных для управления.

  • RFC-1212, Concise MIB definitions. Здесь более краткое описание тех же механизмов. Полностью совместим с начальным SMI.

  • RFC-1157, Simple Network Management Protocol (SNMP). Содержит спецификацию протокола SNMP, используемого для сетевого доступа к управляемым объектам и для получения от них оповещений о произошедших событиях. В этом же документе определяется набор стандартных событий и оповещений.

  • RFC-1213, Management Information Base for Network Management of TCP/IP-based internets:MIB-II. Содержит определение (используя SMI) базового набора управляемых элементов, основной модуль MIB. Это уже вторая версия Internet MIB. Первая версия MIB, описанная в RFC-1156, на данный момент признана устаревшей (документу RFC-1156 присвоен статус Исторического).

  • RFC-1215, Convention for defining traps for use with the SNMP. Механизмы, использующиеся для описания оповещений, называемых в SNMPv1 ловушками (traps). Документ содержит также определения стандартных ловушек из RFC-1157, используя описанные механизмы.

Документ RFC-1215 входит в описание SNMP, но имеет лишь статус Информационного RFC, а не Стандарта. Вообще, механизмы описания оповещений должны находиться в спецификации SMI, но на момент разработки SMI еще предполагалась одновременная поддержка SNMP и ISO, но оповещения являются протоколо-зависимыми сущностями, по этому несколько стандартных оповещений описывалось самим протоколом SNMP, а добавление новых не предусматривалось. Документ RFC-1215 появился после решения об отмене поддержки протоколов ISO, но уже не успел стать стандартов, т.к. вызвал много споров в интернет-сообществе. Проблема оповещений была решена в SNMPv2.

Система безопасности в этой версии строилась на понятии сообществ (community). При конфигурировании агента SNMP, указывается имя сообщества, модули MIB, к которым разрешается доступ этому сообществу, и права этого сообщества (чтение/запись). Менеджер SNMP (управляющая система) при обращении к агенту указывает сообщество, к которому он принадлежит. Имя сообщества никаким образом не шифруясь передается в заголовке запроса SNMP.

SNMPv2

Вторая версия SNMP предоставляла следующие улучшения по сравнению с SNMPv1:

  • Расширенные типы данных (Например 64-битный счетчик)

  • Повышенную эффективность и производительность (введены новые операции протокола, операция get-bulk)

  • Новую систему оповещений, более продуманную и поддержанную интернет-сообществом, в отличие от спорных traps в первой версии.

  • Более полная обработка ошибок и исключений

  • Улучшенная реализация типов ``множеств''. Появилась возможность добавления и удаления строк.

  • Улучшения языка определения информации

Как и предполагалось, основной задачей SNMPv2 стало решение проблем безопасности. Главной целью было достижение так называемого ``коммерческого уровня'' (commercial grade) обеспечения безопасности, главные задачи которого:

  • Аутентификация. Возможность определения происхождения запроса, обеспечение целостности сообщения.

  • Конфиденциальность.

  • Авторизация и контроль доступа.

  • Возможности удаленной настройки и администрирования вышеприведенных пунктов.

В результате, рабочей группе SNMPv2 так и не удалось прийти к единому решению по проблемам безопасности. По этому весь SNMPv2 Framework официальным стандартом не стал. Статус стандарта получили лишь отдельные части общей модели (SMIv2, протокол).

Вскоре появилось множество разрозненных реализаций SNMPv2, каждая из которых предоставляла свое решение проблемы безопасности. Это были как открытые спецификации интернет-сообщества так и закрытые реализации различных коммерческий организаций. Наиболее успешными модификациями SNMPv2 являются:

  • SNMPv2p — Именно эта вариация изначально была опубликована как SNMPv2. Она включает в себя все вышеперечисленные улучшения SNMPv1, а для обеспечения безопасности используется party-based система безопасности. (RFC-1441, RFC-1445, RFC-1446, RFC-1448, RFC-1449)

  • SNMPv2c — Развитие SNMPv2p, кроме системы безопасности. Содержит дополнение к протоколу и типам данных, определенным ранее. Использует community string-based систему безопасности из первой версии SNMPv1. (RFC-1901, RFC-1905, RFC-1906).

  • SNMPv2u — Отличается от SNMPv2c только подсистемой безопасности. В этой модификации используется user-based подход. (RFC-1905, RFC-1906, RFC-1909, and RFC-1910)

  • SNMPv2* — сочетает в себе лучшие стороны SNMPv2p и SNMPv2u. (Эта спецификация никогда не издавалась как официальный документ RFC)

  • Существовали также SNMPv1+, SNMPv1.5, SNMP++

Наибольшую поддержку IETF получил SNMPv2c, не использующий никаких нововведений в области безопасности. Он стал наиболее распространенным и используемым в интернет-сообществе. Описание этой вариации SNMPv2 Framework содержится в следующих документах:

  • RFC-1901, Introduction to Community-based SNMPv2

  • RFC-1902, Structure of Management Information Version 2 (SMIv2)

  • RFC-1903, Textual Conventions for SMIv2, набор текстовых соглашений используемые при описании объектов в MIB.

  • RFC-1904, Conformance Statements for SMIv2, набор объектов, который должен присутствовать во всех MIB-модулях.

  • RFC-1905, Protocol Operations for Version 2 of the Simple Network Management Protocol (SNMPv2)

  • RFC-1906, Transport Mappings for Version 2 of the Simple Network Management Protocol (SNMPv2)

  • RFC-1907, Management Information Base for Version 2 of the Simple Network Management Protocol (SNMPv2)

  • RFC-1908, Coexistence between Version 1 and Version 2 of the Internet-Standard Network Management Framework, проблемы возникающие при совместным существованием двух версий SNMP в одной сети. В основном это проблемы связанные с безопасностью.

На данный момент большинство из вышеперечисленных документов заменено их более новыми версиями и издано со статусом Стандарта. Документы, представляющие SNMPv2c на сегодняшний день, приведены в таблице в заключительной части данной.

SNMPv3

Итак, проект SNMPv2 не выполнил поставленных перед ним целей. Не было разработано стандартоного средства сетевого управления, удовлетворявшего интернет-сообщество в плане безопасности. Теперь, все эти проблемы должна была решить рабочая группа SNMPv3 (SNMPv3 WG), созданная IETF. Ей предстояло разработать единый стандарт для нового поколения SNMP. Единственной критической неразрешенной проблемой оставалась система безопасности и администрирования, по этому все силы рабочей группы были брошены на разрешение этой проблемы.

В руках SNMPv3 WG имелись предыдущие разработки и результаты работ других проектов, посвященных безопасности в SNMP:

От рабочей группы SNMPv3 требовалось найти точки соприкосновения всех концепций безопасности и администрирования представленных ранее. Также в ее задачи входило:

  • соответствие требованиям широкого спектра существующих сетевых окружений, имеющих различные потребности в управлении.

  • простота перехода от предыдущих версий SNMP к использованию SNMPv3.

  • простота установки и сопровождения

Части нового стандарта, не связанные с проблемами безопасности, такие как SMI, MIB, протокол, были заимствованы из SNMPv2. Таким образом, многие документы из спецификации SNMPv2 Framework получили статус стандарта и перешли в SNMPv3 Framework.

Спецификация SNMPv3 Management Framework была разделена на множество частей, каждая из которых представлена отдельным документом. Таким образом, в любой документ могли быть внесены поправки и обновления не затрагивая при этом другие элементы Модели.

В конечном счете, все документы спецификации SNMPv3 могут быть разделены на те же категории, на которые делились документы всех предыдущих версий SNMP:

  • Язык описания информации

  • База данных управляемых элементов

  • Описание протокола

  • Решение проблем безопасности и администрирования

Первые три части взяты из SNMPv2, а последняя часть является результатом основной работы проекта SNMPv3 и других проектов, разработавших концепции безопасности SNMP.

SNMPv3 WG был представлен следующий набор документов, описывающих третью версию стандартную модель сетевого управления:

  • RFC-2578, Structure of Management Information Version 2 (SMIv2)

  • RFC-2579, Textual Conventions for SMIv2

  • RFC-2580, Conformance Statements for SMIv2

  • RFC-3411, An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks

  • RFC-3412, Message Processing and Dispatching for the Simple Network Management Protocol (SNMP)

  • RFC-3413, Simple Network Management Protocol (SNMP) Applications

  • RFC-3414, User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3)

  • RFC-3415, View-based Access Control Model (VACM) for the Simple Network Management Protocol (SNMP)

  • RFC-3416, Version 2 of the Protocol Operations for the Simple Network Management Protocol (SNMP)

  • RFC-3417, Transport Mappings for the Simple Network Management Protocol (SNMP)

  • RFC-3418, Management Information Base (MIB) for the Simple Network Management Protocol (SNMP)

Документы RFC-3414 и RFC-3415 описывают основные отличительные черты новой подсистемы безопасности: аутентификация основанная на пользователях и ограничение доступа пользователей с помощью указания областей видимости.

Пример использования протокола SNMP

Рассмотрим пример использования протокола SNMP для получения статистики об объеме входящего трафика на удаленной системе с установленным на ней SNMP агентом.

Требуемую информацию можно получить используя переменные описанные в Interfaces MIB, определенного документом RFC-2863. Таблица ifTable предоставляет информацию обо всех сетевых интерфейсах системы. Ее полное описание можно найти в RFC-2863. Мы воспользуемся двумя полями этой таблицы: ifDescr, содержащее название сетевого интерфейса и ifInOctets, содержащее количество байт, вошедших в этот интерфейс (отсчитывается с момента запуска SNMP агента).

Сначала рассмотрим теоретическую часть получения информации с удаленной системы. Как говорится в документах описывающих операции протокола SNMP (RFC-1157, RFC-3416) для получения таблицы используется запрос GetNext. Сначала GetNext вызывается для элемента MIB описывающего определенное поле таблицы (если требуется получить только одно поле), либо саму таблицу. После чего GetNext возвратит идентификатор первого элемента поля или таблицы, затем GetNext вызывается для этого идентификатора — получаем следующий элемент поля или таблицы, и так далее пока GetNext не вернет идентификатор, который не является потомком указанного в самом начале объекта MIB — таблицы или поля (см. также «База данных управляемых элементов», «Протокол»). Таким образом можно считать значения всех элементов таблицы или поля.

С практической стороны всё происходит примерно также. Для составления SNMP запросов общения приложения с удаленной системой по протоколу SNMP существуют библиотеки и модули для различных языков программирования. Наиболее популярной реализацией протокола SNMP является NetSNMP (http://www.net-snmp.org/), вместе с этим продуктом также распространяется библиотека для языка C и модуль для языка Perl.

Для реализации этого примера был написан простой скрипт на языке Perl, в котором выполнены все перечисленные в теоретической части операции.

С помощью данного скрипта с одной из машин кафедры, на которой установлен SNMP агент, iota.cs.prv были собраны данные о входящем трафике за часовой период. Информация собиралась с интервалом 5 секунд. По собранной информации построен график (Рисунок 1, «Средний входящий трафик на машине iota.cs.prv»).

Рисунок 1. Средний входящий трафик на машине iota.cs.prv

Средний входящий трафик на машине iota.cs.prv

Заключение

Итак, описание любой версии SNMP Framework разделено на четыре части. Их взаимодействие определяется следующим образом.

Доступ к управляемым объектам осуществляется через виртуальное хранилище информации, называемое Management Information Base (MIB). В качестве протокола для доступа к объектам MIB используется Simple Network Management Protocol (SNMP). Объекты в MIB описываются с помощью механизмов определяемых спецификацией Structure of Management Information (SMI), предоставляющей свой язык определения информации. При любом взаимодействии объектов SNMP Framework учитывается система безопасности и администрирования принятая в данной версии SNMP.

Следующая таблица представляет свод всех документов, определяющих все три версии SNMP. Все документы разделены на вышеупомянутые группы. Также почти все версии SNMP предоставляют некоторое количество докуметов информационного характера. В них описаны общие концепции данной версии Стандарта или его совместимость с предыдущими версиями.

Таблица 1.

 InfoSMIMIBProtocolSecurity
SNMPv1RFC-1052RFC-1155RFC-1213RFC-1157RFC-1157
 RFC-1109RFC-1212   
  RFC-1215   

Таблица 2.

 InfoSMIMIBProtocolSecurity
SNMPv2cRFC-1901RFC-257 RFC-3416RFC-1157
 RFC-2576RFC-2579RFC-3418RFC-3417RFC-2576
  RFC-2580   

Как уже говорилось ранее, ситуация с описанием MIB несколько изменилась после выхода первой версии SNMP. Следующие версии уже не включали в себя единый стандартный MIB, описывающий все, требуемые для управления, объекты сети. Последние две версии Стандарта включают в себя только модуль MIB, содержащий описание переменных для работы с объектами протокола SNMP, а также переменные, описывающие состояние системы, на котором расположен агент SNMP. Остальное содержимое документа RFC-1213, описывавшего MIB-II первой версии SNMPv1 разделено на несколько частей, каждая из которых содержится в отдельном документе. Теперь совокупность этих модулей образует MIB-II. В свою очередь MIB-II это модуль описывающий сетевые объекты используемые в Internet.

После перехода к модульному описанию MIB, База Данных Управляемых элементов несколько отделилась от общей модели SNMP. Естественно, MIB все еще остается частью SNMP, но теперь весь Internet MIB не описывается спецификацией SNMP, а документы, описывающие отдельные элементы Internet MIB, выходят отдельно.

Основным языком описания модулей MIB на сегодняшний день является SMIv2, который является рекомендованным стандартом IETF. Более того, IETF требует, чтобы все новые MIB модули были описаны с помощью SMIv2. Одновременно с этим все еще используется SMIv1, который также является стандартом, но без статуса рекомендации. Стандарт SMIv1 не был объявлен устаревшим, т.к. существует большое количество документов опирающихся на спецификацию SMIv1 и многие коммерческие организации еще долгое время после выпуска стандарта SMIv2 пользовались SMIv1. По этому объявление SMIv1 устаревшим потребовало бы изменения и пересмотра очень большого количества спецификаций. Тем более, что одновременное использование SMIv1 и SMIv2 не вносит особых проблем в систему сетевого управления, т.к. SMIv2 совместим со SMIv1. SNMPv2 и SNMPv3, работающие со SMIv2 могут корректно обрабатывать модули описанные с помощью SMI. SNMPv1 воспринимает только SMIv1 и не может полноценно работать с модулями описанными с помощью SMIv2, т.к. SMIv2 содержит новые типы данных. Проблемы совместной работы нескольких версий SNMP, в том числе и проблемы SMIv1/SMIv2 рассматриваются в документах RFC-2576 и RFC-3584.

Таким образом, на сегодняшний день SMIv2 является рекомендованным стандартом IETF, а SMI является стандартом без статуса рекомендации.

На данный момент существует большое количество (около 10000) MIB-модулей, описывающих объекты для управления почти всеми известными сетевыми протоколами и устройствами. Информацию обо всех MIB-модулях можно найти на сайте http://www.mibdepot.com.