Настройка snmp на debian

Обновлено: 01.07.2024

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

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

Этот мануал поможет вам установить SNMP и подготовить его к работе. Мы будем работать на двух серверах Ubuntu 18.04. Один из них будет обслуживать менеджер SNMP, который будет общаться с агентом для реализации сетевых устройств (в рамках мануала мы назовем этот сервер сервером 1 или просто менеджером). На другом сервере мы установим агент SNMP, который будет выполнять задачи менеджера (это сервер 2, он также будет называться агентом). В целом и менеджер, и агент можно установить на одну машину, но установка компонентов на разные машины позволит вам подробнее ознакомиться с их функциями.

Требования

Для работы вам понадобится два сервера Ubuntu 18.04, настроенные по этому мануалу.

1: Установка демона и утилит SNMP

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

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

Обновите индекс пакетов:

sudo apt update

Установите программное обеспечение snmp. Также нужно загрузить пакет snmp-mibs-downloader, в котором хранится служебная информация о стандартных MIB, с помощью которой можно управлять иерархией MIB.

sudo apt install snmp snmp-mibs-downloader

Откройте еще один терминал и подключитесь в нем к серверу 2 (агенту):

Обновите индекс пакетов и установите на него пакеты snmp.

sudo apt update
sudo apt install snmpd

Обратите внимание: пакет snmp-mibs-downloader не нужен на агенте, поскольку агент не будет управлять файлами MIB.

2: Настройка менеджера SNMP

Большая часть работы будет выполняться на агенте, потому настройка менеджера не займёт много времени. На этой машине нужно только открыть клиенту доступ к дополнительным данным MIB.

Перейдите на сервер 1 и откройте файл /etc/snmp/snmp.conf:

sudo nano /etc/snmp/snmp.conf

Файл содержит несколько закомментированных строк и всего одну незакомментированную. Чтобы позволить менеджеру импортировать файлы MIB, нужно просто закомментировать эту строку:

Сохраните и закройте файл.

3: Настройка агента SNMP

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

Для начала на агенте нужно открыть конфигурационный файл демона.

sudo nano /etc/snmp/snmpd.conf

Откорректируйте директиву agentAddress. Сейчас она поддерживает только исходящие соединения с локального компьютера. Нужно закомментировать эту строку и раскомментировать следующую, что разрешает все соединения (в дальнейшем мы ограничим доступ).

Примечание: Поскольку поддерживать все соединения не очень хорошо для безопасности, лучше снова заблокировать соединения после начальной загрузки.

Затем нужно временно добавить строку createUser. Эта директива обычно не хранится в этом файле, поэтому позже мы ее удалим.

Создайте пользователя bootstrap, который будет использоваться в качестве шаблона для создания обычных пользователей. Пакеты SNMP делают это путём клонирования параметров пользователей.

Создавая нового пользователя, укажите тип аутентификации (MD5 или SHA) и пароль (минимум 8 символов). Если для передачи данных вы планируете использовать шифрование, вы также должны указать протокол шифрования (DES или AES) и пароль для него (по желанию). Если вы не выберете пароль для протокола шифрования, вместо него будет использоваться ваш пароль аутентификации.

Добавьте строку createUser в конец файла:

.
createUser bootstrap MD5 temp_password DES

Новый пользователь добавлен. Выберите уровень доступа для этого пользователя (bootstrap), а также для пользователя, который будет создан позже (он условно называется demo). Передайте им права на чтение и запись при помощи директивы rwuser (права только на чтение передаёт директива rouser).

Чтобы сделать шифрование обязательным, после настроек пользователя добавьте параметр priv. Чтобы ограничить пользователя определённой частью MIB, нужно указать OID высшего уровня, к которому пользователь должен иметь доступ.

.
rwuser bootstrap priv
rwuser demo priv

Сохраните и закройте файл.

Перезапустите сервис snmpd на своем агенте:

sudo systemctl restart snmpd

Демон SNMP будет слушать соединения по порту :161. Настройте UFW, чтобы менеджер мог подключаться к этому порту.

sudo ufw allow from manager_server_ip_address to any port 161

Теперь можно перейти на сервер 1 (менеджер) и подключиться к агенту, чтобы создать обычного пользователя.

4: Проверка подключения к агенту

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

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

Теперь вы можете составить команду. Ваша команда может отличаться в зависимости от параметров пользователя. Общий синтаксис:

snmp_command -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password remote_host snmp_sub_command_or_options

Проверьте со своего менеджера, что учетная запись bootstrap доступна. Введите следующую команду, чтобы отобразить системную информацию для агента:

snmpget -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address 1.3.6.1.2.1.1.1.0

Строка 1.3.6.1.2.1.1.1.0 – это OID, который отвечает за отображение данных сиситемы. В удаленной системе он выведет результат команды uname –a.

На экране появится такой вывод:

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

5: Создание обычного пользователя

