SNMPv3

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

Цели статьи: введение в функционал протокола и настройка получения SNMP-данных используя 3 версию протокола.

Wiki
SNMP en
SNMP ru

1. Вводная информация о работе протокола

  • существует 3 (три) версии протокола: 1, 2с и 3;
  • следующие порты важны и используются протоколом:
    DST port UDP 161 для получения SNMP-данных с устройства (GET);
    DST port UDP 162 для отправки уведомления о событиях (TRAP);
  • базы управляющей информации (MIB — Management Information Base) описывают структуру управляющей информации устройств, используя иерархическое пространство имён, содержащее уникальный идентификатор объекта (OID – object identifier). Каждый OID есть некоторая информация о устройстве, например имя устройства, версия операционной системы, имена и количество имеющихся VLAN, etc и любую информацию имеющуюся в MIB мы можем получить обратившись по уникального идентификатору;
  • два типа доступа к SNMP-данным:
    read – только чтение значения OID, например находится ли интерфейс в состоянии “up/up”;
    write – чтение и изменение значений OID, например, используя некий SNMP-совместимое ПО на станции управления, можно изменить имя VLAN используя SNMP-запрос SET;
    В каждом из типов, мы может явно указать к какому ветви пространства имён предоставляется доступ.

 

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

  • Конечно, никто не принуждает использовать эту возможность и потом поддерживаются три режима:
    noauth [noAuthNoPriv] – аутентификация и шифрование не используются
    auth [authNoPriv] – используется аутентификация, но передаваемые данные не шифруются
    priv [authPriv] – используется аутентификация и шифрование передаваемых данных
  • Доступные методы аутентификации и шифрования:
    аутентификация: MD5 и SHA
    шифрование: DES, 3DES, AES(128,192,256 bits)

 

3. Настройка SNMP

Исходные данные:

  • Агент
    имя устройства: sw0
    операционная система: Cisco IOS 15.0(1)SE
    IP-адрес: 10.0.0.1
  • Менеджер
    IP-адрес: 172.16.0.1
    программное обеспечение:  net-snmp-5.7_4

3.1. Настройка SNMP-агента
Настроим SNMPv3 так, чтобы менеджер мог подключаться и лишь читать значения всех имеющихся OID в MIB устройства.

3.1.1. View
В отличие от предыдуших версий протокола, где использовались так называемые ro (read-only) и rw (read-write) community, в третьей версии появился термин view, который определяет родительскую MIB-ветку, куда мы в итоге разрешим доступ read, либо write. Всё это называется View-based Access Control Model (VACM) описано в RFC 2575. Раз мы решили использовать аутентификацию и шифрование, то разумно будет так же ограничить доступ к данным MIB.
Создадим view с именем VIEW_R и правом доступа к родительской ветке system

help-вывод не предоставляет на выбор список, но мы можем посмотреть его используя команду

После выбора ветки, мы можем указать, исключить её из списка доступных (политика – разрешено всё кроме явно запрещённого), либо включить (политика – запрещено всё кроме явно разрешённого).

Можно многократно повторить команду создания view, добавляя, либо запрещая определённые ветки. Как и условились, включим в список доступа только одну родительскую ветку – system

Проверим наш view

3.1.2. Access list
Помимо многих встроенных SNMP-методов ограничения доступа, можно и рекомендуется использовать стандартные Access list.
Создадим ACL разрешающий данные с IP-адреса нашего менеджера

3.1.2. Group
Сначала создаётся SNMP-группа и только потом в неё добавляется SNMP-пользователь, который в последствии используется для доступа.
Создадим группу с именем SNMP_G, привяжем к ней ранее созданный view VIEW_R и укажем, что доступ используя пользователей этой группы разрешён только с узлов перечисленных в ACL SNMP_ACL

Проверим группу

3.1.3. User
Основная команда настройки, аккумулирующая все предыдущие манипуляции – создание SNMP-пользователя:
имя пользователя SNMP_U
группе пользователя SNMP_G
аутентификация на базе хэш-алгоритма SHA и пароль аутентификации “AUTH-PASS-HERE
шифрование алгоритмом 256 bit AES и пароль шифрования “PRIV-PASS-HERE
доступ с данным пользователям разрешён только с узлов перечисленных в ACL SNMP_ACL

Проверим пользователя

4. Проверка корректности настройки
С этого самого момент, вы можете подключаться к SNMP-агенту на нашем Cisco-устройстве, используя программное обеспечения умеющее SNMP-GET на менеджере с IP-адресом 172.16.0.1
Проверим корректность настройки используя утилиту snmpwalk из комплекта пакета net-snmp.

В выводе мы получим более 800 строк с разнообразными OID, например:
имя узла

uptime узла

и последняя строка, где сообщается, чnо это вся доступные OID в рамках нашего View

Если мы хотим предоставить доступ ко всем имеющимся OID в MIB узла, просто не указываем родительскую ветку при настройке view. В итоге количество доступных OID перевалит за несколько тысяч.

5. Мелочи
Существует несколько базовых OID, которые рекомендуется настраивать и делается это вручную

Физическое расположение узла, которое поможет идентифицировать устройство среди прочих

Идентификационные данные контактного лица управляющего устройством

Разрешаем менеджеру перезагружать устройство, может понадобиться например при автоматическом обновлении ОС на группе устройств

6. Debug

Статистику работы и поиск неисправностей SNMP следует начинать со следующей команды:

Источники:
User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3)
View-based Access Control Model (VACM) for the Simple Network Management Protocol (SNMP)

SHARE: Tweet about this on TwitterShare on FacebookShare on VKShare on LinkedInShare on Google+Email this to someone