Протокол SNMP#

Описание#

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

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

Существуют три основные версии протокола SNMP. SNMPv1 - это начальная версия протокола. Более поздние версии, SNMPv2c и SNMPv3, содержат улучшения в производительности, гибкости и безопасности. SNMP является компонентом пакета интернет-протоколов, определенного Рабочей группой разработчиков Интернета IETF. Он состоит из набора стандартов для управления сетью, включая протокол прикладного уровня, схему базы данных и набор объектов данных.

Основные понятия#

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

  • Управляемые устройства;

  • Агент - программное обеспечение, работающее на управляемых устройствах;

  • Станция сетевого управления (NMS) - управляющее программное обеспечение.

Управляемое устройство - это сетевой узел, в котором реализован интерфейс SNMP, обеспечивающий однонаправленный (только чтение) или двунаправленный (чтение и запись) доступ к специфической информации узла. Управляемые устройства обмениваются информацией о конкретном узле с NMS. Иногда называемые сетевыми элементами, управляемые устройства могут быть любого типа, в частности, маршрутизаторы, серверы доступа, коммутаторы, кабельные модемы, мосты, концентраторы, IP-телефоны, IP-видеокамеры, компьютерные узлы и принтеры.

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

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

Принцип взаимодействия SNMP

SNMP поддерживает как IPv4, так и IPv6.

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

ПО Факел поддерживает SNMPv2 (версия 2) и SNMPv3 (версия 3), причем SNMPv3 рекомендуется из-за повышенной безопасности (аутентификация и шифрование).

SNMPv2#

SNMPv2 — наиболее часто используемая версия. Для авторизации клиентов SNMP использует концепцию сообществ (community). Сообщества могут иметь авторизацию только на чтение (это наиболее распространенный вариант) или на чтение и запись. SNMP может работать синхронно или асинхронно. При синхронной связи система мониторинга периодически опрашивает маршрутизатор. При асинхронном — маршрутизатор отправляет хосту мониторинга уведомления «ловушки» (trap). SNMPv2 не поддерживает никаких механизмов аутентификации, кроме адреса источника клиента, поэтому необходимо указать адреса клиентов, которым разрешен мониторинг маршрутизатора. Обратите внимание, что SNMPv2 также не поддерживает шифрование и всегда отправляет данные в виде обычного текста.

Основные настройки SNMPv2#

set service snmp community routers authorization ro#

Определяет сообщество routers с авторизацией только на чтение.

set service snmp community routers network 192.0.2.0/24#
set service snmp community routers network 2001::db8:ffff:eeee::/64#

Подключение к мониторингу из сетей 192.0.2.0/24, 2001::db8:ffff:eeee::/64.

set service snmp community routers client 203.0.113.10#
set service snmp community routers client 203.0.113.20#

Разрешение доступа к мониторингу с адресов 203.0.113.10, 203.0.113.20.

set service snmp location "Moscow"#
set service snmp contact "example@example.ru"#

Добавление дополнительной информации о маршрутизаторе.

set service snmp trap-target 203.0.113.10#

Определение отправления trap, если это необходимо.

set service snmp listen-address 172.16.254.36 port 161#
set service snmp listen-address 2001:db8::f00::1#

Назначение определенных портов и адресов для прослушивания. По умолчанию используется порт 161.

SNMPv3#

В протоколе SNMPv3 (версия 3) представлен целый ряд новых функций, связанных с безопасностью, которые отсутствовали в предыдущих версиях. Безопасность была одним из самых слабых мест SNMP до версии 3. Аутентификация в SNMP версий 1 и 2 представляет собой не более чем пароль (строка сообщества), передаваемый открытым текстом между менеджером и агентом. Каждое сообщение SNMPv3 содержит параметры безопасности, которые кодируются в виде октетной строки. Значение этих параметров безопасности зависит от используемой модели безопасности. Подход к обеспечению безопасности в SNMPv3 направлен на:

  • Конфиденциальность - шифрование пакетов для предотвращения прослушивания неавторизованным источником;

  • Целостность - целостность сообщения для обеспечения того, что пакет не был подделан во время передачи, включая дополнительный механизм защиты от воспроизведения пакетов;

  • Аутентификация - проверка того, что сообщение получено от достоверного источника.

Для примера настроим SNMP демона для прослушивания с адреса 192.0.2.1. Создадим пользователя fakel с паролем fakel12345678. Новый пользователь будет использовать протоколы SHA/AES для аутентификации и обеспечения конфиденциальности.

set service snmp listen-address 192.0.2.1
set service snmp location 'Fakel Datacenter'
set service snmp v3 engineid '000000000000000000000002'
set service snmp v3 group default mode 'ro'
set service snmp v3 group default view 'default'
set service snmp v3 user fakel auth plaintext-password 'fakel12345678'
set service snmp v3 user fakel auth type 'sha'
set service snmp v3 user fakel group 'default'
set service snmp v3 user fakel privacy plaintext-password 'fakel12345678'
set service snmp v3 user fakel privacy type 'aes'
set service snmp v3 view default oid 1

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

Fakel@fakel# show service snmp
 listen-address 192.0.2.1 {
 }
 location "Fakel Datacenter"
 v3 {
     engineid 000000000000000000000002
     group default {
         mode ro
         view default
     }
     user fakel {
         auth {
             encrypted-password 4e52fe55fd011c9c51ae2c65f4b78ca93dcafdfe
             type sha
         }
         group default
         privacy {
             encrypted-password 4e52fe55fd011c9c51ae2c65f4b78ca93dcafdfe
             type aes
         }
     }
     view default {
         oid 1 {
         }
     }
 }