Привилегии пользователя demo уже указаны в файле snmpd.conf,но пока что этого пользователя не существует. Используйте аккаунт bootstrap в качестве шаблона для нового пользователя.

Перейдите на сервер 1 (менеджер) и создайте пользователя по шаблону с помощью инструмента snmpusm. Общий синтаксис имеет такой вид:

snmpusm authentication_info agent_server_ip_address create new_user existing_user

С помощью шаблона (bootstrap) и флагов вы можете создать пользователя с необходимым уровнем привилегий.

snmpusm -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address create demo bootstrap

Если все прошло удачно, вы увидите

User successfully created.

Теперь на удалённом сервере есть полностью готовый к работе пользователь demo. Однако пока что он использует те же учётные данные, что и bootstrap. Измените пароль нового пользователя. Выполните аутентификацию как demo и выберите новый пароль (8 символов минимум).

snmpusm -u demo -l authPriv -a MD5 -x DES -A temp_password -X temp_password agent_server_ip_address passwd temp_password new_password

Вы должны увидеть:

SNMPv3 Key(s) successfully changed.

Теперь вы можете проверить учётные данные. Для этого нужно запросить у удалённого сервера информацию о том, как давно работает сервер SNMP. Используйте инструмент snmpget, чтобы извлечь одно значение с агента.

Теперь можно использовать загруженные ранее дополнительные определения MIB, чтобы запросить значение по имени, а не по ID его OID.

snmpget -u demo -l authPriv -a MD5 -x DES -A new_password -X new_password agent_server_ip_address sysUpTime.0

Команда сообщит, когда в последний раз перезапускался сервис SNMP:

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (53309) 0:08:53.09

6: Создание конфигурационного файла клиента

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

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

Если вы хотите использовать одни учётные данные для всех валидных пользователей на менеджере, вы можете поместить данные в файл snmp.conf (на сервере 1). Откройте его:

sudo nano /etc/snmp/snmp.conf

Если же вы хотите создать учётные данные только для одного пользователя, вы можете создать скрытый каталог .snmp и создать в нём файл (на сервере 1):

Вне зависимости от вашего выбора файл будет содержать одни и те же параметры.

Команды для аутентификации вы найдёте в таблице ниже. Справа находятся директивы, которые нужно добавить в snmp.conf.

Флаг Описание Директива для snmp.conf
-u username Имя пользователя SNMPv3, которого нужно аутентифицировать. defSecurityName username
-l authPriv Уровень безопасности аутентификации. defSecurityLevel authPriv
-a MD5 Протокол для аутентификации. defAuthType MD5
-x DES Протокол шифрования defPrivType DES
-A passphrase Пароль для аутентификации. defAuthPassphrase passphrase
-X passphrase Пароль для шифрования. defPrivPassphrase passphrase

С помощью этих данных вы можете составить файл snmp.conf. В нашем случае он выглядит так:

defSecurityName demo
defSecurityLevel authPriv
defAuthType MD5
defPrivType DES
defAuthPassphrase new_password
defPrivPassphrase new_password

Сохраните и закройте файл.

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

snmpget -u demo -l authPriv -a MD5 -x DES -A new_password -X new_password agent_server_ip_address sysUpTime.0

теперь можно вводить это:

snmpget agent_server_ip_address sysUpTime.0

Теперь команды стали значительно короче.

7: Удаление пользователя

Пользователь bootstrap был нужен как шаблон для создания других пользователей. Теперь его можно удалить.

Перейдите на сервер 2 (агент) и откройте /etc/snmp/snmpd.conf.

sudo nano /etc/snmp/snmpd.conf

Найдите и закомментируйте (или совсем удалите) строки с параметрами пользователя bootstrap.

Сохраните и закройте файл.

sudo service snmpd restart

Теперь в файле snmpd.conf нет директив createUser. Привилегии пользователя также будут сброшены.

Чтобы полностью удалить пользователя bootstrap из usmUserTable, запустите на менеджере:

snmpusm agent_server_ip_address delete bootstrap

Вы получите такой вывод:

User successfully deleted.

Заключение

Теперь у вас есть рабочая установка клиент- сервер SNMP. Вы можете установить демон на другие хосты и добавить их в инфраструктуру.

Протокол управления SNMP

Simple Network Management Protocol (SNMP) — это протокол прикладного уровня, он делает возможным обмен данными между сетевыми устройствами.

SNMP — это не продукт, а свод правил. Он определен Советом по архитектуре Интернета и является частью пакета TCP/IP. SNMP управляется и поддерживается Инженерной группой Интернета (IETF).

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

Таким образом, SNMP избавляет администратора от необходимости ввода команд вручную. Всего были разработаны и развернуты три версии. Все они используются до сих пор, а самой распространенной стала вторая — SNMPv2с.

Архитектура SNMP


Схема SNMP. Источник: IMB

Компоненты, составляющие архитектуру SNMP:

  • сетевая станция управления, включающая в себя сетевого менеджера;
  • агенты;
  • мастер-агенты;
  • управляемые компоненты.

