Протокол SNMP (Простой протокол управления сетью)
Предназначен для управления сетевыми устройствами и получений информации о нем, прикладной протокол стека протоколов ТСР. Этот протокол фактически стал общепринятым стандартом систем управления сетями и поддерживается подавляющим большинством производителей сетевого оборудования.
Не смотря на то, что протокол принадлежит к стеку протоколов ТСР, благодаря своей универсальности он может работать не только на базе протокола IP нотак же и на базе протокола IPX – сетевого протокола стека протоколов SPX компании Novell.
Но тем не менее большинство реализаций работают на базе протокола IP. Протокол работает на базе транспортного протокола UDP, что позволяет осуществлять быструю доставку запросов и ответов между менеджерами и агентами. Агенты получают запросы менеджеров через порт 161, кроме этого агенты могут отправлять менеджерам уведомляющие сообщения о возникновении какого-либо события через порт 162.
Модели безопасности
- Модель безопасности на основе сообществ CSM. Данная модель безопасности подразумевает аутентификацию менеджера и агента на основе имени сообщества – своеобразного пароля, передаваемого в сообщениях в открытом виде. Эта модель безопасности неспособна бороться ни с одной из угроз в и, нформационной безопасности SMNP.
- Модель безопасности на основе сторон PSM. Подразумевается что менеджер и агент входят в виртуальное окружение и исполнение, для которого набор допустимых операций ограничен сетевым администратором. В данной модели безопасности также используются протоколы аутентификации и шифрования. Однако, данная модель безопасности показалась многим слишком сложной и запутанной и поэтому не получила широкого распространения.
- Модель безопасности на основе пользователей USM. Подразумевается, что менеджер и агент SMNP действуют от имени некоторого пользователя, идентификатор которого передается в сообщении. Для аутентификации пользователя каждый менеджер и агент имеют общий для всех секретный ключ аутентификации, определяемый на этапе настройки системы управления сетями. Кроме того, данная модель безопасности предполагает шифрование содержимого сообщений и определение своевременности сообщения, с учетом показания часов агентам. Модель на основе пользователей во многом похожа на модель на основе сторон, но она значительно упрощает процесс идентификации пользователей.
Версии протокола SNMP
- SNMPv1
- SNMPv2
- SMNPv2p
- SMNPv2c
- SMNPv2u
3. SNMPv3
На практике сетевые устройства сразу поддерживают несколько версий. Первая версия появилась в 1988 и описана в документе 1157. Позже данная версия протокола подверглась критике за свою модель безопасности на основе сообществ, однако, несмотря на проблемы с безопасностью, данная версия протокола довольно часто применяется. Так как она является самой простой.
SMNPv2p – используется модель безопасности на основе сторон. Кроме безопасности, в данной версии было улучшено быстродействие. Данная версия протокола позволяла менеджерам получать записи о нескольких объектах базы управляющей информации за один запрос. Однако, из-за того, что модель безопасности на основе сторон не получила распространения, данная версия на сегодняшний день не используется.
SMNPv2c – разработчики протокола вернулись к модели на основе сообществ и проблема безопасности осталась нерешенной.
SMNPv2u – используется модель безопасности на основе пользователей
SNMPv3 – поддерживает модель безопасности на основе пользователя, но в отличие от предыдущей – более удачно доработана.
Команды SMNP
Менеджеры, взаимодействуя между собой используют набор команд:
GetRequest – получение от агента информации о каком-либо объекте MIB (базы управляющей информации) по его имени
GetNextRequest – используется для получения от агента значения следующего объекта при последовательном просмотре
GetResponse- используется агентом для передачи менеджеру ответа
SetRequest – используется менеджером для изменения значения какого-либо объекта, с помощью этой команды и происходит управление устройством.
Trap –используется агентом менеджеру уведомляющего сообщения о возникновении события.
GetBulkRequest – используется менеджером для получения от агента сразу нескольких значений за один запрос. Введена с в 2р.
InformRequest - используется менеджерами для обмена информацией об объектах между собой.
SMNPv3-Trap –является улучшенной версии команды Trap, не заменяет просто Trap.
Формат сообщений
Рассмотрим первую версию – самою простую.
Версия | Имя сообщества | Область данных |
В версии протокола указывается текущая версия протокола, для первой версии -0, для второй -1. Менеджеры и агенты должны использовать одну и ту же версию, в противном случае все сообщения должны передаваться через прокси-агета SMNP, который обеспечивает взаимодействие агентов и менеджеров, поддерживающих разные протоколы.
Имя сообщества задается сетевым администратором и представляет собой идентификатор группы устройств, управляемых определенным менеджером. По умолчанию, могут использоваться значения public – только для чтения и private – для группы чтение и запись. Агенты могут входить в состав только одной группы, а менеджеры могут входить в состав нескольких групп, это позволяет им взаимодействовать со множеством объектов.
Область данных содержит один или несколько модулей данных протокола PDU, каждый из которых относится к одному из пяти различных типов PDU, соответствующих командам протокола + PDU. Все типы модулей, кроме Trap PDU имеют одинаковый формат.
Тип PDU |
Идентификатор запроса |
Статус ошибки |
Индекс ошибки |
Идентификатор объекта 1 |
Значение объекта 1 |
Идентификатор объекта 2 |
Значение объекта 2 |
… |
Тип – указывает на тип модуля данных и может принимать следующее значение:
Getrequest-PDU – A016
NextRequest-PDU – A116
Response –A2
Set – A3
Идентификатор запроса – используется для согласования запроса и ответа.
Статус ошибки – указывает на ошибку. В запросах данное поле устанавливается в 0. в ответах, значения отличающиеся от 0 означают следующие ошибки:
1 – слишком большой размер модуля данных
2 – не существует такого имени объекта
3 – неверное значение
4 – объект только для чтения
5 – ошибка общего характера
Индекс ошибки– указывает на тип возникшей ошибки, в случае, если в поле статус ошибки
Идентификатор объекта – содержит идентификатор объекта базы управляющей информации, а поля – значение объекта – содержат значения соответствующих объектов.
Структура Trap-PDU
- Trap-PDU – A4
- Тип объекта – указывает на тип объекта, который сформировал уведомляющее сообщение
- Адрес агента – содержит сетевой адрес агента, являющегося инициатором уведомляющего сообщения.
- Идентификатор сообщения – указывает причину, вызвавшую необходимость в передаче уведомления:
=0 – установление начального состояния объекта
=1 – восстановление начального состояния
=2 – нарушение работы линии связи
=3 – восстановление работы линии связи
=4 – откат в аутентификацию запроса от менеджера
=5 – сосед по протоколу EGP не функционирует
=6 – специфическое сообщение
идентификатор специфического сообщения, формируемое производителем сетевого устройства или ПО
Временная метка – указывает на время формирования управляющего сообщения
Идентификатор объекта
Значение объекта
SMNP – сообщение, в отличие от сообщений других протоколов, не имею заголовков с фиксированными полями, вместо этого, каждое поле сообщения предваряется его типом и размером. Согласно формальному языку ASN.1 и основными правилами кодирования данных-BER (набор правил для кодирования данных описанных на языке ASN.1). В SNMP1 - не совсем соответствует стандарту ASN.1 есть отличие в типах данных.
INTEGER[02]
STRING[04]
NULL[05] –нулевая величина
OID[06]-идентификатор объекта БД
SEQUENCE[30]-упорядоченный набор из одного или нескольких типов
IPADDRESS[40] – сетевой адрес
Counter[41] – счетчик
GAUGE[42]-датчик
TIMETICKS[43]-временные метки
Рассмотрим пример запроса для объекта SysDescr (Системный дескриптор), который имеет идентификатор 1.3.6.1.2.1.1.1.
SEQUENCE | Len=41 | INTEGER | Len=1 | ||||
6С | |||||||
STRING | Len=6 | p | u | b | l | i | C |
А0 | 1С | АЕ | |||||
GetRequest | Len=28 | Integer | Len=4 | Идентификатор запроса | |||
INTEGER | Len=1 | Статус ошибки | INTEGER | Len=1 | Индекс ошибки | ||
0Е | 0С | ||||||
SEQUENCE | Len=14 | SEQUENCE | Len=12 | OID | Len=8 | ||
2В | |||||||
1.3 | |||||||
NULL | Len=0 |