Вы можете проверить корректную настройку SNMPv3 с любой системы на базе Linux, просто выполните следующую команду:

snmpwalk -v 3 -u fakel -a SHA -A fakel12345678 -x AES -X fakel12345678 -l authPriv 192.0.2.1 .1#

Чтобы расширить функциональность SNMP-агента, можно выполнять пользовательские сценарии при каждом вызове агента. Для этого можно использовать команды расширения. Необходимо создать функциональный скрипт, затем загрузить его в ПО Факел командой scp <your_script.sh> fakel@fakel:/config/user-data. После того как скрипт загружен, его нужно настроить с помощью команды ниже.

set service snmp script-extensions extension-name my-extension script your_script.sh#
commit#

OID .1.3.6.1.4.1.8072.1.3.2.3.1.1.4.116.101.115.116 после вызова будет содержать вывод расширения

root@fakel:/home/fakel# snmpwalk -v2c  -c public 127.0.0.1 nsExtendOutput1
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."my-extension" = STRING: hello
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."my-extension" = STRING: hello
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."my-extension" = INTEGER: 1
NET-SNMP-EXTEND-MIB::nsExtendResult."my-extension" = INTEGER: 0

Мониторинг устройств в Zabbix#

Импорт шаблона в Zabbix#

Для мониторинга по SNMP в Zabbix можно использовать шаблон Fakel_by_SNMP:

Данный шаблон подходит для версии Zabbix 6.0.

Для импорта шаблона в систему мониторинга необходимо зайти в меню раздела Data collection, выбрать вкладку Templates. В правом верхнем углу необходимо нажать на кнопку Import и выбрать скачанный ранее файл в любом разрешении (.xml, .json, .yaml). При необходимости добавить/убрать галочки с импортируемых объектов. Нажать кнопку Import. Импортируемый шаблон загрузится в группу шаблонов Templates/Network device, имя Fakel by SNMP.

Добавление узла на мониторинг#

Для добавления нового узла в систему мониторинга необходимо зайти в меню Data collection, выбрать вкладку Hosts.

В правом верхнем углу нажать кнопку Create host.

В появившемся новом окне New host заполнить разделы:

  • Host name - уникальное имя хоста для системы мониторинга Zabbix;

  • Visible name - при необходимости скорректировать видимое имя узла;

  • Templates - в строке поиска вбить имя шаблона Fakel by SNMP и выбрать импортированный шаблон в выпадающем списке;

  • Host groupe - в строке поиска вбить имя группы, в которой будет находиться создаваемый узел. Если группа еще не создана, можно в строке поиска написать новое имя группы и она автоматически создастся в Zabbix в разделе Host groupe;

  • Interface - нажать кнопку add и выбрать SNMP. В появившемся разделе заполнить пункты:

    1. IP address - добавить IP-адрес узла. Если мониторинг будет осуществляться по DNS-имени, то необходимо заполнить пункт DNS name. В пункте Connect to выбрать DNS. При необходимости изменить порт (по умолчанию порт 161);

    2. В разделе SNMP version выбрать настроенную на устройстве версию SNMP.

    • При выборе SNMPv2 необходимо ввести значение SNMP community, которое настраивалось на маршрутизаторе;

    • При выборе SNMPv3 необходимо заполнить пункты Security name, Security level выбрать authPriv. В пункте Authentication protocol выбрать один из протоколов MD5/SHA, в пункте Authentication passphrase добавить пароль, который был настроен на устройстве. В пункте Privacy protocol выбрать один из протоколов DES/AES, в пункте Privacy passphrase добавить пароль, который был настроен на устройстве.

  • При необходимости снять галочку Use combined requests;

  • При необходимости заполнить раздел Description, выбрать из списка Monitored by proxy необходимый proxy-сервер;

  • Нажать кнопку Add.

Просмотр информации об узле#

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

  • Dashboards - для просмотра общей информации об устройстве (трафик на интерфейсах, загрузка дисков, CPU и т.д.);

  • Problems - информация об активных проблемах (триггерах) на узле;

  • Last data - вся информация, полученная от устройства по протоколу SNMP по выбранному шаблону;

  • Graphs - автоматически созданные графики для выбранного устройства.

Корректировка шаблона или узла#

Примечание

Если информация, настроенная в шаблоне, избыточна, можно скорректировать шаблон или элементы данных в выбранном узле или шаблоне.

Для корректировки отображения информации на одном узле необходимо зайти во вкладку Data collection, выбрать пункт Hosts. Рядом с выбранным узлом нажать на Items. В появившемся списке поставить галочки рядом с неиспользуемыми элементами данных, внизу нажать кнопку Disable. Деактивированные элементы данных больше не будут отображаться в Latest data. Для корректировки отображения автообнаруженных элементов данных необходимо выбрать Discovery выбранного узла. В появившемся списке напротив нужного Discovery rule выбрать Item prototypes. В появившемся списке в разделах Create enable и Discover в необходимых пунктах поставить значение No. Деактивированные элементы данных не будут отображаться в Latest data.

Для корректировки автообнаруженных элементов или элементов данных для всех узлов, использующих шаблон Fakel by SNMP необходимо зайти в раздел Data collection, выбрать пункт Templates. Рядом с выбранным шаблоном нажать на Items. В появившемся списке поставить галочки рядом с неиспользуемыми элементами данных, внизу нажать кнопку Disable. Деактивированные элементы данных больше не будут отображаться в Latest data. Для корректировки отображения автообнаруженных элементов данных необходимо выбрать Discovery. В появившемся списке напротив нужного Discovery rule выбрать Item prototypes. В появившемся списке в разделах Create enable и Discovery в необходимых пунктах поставить значение No. Деактивированные элементы данных не будут отображаться в Latest data.