Сетевая станция управления — NMS

Network Management Station (NMS) удаленно мониторит управляемые устройства, получает данные, собранные мастер-агентами, отслеживает производительность и представляет полученную информацию в графическом виде. Встроенный менеджер NMS отвечает за связь с агентами.

Агенты

Мастер-агент

Это программа, связывающая сетевых менеджеров и субагентов. Мастер-агент анализирует запросы сетевого менеджера NMS и пересылает их субагентам, собирает и формирует ответы субагентов и отправляет их менеджеру. Мастер-агент уведомляет менеджера, если запрос некорректен или запрошенная информация недоступна.

Субагент

Это программа, поставляемая вендором вместе с сетевым устройством. Субагент пересылает собранную информацию мастер-агенту. У каждого управляемого компонента есть соответствующий субагент.

Управляемый компонент

Это подключенное к сети устройство или программное обеспечение с встроенным субагентом. К таким устройствам относятся не только маршрутизаторы, коммутаторы и серверы, но и IP-видеокамеры, МФУ и IP-телефоны. К софту с субагентами также относятся антивирусные программы, системы резервного копирования, ПО для систем ИБП.

База управляющей информации — MIB

MIB — это иерархическая база данных со сведениями об устройстве. У каждого типа устройства своя MIB-таблица: у принтера в ней содержится информация о состоянии картриджей, а у коммутатора — данные о трафике. Благодаря MIB менеджер знает, какую информацию он может запросить у агента устройства.

Идентификатор объекта — OID

Каждый объект в MIB имеет свой уникальный ID — OID, который представлен в числовом формате и имеет иерархическую структуру. OID — это числовой эквивалент пути к файлу. Он присваивает значения каждой таблице в MIB, каждому столбцу в таблице и каждому значению в столбце.

Используя первые 6 цифр этого OID, можно пройти по дереву на схеме.


Схематичное представление дерева OID. Источник: IBM

Часть значений в OID содержит данные о производителе устройства, что позволяет быстро получить определенную информацию о девайсе.

Древовидная иерархия MIB и OID в SNMP выглядит несколько запутанной, но у нее есть свои преимущества. Это простая и гибкая система организации сетевых устройств, она работает вне зависимости от размера сети.

Теория и логика работы протокола SNMP

Предназначение

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

Менеджеры и агенты обмениваются данными через протокол UDP. Вместо него также может использоваться TCP, IPX или протокол MAC-уровня. Обмен данными основан на Protocol Data Unit (PDU).

Всего в SNMP семь PDU:

TRAP, GETBULK — есть только во второй и третьей версиях протокола SNMP.

Схема PDU

IP заголовокTCP/IPTCP/IP
UDP заголовокTCP/IPTCP/IP
Версия SNMPv1/v2/v3PDU
Строка
сообщества
Public, PrivatePDU
Тип PDUGet, GetNext, Response, Set, Trap, GetBulk,
Inform
PDU
ID запросаИдентификатор запросаPDU
Статус ошибки0, 1, 2, 3, 4, 5PDU
Индекс ошибки0, 1PDU
Связанные
переменные
Одна или несколько переменных в
запросе
PDU

Применение

Статусы ошибок и их описание.

Сетевые порты SNMP

По умолчанию SNMP использует UDP-порты 161 и 162. Менеджер отправляет запросы на порт 161 агента. С порта 161 агент отправляет ответ менеджеру. При отправке запроса менеджер добавляет к нему ID, а агент вставляет этот ID в ответ, чтобы менеджер мог связать свой запрос с ответом агента.

Ловушки

Ловушка (Trap) — это важнейший способ коммуникации в SNMP. Менеджер отвечает за большое количество устройств, на многих из них может быть несколько управляемых компонентов. Агент отправляет ловушку по своей инициативе, когда необходимо сообщить менеджеру о событии. Например, ловушка может выслать отчет о перегреве машины или о том, что в тонере закончились чернила.

Получив уведомление, менеджер выбирает нужное действие, например, опрашивает агента, чтобы получить полное представление о том, что произошло. Перечень уведомлений, которые посылает ловушка:

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

SNMPv1

Первая версия протокола создана в 80-х годах XX века. Легка в настройке — требуется только строка community. Версия широко используется до сих пор.

SNMPv2с

Вторая версия протокола SNMP появилась в 1993 году. Разработчики добавили в нее новый запрос GetBulk и ловушку Inform, а также усовершенствовали безопасность.

У этой версии есть два способа коммуницировать с устройствами, поддерживающими SNMPv1: двуязычная система сетевого управления и прокси-агенты. Прокси-агенты выполняют роль мастер-агентов, а в двуязычной системе управления менеджер определяет, какую версию SNMP поддерживает агент, и связывается с ним через SNMPv1 или SNMPv2c.

SNMPv3

