Поиск по сайту:

Введение в SNMP (простой протокол управления сетью)


Введение

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

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

В этом руководстве мы познакомим вас с основами протокола SNMP. Мы рассмотрим его использование, то, как протокол обычно используется в сети, различия в его версиях протокола и многое другое.

Базовые концепты

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

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

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

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

SNMP-менеджеры

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

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

Почти все команды, определенные в протоколе SNMP (мы подробно рассмотрим их позже), предназначены для отправки компонентом-менеджером. К ним относятся GetRequest, GetNextRequest, GetBulkRequest, SetRequest, InformRequest и Ответ. В дополнение к этому, менеджер также предназначен для ответа на сообщения Trap и Response.

SNMP-агенты

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

База MIB представляет собой иерархическую предопределенную структуру, в которой хранится информация, которую можно запрашивать или устанавливать. Это доступно для правильно сформированных запросов SNMP, исходящих от хоста, который прошел аутентификацию с правильными учетными данными (диспетчер SNMP).

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

Агенты SNMP отвечают на большинство команд, определенных протоколом. К ним относятся GetRequest, GetNextRequest, GetBulkRequest, SetRequest и InformRequest. Кроме того, агент предназначен для отправки сообщений Trap.

Понимание информационной базы управления

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

Структуру MIB лучше всего понимать как иерархическое дерево сверху вниз. Каждая ответвляющаяся ветвь помечается как идентификационным номером (начиная с 1), так и идентификационной строкой, уникальными для этого уровня иерархии. Вы можете использовать строки и числа взаимозаменяемо.

Чтобы обратиться к определенному узлу дерева, вы должны проследить путь от безымянного корня дерева до рассматриваемого узла. Наследие его родительских идентификаторов (чисел или строк) связывается вместе, начиная с самого общего, для формирования адреса. Каждое соединение в иерархии представлено точкой в этой нотации, так что адрес в конечном итоге представляет собой серию строк идентификаторов или чисел, разделенных точками. Весь этот адрес известен как идентификатор объекта или OID.

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

Все стандартные ветки, которые мы будем обсуждать, будут иметь одну и ту же структуру родительской ветки. Эта ветвь определяет информацию, которая соответствует спецификации MIB-2, которая является пересмотренным стандартом для совместимых устройств.

Базовый путь к этой ветке:

1.3.6.1.2.1

Это также может быть представлено в виде строк, например:

iso.org.dod.internet.mgmt.mib-2

Раздел 1.3.6.1 или iso.org.dod.internet — это OID, определяющий интернет-ресурсы. 2 или mgmt, следующие в нашем базовом пути, относятся к подкатегории управления. 1 или mib-2 под ним определяет спецификацию MIB-2.

Это отличный ресурс для ознакомления с деревом MIB. Эта конкретная страница представляет собой соединительные узлы на стыке, о котором мы говорили. Вы можете проверить, что находится дальше вверх и вниз по дереву, проверив «высшие» и «вспомогательные» ссылки соответственно.

Другой аналогичный инструмент — аналогичное дерево — предоставляется SolarWinds.

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

Команды протокола SNMP

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

Следующие PDU, или блоки данных протокола, точно описывают типы обмена сообщениями, разрешенные протоколом:

  • Get: сообщение Get отправляется менеджером агенту для запроса значения определенного OID. На этот запрос отвечает ответным сообщением, которое отправляется обратно менеджеру с данными.
  • GetNext: сообщение GetNext позволяет менеджеру запросить следующий последовательный объект в MIB. Это способ, которым вы можете просматривать структуру MIB, не беспокоясь о том, какие OID запрашивать.
  • Set: сообщение Set отправляется менеджером агенту, чтобы изменить значение, хранящееся в переменной агента. Это можно использовать для управления информацией о конфигурации или иного изменения состояния удаленных хостов. Это единственная операция записи, определяемая протоколом.
  • GetBulk: этот запрос от менеджера к агенту функционирует так, как если бы было сделано несколько запросов GetNext. Ответ менеджеру будет содержать максимально возможный объем данных (в рамках ограничений, установленных запросом), который позволяет пакет.
  • Ответ: Это сообщение, отправленное агентом, используется для отправки любой запрошенной информации менеджеру. Он служит как транспортом для запрошенных данных, так и подтверждением получения запроса. Если запрошенные данные не могут быть возвращены, ответ содержит поля ошибок, которые можно указать с дополнительной информацией. Ответное сообщение должно быть возвращено для любого из вышеуказанных запросов, а также сообщений Inform.
  • Ловушка. Сообщение-ловушка обычно отправляется агентом менеджеру. Ловушки являются асинхронными уведомлениями в том смысле, что они не запрашиваются получающим их менеджером. В основном они используются агентами для информирования менеджеров о событиях, происходящих на управляемых ими устройствах.
  • Информация: чтобы подтвердить получение ловушки, менеджер отправляет сообщение Inform обратно агенту. Если агент не получит это сообщение, он может продолжить повторную отправку ловушки.

Благодаря этим семи типам блоков данных SNMP может запрашивать и отправлять информацию о ваших сетевых устройствах.

Версии протокола

Протокол SNMP претерпел множество изменений с момента своего первого появления. Первоначальная спецификация была сформулирована с помощью RFC 1065, 1066 и 1067 в 1988 году. Благодаря тому простому факту, что она существует так долго, эта версия до сих пор широко поддерживается. Однако у протокола есть много проблем с безопасностью, включая аутентификацию в виде обычного текста, поэтому его использование крайне не рекомендуется, особенно при использовании в незащищенных сетях.

Работа над версией 2 протокола была начата в 1993 году и предлагает некоторые существенные улучшения по сравнению с более ранним стандартом. В эту версию была включена новая «партийная» модель безопасности, предназначенная для решения проблем безопасности, присущих предыдущей версии. Однако новая модель не пользовалась большой популярностью, поскольку ее было сложно понять и внедрить.

Из-за этого было создано несколько «побочных продуктов» версии 2, каждая из которых сохранила большую часть улучшений версии 2, но заменила модель безопасности. В SNMPv2c аутентификация на основе сообщества используется та же модель, что и в была повторно введена версия 1. Это была самая популярная версия протокола версии 2. Другая реализация, называемая SNMPv2u, использует безопасность на основе пользователей, хотя она никогда не была очень популярной. Это позволяло настраивать аутентификацию для каждого пользователя.

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

  • NoAuthNoPriv: у пользователей, подключающихся с этим уровнем, нет аутентификации и конфиденциальности сообщений, которые они отправляют и получают.
  • AuthNoPriv: подключения, использующие эту модель, должны проходить аутентификацию, но сообщения отправляются без какого-либо шифрования.
  • AuthPriv: требуется аутентификация, сообщения шифруются.

В дополнение к аутентификации был реализован механизм контроля доступа, обеспечивающий детальный контроль над тем, к каким ветвям может получить доступ пользователь. Версия 3 также может использовать безопасность, обеспечиваемую транспортными протоколами, такими как SSH или TLS.

Заключение

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

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