Третья версия вышла в 1998 году. Разработчики добавили в SNMP криптографическую защиту, облегчили удаленную настройку и администрирование объектов. Этого удалось достичь за счет определения набора стандартизованных объектов управления, называемых объектами MIB удаленного сетевого мониторинга, — RMON MIB.

Безопасность

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

В работе над второй версией протокола разработчики предложили несколько вариантов решения. Распространение получил вариант SNMPv2c — не самый надежный, но простой в использовании.

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

Модели безопасности протоколов SNMP по версиям

SNMPv1Community–based security
SNMPv2cCommunity–based security
SNMPv2uUser–based security
SNMPv2Party–based security
SNMPv3User–based security

Community-based Security — модель безопасности на основе строки сообщества. Фактически это идентификатор пользователя или пароль, который отправляется вместе с запросом. Если строка сообщества неверна, агент игнорирует запрос.

Строка сообщества зависит от вендора устройства. Часто вендоры по умолчанию выбирают «PUBLIC» в качестве пароля, поэтому первым делом на новых устройствах нужно изменить строку сообщества для защиты сети от злоумышленников.

Строки сообщества бывают трех видов:

  • только для чтения — позволяет получать данные с устройства;
  • чтение/запись — позволяет получать данные и изменять конфигурацию устройства;
  • строка сообщества SNMP Trap — позволяет получать ловушки.

Строка сообщества широко используется из-за своей простоты и наличия внешних систем безопасности.

Party-based Security Model — модель на основе так называемых «сторон». Для коммуникации между менеджером и агентов выбирается логическая сущность, называемая стороной. Она устанавливает протоколы аутентификации и шифрования, а отправитель и получатель соглашаются со способом шифрования и дешифровки данных. Сложность использования модели помешала ее распространению среди пользователей.

User-based Security Model — модель безопасности на основе пользователей. Уровни аутентификации, безопасности и конфиденциальности протоколов и ключей настраиваются у агента и менеджера.

Лучше всего безопасность проработана в третьей версии SNMP за счет USM и VACM. Упрощенно VACM (View-based Access Control Model) можно описать как модель с разными уровнями доступа для групп менеджеров. При получении запроса агент решает, разрешен ли определенной группе менеджеров доступ к чтению, записи и получению уведомлений.

Типичные проблемы безопасности

  • Периметр сети может быть небезопасен, если запросы SNMP разрешены межсетевыми экранами и пакетными фильтрами.
  • При активации функций SNMP на некоторых устройствах имя строки сообщества по умолчанию PUBLIC. Хакер начнет поиск именно с этого.
  • Прекращение отправки ловушек. Изменив запись в команде snmpEnableAuthenTraps, злоумышленник может прекратить отправку ловушек. В случае неудачной аутентификации он может не беспокоиться о том, что его безуспешные попытки взлома привлекут внимание администратора сети.
  • Удаленный пакетный перехват при помощи снифферов — программ анализа сетевого трафика.
  • Слабый контроль доступа к строке сообщества чтение-запись. Она дает всем пользователям возможность изменять конфигурацию устройств сети SNMP. Администратор должен внимательно следить за этим, иначе бесконтрольное изменение конфигураций поможет злоумышленнику нанести вред системе.

Если системный администратор не использует SNMP, то он должен отключить его на устройствах.

Практическое применение протокола

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

Возможности SNMP-протокола

Благодаря протоколу администратор может:

При помощи стороннего ПО можно также:

  • управлять облачными сервисами;
  • сканировать по диапазону IP-адресов;
  • добавлять данные через кастомные OID.

SNMP и переход с IPv4 на IPv6

Протокол по умолчанию должен работать с IPv4 или IPv6. На практике IPv6 создает определенные проблемы для работы SNMP. Эти проблемы связаны объектами MIB, содержащими сетевые адреса. OID в MIB хранят информацию для нескольких уровней TCP/IP, и различия между IPv4 и IPv6 будут отражены в OID.

Отсутствие поддержки IPv6 в существующих объектах MIB проявляется двумя способами:

  • объекты MIB поддерживают только IPv4, но не IPv6;
  • содержащиеся в OID IPv4-адреса не обязательно представляют собой IP-адрес.

Эти проблемы решаются также двумя способами:

  • созданием новых баз MIB с поддержкой только IPv6 или независимых от версий протокола Protocol-version independent (PVI);
  • модификацией MIB для добавления новых или обновления существующих OID с поддержкой IPv6.

Инсталляция

Настройка SNMP в Windows

Она подробно описана в документации Microsoft.

Настройка данных агента SNMP

Пуск → Панель управления → Администрирование → Управление компьютером.

  1. В дереве консоли надо развернуть узел «Службы и приложения» и выбрать пункт «Службы».
  2. В области справа дважды щелкнуть элемент «Служба SNMP».
  3. Затем открыть вкладку «Агент».
  4. Ввести имя пользователя или администратора компьютера в поле «Контакт», а затем ввести физическое расположение компьютера или контакта в поле «Расположение». Эти комментарии обрабатываются как текст и являются необязательными.
  5. В разделе «Служба» надо установить флажки рядом со службами, предоставляемыми компьютером и нажать «OK».

Настройка сообщества и ловушек SNMP

Пуск → Панель управления → Администрирование → Управление компьютером.

  1. В дереве консоли надо развернуть узел «Службы и приложения» и выбрать пункт «Службы».
  2. В области справа дважды щелкнуть элемент «Служба SNMP».
  3. Открыть вкладку «Треппинг».
  4. В поле «Имя сообщества» ввести имя сообщества и нажать кнопку «Добавить в список».
  5. В разделе «Адресаты ловушек» нажать кнопку «Добавить».
  6. В поле «Host Name» ввести имя, IP-адрес узла и нажать «Добавить». Имя узла или адрес появится в списке назначение ловушек.
  7. Нажать «ОК».

Настройка безопасности SNMP

Пуск → Панель управления → Администрирование → Управление компьютером.

  1. В дереве консоли нужно развернуть узел «Службы и приложения» и выбрать пункт «Службы».
  2. В области справа дважды щелкнуть элемент «Служба SNMP».
  3. Открыть вкладку «Безопасность».
  4. Установить флажок «Пересылка ловушек проверки подлинности», если необходимо, чтобы агент отправлял ловушку при сбое проверки подлинности.
  5. В разделе «Приемлемые имена сообществ» надо нажать кнопку «Добавить».
  6. В поле «Права сообщества» выбрать разрешения, чтобы указать, как узел будет обрабатывать запросы SNMP от выбранного сообщества.
  7. В поле «Имя сообщества» ввести нужное имя сообщества с учетом регистра, а затем нажать кнопку «Добавить».
  8. Затем, чтобы принимать запросы SNMP от любого узла в сети, независимо от их удостоверения, надо выбрать вариант «Принимать пакеты SNMP с любого узла».
  9. Чтобы ограничить принятие пакетов SNMP, нужно нажать «Принимать пакеты SNMP с этих компьютеров», затем нажать «Добавить» и ввести в поле имя узла, IP-адрес или IPX-адрес соответствующего узла. Нажать «Добавить», а затем «ОК».

Настройка SNMP в Linux

Настройка SNMP в CentOS 7

Сначала нужно установить последние обновления при помощи yum/dnf:

затем установить SNMP:

и создать копию конфигурационного файла:

теперь нужно отредактировать настройки агента

и добавить строки:

Локацию и email лучше указать реальные.

Пора добавить сервис в автозагрузку и перезапустить его:

Как проверить, что сервис запущен:

Опрос агента с помощью утилиты snmpwalk:

Опрос сервера локально командой:

Настройка SNMP в Debian 10

Сначала нужно установить демона, клиента и файлы:

После установки переходим к настройке SNMP в Debian.

Файлом настройки SNMP-агента по умолчанию является /etc/snmp/snmpd.conf. Агент SNMP может быть запущен с настройками по умолчанию. Однако для включения удаленного мониторинга нужно сделать несколько изменений. Для этого создайте резервную копию файла:

Теперь нужно изменить директиву agentAdress. Ее текущие настройки разрешают доступ только с локального компьютера. Для включения удаленного мониторинга необходимо определить IP-адрес интерфейса:

Для настройки аутентификации:

rocommunity предоставляет доступ только на чтение, а rwcommunity дает доступ к чтению/записи. В Access Control section нужно поместить строку

rocommunity S3CUrE 192.168.43.100

Кроме того, можно включить запрос с локального хоста rocommunity S3CUrE localhost:

Затем нужно перезапустить SNMP:

Чтобы добавить сервис в автозагрузку, введите:

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

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

Про SNMP trap / трапы (ловушка) - отличие от snmp в том что мы не делаем запрос и не получаем ответ, а ждем когда устройство само отправит данные и ловим их. Прослушиваем определенный хост например IP:162 порту как только хост сам отправляет данные мы их принимаем/ловим.
Настройка передающей стороны хоста не всегда может быть доступна. Иногда это вшито в ПО и нет возможности включить или выключить snmp trap или как то его настроить, устройство само с периодичностью или изменением состояния шлет данные в сеть. Либо же если есть такие настройки можно настроить вручную включить или отключить данный snmp traps.

Как сделать отправку Службой snmp + ПО c Windows Server на zabbix server пример Dell-OpenManage snmpv2 RUS и аналогично для Kraftway PMC-Sierra Adaptec 5805

В Windows Данная служба называется SNMP Ловушка (англ. TRAP)

Как это все будет работать в заббикс Сервере

Zabbix ищет все соответствующие элементы данных с типом “SNMP трап” на интерфейсах узлов сети по каждому трапу, которые совпадают с полученным адресом из трапа.
Возьмите на заметку, только выбранный “IP” или “DNS” у интерфейса узла сети используется в процессе поиска совпадения.

В Узлах По каждому найденному SNMP интерфейсу, трап сравнивается со всеми регулярными выражениями из элементов данных “snmptrap[регулярное выражение]”. Если совпадение найдено, трап записывается значением для всех совпавших элементов данных. Если совпадений не найдено, но существует элемент данных “snmptrap.fallback”, трап записывается значением для этого элемента данных.
Если совпадений не было найдено ни с одним из соответствующих SNMP интерфейсов, Zabbix по умолчанию журналирует несовпавшие трапы. (Это поведение настраивается в “Журналировать не совпадающие SNMP трапы” в Администрирование → Общие → Прочие).

Установка пакетов
apt-get install snmp snmpd snmptrapd net-tools snmptt libsnmp-dev
Установка net-snmp-perl
apt-get install libnet-snmp-perl

Проверим установку net-snmp-perl
dpkg -l | grep net-snmp-perl

Чтобы идентификаторы OID соответствовали их текстовому описанию, активируйте несвободный репозиторий и установите
apt-get install snmp-mibs-downloader

Стандартно MIB лежат в ./usr/share/snmp/mibs/

mibs :ALL включает все, что не совсем хорошо. Рекомендую для каждого оборудования иметь папку с mib'ами, т.к. они могут отличаться из одной прошивки к другой.
Или же прописать конкретные mib в конфиг например: mibs :BRIDGE-MIB:Q-BRIDGE-MIB:IP-MIB:IF-MIB
Конкретно одну добавить mibs +CPQPOWER-MIB


Настройка snmptrapd
устанавливаем community обычно public
nano /etc/snmp/snmptrapd.conf

Находим и раскомментируем строки
authCommunity log,execute,net public
authCommunity log,execute private

В некоторых случаях SNMP-агенты (сетевые устройства, отсылающие трапы) не умеют работать со строкой подключения Community string и поэтому не могут быть аутентифицированы службой snmptrapd. В таком случае придётся отключить проверку строки подключения, закомментировав параметр authCommunity и включив параметр disableAuthorization.

Для лучшей производительности на продуктивных системах используйте встроенный Perl для передачи трапов от snmptrapd к SNMPTT или напрямую Zabbix'у. , SNMPTT необходимо сконфигурировать демоном с использованием snmptthandler-embedded для передачи ему трапов

Настройка через скрипт Perl zabbix_trap_receiver.pl

nano /etc/snmp/snmptrapd.conf
Если ранее было настроено SNMPTT нужно Закоментировать эту строку:
по умолчанию для traphandle /usr/sbin/snmptthandler Не будет передавать данные для SNMPTT

Получатель трапов Perl взять из установочной папки /zabbix-4.2.1/misc/snmptrap/zabbix_trap_receiver.pl
можно использовать для передачи трапов в Zabbix сервер напрямую с snmptrapd
скопировать zabbix_trap_receiver.pl в /usr/lib/snmptt/

nano /etc/snmp/snmptrapd.conf
После добавить строку
perl do "/usr/lib/snmptt/zabbix_trap_receiver.pl";

Или есть дефолтный от perl но его придется настроить
perl do "/usr/lib/snmptt/snmptthandler-embedded";

Вам также нужно отредактировать скрипт INIT, чтобы добавить дополнительную опцию.

Отредактируйте файл nano /etc/default/snmptrapd

Найдите эту строку: TRAPDOPTS='-Lsd -p /run/snmptrapd.pid'
Добавить строку: TRAPDOPTS='-Lsd -On -p /run/snmptrapd.pid'

Автозагрузка snmptrapd
Меняем параметр на no на yes
TRAPDRUN=yes

Теперь перезапустите сервис SNMPTRAPD :
systemctl daemon-reload
systemctl restart snmptrapd.service

Так как в файле zabbix_trap_receiver.pl по дефолту вывод настроен /tmp/zabbix_traps.tmp так же настроен формат времени date_time_format = %H:%M:%S %Y/%m/%d

В конфигурации nano /usr/local/etc/zabbix_server.conf указываем
StartSNMPTrapper=1
SNMPTrapperFile=/tmp/zabbix_traps.tmp

Перезапускаем заббикс
service zabbix-server restart

Если используется systemd параметр PrivateTmp, этот файл вряд ли заработает в /tmp. Нужно будет указать вывод в другую паку например в /var/log/snmptt/zabbix_traps.tmp

Поданному пути /zabbix-4.2.1/misc/snmptrap/ есть еще скрипт snmptrap.sh остался он от старой версии 1.8

Для старой версии заббикс 1.8


Скрипт используется для получения SNMP трапов. Скрипт должен быть использован в сочетании с snmptrapd, который является частью пакета Net-SNMP.

Руководство по конфигурации:

Установите snmptrapd (часть net-snmp или ucd-snmp)
Измените snmptrapd.conf.
Добавьте следующую строку:

traphandle default /bin/bash /usr/local/bin/snmptrap.sh

Скопируйте misc/snmptrap/snmptrap.sh в /usr/local/bin
Отредактируйте snmptrap.sh для настройки некоторых основных параметров
Добавьте в Zabbix специальный узел сети с элементом данных типа “Zabbix траппер” (тип информации “Текст”). Ключ элемента данных смотрите в snmptrap.sh
Запустите snmptrapd

Включаем опцию на автоматический запуск snmptrapd
nano /etc/default/snmptrapd

Меняем параметр на
TRAPDRUN=yes

Перезапускаем snmptrapd
systemctl daemon-reload
service snmptrapd restart
systemctl restart snmptrapd.service
/etc/init.d/snmptrapd restart

Разрешить входящие на 162 порт
iptables -A INPUT -p udp -m udp --dport 162 -m comment --comment "SNMP Traps" -j ACCEPT

Проверяем слушет наш демон 162-q порт
netstat -nlup | grep 162 или netstat -nlup | grep snmp
Ответ
udp 0 0 0.0.0.0:162 0.0.0.0:*
2964/snmptrapd

Проверка работы для Варианта работы через скрипт Perl
Используйте следующую команду для отправки тестового трапа:
snmptrap -v 1 -c public 127.0.0.1 '.1.3.6.1.6.3.1.1.5.3' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.3 s "teststring000"
Проверяем следующими командами
tail -n 1 /var/log/syslog
nano /tmp/zabbix_traps.tmp
Лог Заббикс сервера
nano /tmp/zabbix_server.log

Проверка в заббиксе
Создайте ТЕСТ элемент в узле данных с типом SNMP трап:
Узел сети с IP адресом SNMP: 127.0.0.1
Ключ: snmptrap["General"]
Формат времени журнала: hh:mm:ss yyyy/MM/dd


Если Мы выбрали что будем работать через скрипт PERL snmptthandler-embedded Дальше можно не настраивать SNMPTT

Утилита snmpttconvertmib умеет формировать и добавлять строку с определением EXEC, в которой указывается действие, выполняемое при получении этого трапа. Для этого используется опция --exec=command, где command строка заключенная в одиночные кавычки. К строке указаной в качестве command добавляется содержимое строки с опрелением FORMAT, заключённое в двойные ковычки:

snmpttconvertmib --in=/usr/share/snmp/mibs/UPS-MIB.txt --out=snmptt.conf.apc -net_snmp_perl --exec='/usr/local/icinga/libexec/eventhandlers/submit_check_result $r TRAP 1'

snmpttconvertmib --in=UPS-MIB.txt --out=/etc/snmp/snmptt.conf.dop --exec='/usr/lib/nagios/plugins/submit_snmp_trap $r "SNMP Trap" 1' | grep translations

Разберём первое событие построчно.
Первая строка:
EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" Normal

начинается с определения EVENT, далее следуют:
- наименование события, в данном случае linkDown, уникальная текстовая метка (алиас) не должна содержать пробелы;
- OID события, в данном случае .1.3.6.1.6.3.1.1.5.3, в цифровом виде, можно использовать и символьный вариант. Допустимо использование шаблонов поиска, например, .1.3.6.1.6.3.1.1.5.*, но при этом необходимо учитывать, что OID'ы будут обрабатываться в порядке их перечисления;
- категория, в данном случае "Status Events", символьная строка заключенная в двойные кавычки, используется для логирования. Если указать категорию "IGNORE", то никаких действий по выполнению определений EXEC и FORMAT не будет выполнено. Также существует категория "LOGONLY", которая отключает выполнение определения EXEC, но логирование осуществляется;
- уровень статуса, в данном случае Normal, символьная строка указывающая статус, например, Minor, Major, Normal, Critical, Warning, используется для логирования. Можно связать с уровнями syslog'а (см. snmptt.ini, опции syslog_level_*).

Вторая строка:
FORMAT Port name: $2 Status: $4

начинается с определения FORMAT за которым следует строка генерирующая текст при логировании. У каждого события может быть только одна строка с определением FORMAT.
Для генерации возможно использование следующих переменных:

Запускаем скрипт
./usr/share/snmp/snmptt-mib-convert.sh
После проверяем содержимое нашего файла и создался ли он
nano /etc/snmp/snmptt.conf.dop

Так как мы создали отдельный файл snmptt.conf.dop пропишем его в snmptt.ini
Настройка snmptt.ini
nano /etc/snmp/snmptt.ini
Добавим наш файл

После изменений snmptt.ini
service snmptt restart

В конфигурации nano /usr/local/etc/zabbix_server.conf указываем
StartSNMPTrapper=1
SNMPTrapperFile=/var/log/snmptt/snmptt.log

Либо после всех изменений перезапускаем службы для применения измененных конфигурация
systemctl daemon-reload
service snmpd restart
service snmptt restart
service snmptrapd restart
service zabbix-server restart

Версия
netstat -v

Просмотр таблицы маршрутизации сети
флаг -r для отображения таблицы сетевой маршрутизации
Опция -n заставляет netstat выводить адреса, разделенные точками, вместо использования символических сетевых имен
netstat -nr

Просмотр статистики сетевого интерфейса
Флаг -i, чтобы получить статистические данные о настроенном сетевом интерфейсе. Опция -a выводит все существующие в ядре интерфейсы
netstat -ai

Просмотр сетевых подключения
ктивные или пассивные сокеты с помощью параметров -t, -n и -a. Флаги показывают разъемы подключения RAW, UDP, TCP или UNIX. Добавив опцию -a, утилита будет создавать сокеты, готовые к соединению
netstat -ant

Просмотр сетевых сервисов
netstat -pnltu

Более новая утилита ss

Вывод списка всех соединений
ss

Вывод списка прослушиваемых так и не прослушиваемых портов
ss -a

Вывод списка прослушивающих сокетов
ss -l

Вывод всех TCP соединений
ss -t

Вывод всех прослушиваемых соединений TCP
ss -lt

Вывод списка всех UDP-соединения
ss -ua

Вывод списка всех прослушиваемых соединений UDP
ss -lu

Просмотр PID (идентификаторы процессов) сокетов
ss -p

Просмотр сводной статистики
ss -s

Просмотр сокетов IPv4 и IPv6
ss -4 и ss -6

Фильтр соединений по номеру порта
ss -at '( dport = :22 or sport = :22 )'
ss -at '( dport = :ssh or sport = :ssh )'

справочные команды ss
man ss

SNMP Trap - специальная пассивная Служба Icinga, в которую будут "прилетать" данные из pipe-файла Icinga. Данная Служба будет служить нам для визуализации конечного результата в веб-интерфейсе Icinga Web 2, а также организации оповещений администратора о проблеме.

В терминале выполните тестовые запросы
Локальный запрос
snmpwalk -v 2c -c public localhost

Для проверки запустим тестовый trap на себя (127.0.0.1), с помощю утилиты snmptrap.
snmptrap -c public -v 2c 127.0.0.1 "" 1.5.5.5.5.5.5.5 1.7.7.7.7.7.7 s "Test TRAP"

Используйте следующую команду для отправки тестового трапа:
snmptrap -v 1 -c public 127.0.0.1 '.1.3.6.1.6.3.1.1.5.3' '0.0.0.0' 6 33 '55' .1.3.6.1.6.3.1.1.5.3 s "teststring000"

Проверяем прилетели ли данные
tail -n 1 /var/log/syslog или весь лог nano /var/log/syslog
nano /var/log/snmptt/snmptt.log Лог Заббикс сервера nano /tmp/zabbix/zabbix-server.log

Должно быть
Полученный трап:
15:48:18 2011/07/26 .1.3.6.1.6.3.1.1.5.3.0.33 Normal "General event" localhost - ZBXTRAP 127.0.0.1 127.0.0.1
Значение ТЕСТ элемента данных:
15:48:18 2011/07/26 .1.3.6.1.6.3.1.1.5.3.0.33 Normal "General event" localhost - 127.0.0.1

Неизвестные trap
nano /var/log/snmptt/snmpttunknown.log

Проверка с удаленной стороны
snmptrap -c public -v 2c IP-zabbix-server "" 1.5.5.5.5.5.5.5 1.7.7.7.7.7.7 s "Rest TRAP REMOTE"

Проверяем
tail -n 1 /var/log/syslog

Проверка в заббиксе
Создайте ТЕСТ элемент в узле данных с типом SNMP трап:
Узел сети с IP адресом SNMP: 127.0.0.1
Ключ: snmptrap["General"]
Формат времени журнала: hh:mm:ss yyyy/MM/dd

Изменение параметров "sysLocation" и "sysContact", для более легкой идентификации трапа.
Настройки по умолчанию:
sysLocation Sitting on the Dock of the Bay
sysContact Me
Пример:
sysLocation MY HOST
sysContact MY EMAIL

Изменение коммьюнити
Настройки по умолчанию:
rocommunity public default -V systemonly
Пример:
rocommunity private default -V systemonly

Перезапускаем для применения настроек
/etc/init.d/snmpd restart

Если в логе заббикса лезут следующие ошибки
Cannot find module (PowerNet-MIB): At line 1 in (none)
Означает что нужно скачать или обновить библиотеку PowerNet-MIB если билиотека новая нужно проверить ее на зависимости
после перезапустить службу systemctl restart snmpd

Пример зависимостей MIB
Ошибки
Cannot find module (PowerNet-MIB): At line 1 in (none)
Cannot find module (DELL-SHADOW-MIB): At line 1 in (none)
Cannot find module (IDRAC-MIB): At line 1 in (none)

Все три mib ссылаются на одни и те же файлы mib
IDRAC-MIB
DELL-SHADOW-MIB
PowerNet-MIB

SNMPv2-MIB DEFINITIONS ::= BEGIN
FROM SNMPv2-SMI
FROM SNMPv2-TC
FROM SNMPv2-CONF
FROM SNMPv2-SMI

Читайте также: