Настройка snmp trap ubuntu

Обновлено: 06.07.2024

Инсталляция Trap сервера

yum install snmptt net - snmp perl - Net - SNMP net - snmp - perl net - snmp - utils Небольшое пояснение по демонам, net-snmp имеет в себе несколько демонов, нам нужен только один – snmptrapd, он висит на udp/162 порту и слушает входящие трапы которые посылает сетевое оборудование. Потом, когда он получил данные (SNMP OID) он их передаёт другому демону SNMPTT (TT – значит trap translator, переводчик трапов из цифровых значений (SNMP OID MIB) в слова понятные человеку) на этом его работа заканчивается. SNMPTT переводит SNMP OID MIB в слова понятные человеку и уже переведённые данные пишет в файл /var/log/snmptt/snmptt.log откуда потом Zabbix Server забирает эти данные через свои механизмы и отображает на своём WEB interface.

Настройка

Создадим файл /etc/snmp/cisco.conf со следующим содержимым

Правим файл /etc/snmp/snmptt.ini

После внесения изменений я перезапускаю все демоны

Подключение MIB файлов

Далее необходимо добавить расшифровку OID

Выяснять где хранятся MIB файлы

/ etc / snmp : / usr / share / snmp : / usr / lib64 / snmp : / root / . snmp : / var / lib / net - snmp

Просматриваем лог трап сервера и находим OID s, который не поддерживаются. Например, в логе такая запись

14 : 38 : 06 2018 / 02 / 03 . 1.3.6.1.4.1.9.9.46.2.0.2 Normal "General event" 10.10.12.3 - ZBXTRAP 10.10.12.3 10.10.12.3


На сайте находим необходимый MIB по данному OID.



Загружаем все необходимые зависимости из таблицы

Таблица 1

snmpttconvertmib -- in =/ root / . snmp / SNMPv2 - SMI . my -- out =/ etc / snmp / cisco . conf -- debug snmpttconvertmib -- in =/ root / . snmp / SSNMPv2 - TC . my -- out =/ etc / snmp / cisco . conf -- debug snmpttconvertmib -- in =/ root / . snmp / SNMPv2 - CONF . my -- out =/ etc / snmp / cisco . conf -- debug

Таким образом мы внесли изменения в файл /etc/snmp/cisco.conf , в нём появились секции с описанием цифровых OID SNMP трапов. Отредактируйте этот файл, вставте ZBXTRAP $aA после слова FORMAT (сейчас вам надо вставить ZBXTRAP $aA всего в трёх строчках) например была строка

FORMAT Notification of a configuration management event as $ * FORMAT ZBXTRAP $ aA Notification of a configuration management event as $ *

Все прикрепленые MIB фалы прописаны в /etc/snmp/cisco.conf. Можно скачать его или добавлять вручную

Весть каталог /etc/snmp/

MIB файлы одним архивом для Cisco

По отдельности

MIB файлы одним архивом для HP

По отдельности

MIB файл контроллера WLC

Чтобы загрузить MIB WLC, выполните следующие действия:

  1. На странице Wireless Downloads нажмите Wireless LAN Controller и выберите платформу котроллера, MIB для которой вам требуются.
  2. Появится страница Software Download для контроллеров. На странице представлены все файлы для WLC, включая MIB.
  3. Загрузите стандартные MIB и MIB, характерные для Cisco. Должны быть загружены и содержать MIB следующие два файла. Имена файлов похожи на данные в примере:

Настройка Zabbix на обработку трапов

Необходимо дописать данный материал

Настроим Zabbix на обработку трапов. Для этого включим ее в конфигурационном файле /etc/zabbix/zabbix_server.conf и укажем путь до файлов логов трап сервера

Дополнительная настройка требуется только триггеров, так как в шаблоне Template Net Cisco IOS SNMPv2

Создание триггера

Открываем шаблон Template Net Cisco IOS SNMPv2 и создаем новый триггер

Можно воспользоваться шаблоном zbx_export_templates

Настройка Cisco на отдачу трапов

Можно задать различные трапы, например на загрузку процессора

snmp-server trap-source Vlan1
snmp-server enable traps snmp authentication linkdown linkup coldstart warmstart
snmp-server enable traps vrrp
snmp-server enable traps tty
snmp-server enable traps license
snmp-server enable traps ethernet cfm cc mep-up mep-down cross-connect loop config
snmp-server enable traps ethernet cfm crosscheck mep-missing mep-unknown service-up
snmp-server enable traps flash insertion removal
snmp-server enable traps adslline
snmp-server enable traps adsl2line
snmp-server enable traps vdsl2line
snmp-server enable traps envmon
snmp-server enable traps c3g
snmp-server enable traps isdn call-information
snmp-server enable traps isdn layer2
snmp-server enable traps isdn chan-not-avail
snmp-server enable traps isdn ietf
snmp-server enable traps energywise
snmp-server enable traps cef resource-failure peer-state-change peer-fib-state-change inconsistency
snmp-server enable traps aaa_server
snmp-server enable traps atm subif
snmp-server enable traps memory bufferpeak
snmp-server enable traps config-copy
snmp-server enable traps config
snmp-server enable traps config-ctid
snmp-server enable traps entity
snmp-server enable traps fru-ctrl
snmp-server enable traps resource-policy
snmp-server enable traps event-manager
snmp-server enable traps hsrp
snmp-server enable traps ipmulticast
snmp-server enable traps msdp
snmp-server enable traps mvpn
snmp-server enable traps cpu threshold
snmp-server enable traps ipsla
snmp-server enable traps syslog
snmp-server enable traps l2tun session
snmp-server enable traps l2tun pseudowire status
snmp-server enable traps vtp
snmp-server enable traps pw vc
snmp-server enable traps firewall serverstatus
snmp-server enable traps nhrp nhs
snmp-server enable traps nhrp nhc
snmp-server enable traps nhrp nhp
snmp-server enable traps nhrp quota-exceeded
snmp-server enable traps isakmp policy add
snmp-server enable traps isakmp policy delete
snmp-server enable traps isakmp tunnel start
snmp-server enable traps isakmp tunnel stop
snmp-server enable traps ipsec cryptomap add
snmp-server enable traps ipsec cryptomap delete
snmp-server enable traps ipsec cryptomap attach
snmp-server enable traps ipsec cryptomap detach
snmp-server enable traps ipsec tunnel start
snmp-server enable traps ipsec tunnel stop
snmp-server enable traps ipsec too-many-sas
snmp-server host 192.168.1.251 informs version ВАШ_COMMUNITY
snmp-server host 192.168.1.251 version 2c ВАШ_COMMUNITY

Расскажу немно о пратоколе SNMP и основах работы с трапами (TRAP) на хостах под управление ОС Linux Mint, Ubuntu, Debian и.п. Рассмотрим процесс установки и настройки необходимых утилит и демонов, таких как, snmp, snmpd и snmptrapd.

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

Установка snmp, snmpd snmptrapd в Ubuntu, Debian, Linux Mint

Установим 3 пакета:

1. Пакет snmp включает в себя базавый набор библиотек и утилит необходимых для работы и отладки (например утилиту snmpwalk).

2. Демон snmpd необходим для управления и получения данных с нашего хоста по протоколу snmp.

3. Демон snmptrapd необходим для получения трапов от хостов.

Настройка snmptrapd в Ubuntu, Debian, Linux Mint

Файл настроек демона snmptrapd находиться в файле "/etc/snmp/snmptrapd.conf".

1. Первым делом устанавливаем community, для этого правим файл настроек "/etc/snmp/snmptrapd.conf". В большинстве случаев в качестве community устанавливаем public, но это необязательно, можете поставить какой-нибудь свой.

2. Далее включаем опцию на автоматический запуск snmptrapd в файле настроек "/etc/default/snmptrapd".

3. Перезапускаем snmptrapd.

4. Проверяем слушет наш демон 162-q порт.

5. Для проверки запустим тестовый trap на себя (127.0.0.1), с помощю утилиты snmptrap.

Смотрим файл сислога "/var/log/syslog", должна появиться строка о получение trap-а. Для просмотра syslog-а воспользуемся утилитой tail.

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

где 192.168.2.100 -ip адрес хоста на который отправляем трап.

Смотрим еще раз последнюю строку файла сислога "/var/log/syslog", должна появиться строка о получение trap-а с удалленого хоста.

Настройка snmpd в Ubuntu, Debian, Linux Mint

Файла настроек демона snmpd находиться в "/etc/snmp/snmpd.conf". После установки snmpd, по умолчанию, он должен работать на localhost-е.

1. Проверка работы snmpd с помощю утилиты snmpwalk.

Видно что по snmp отдаються данные с localhost.

Если вам надо опрашивать ваш host с другого адреса (например с удаленного компа) или порта (нестандартного порта), то надо изменить в файле настроек "/etc/snmp/snmpd.conf" строку.

где 192.168.1.100 - ip адрес вашего хоста, 162 - порт на хосте.

2. Изменение параметров "sysLocation" и "sysContact", для более легкой идентификации трапа.

3. Изменение дефолтного значения community.

По умолчанию в качестве community установлено public, это значение можно изменить в файле настроек "/etc/snmp/snmpd.conf".

где "private" - новое значение community. Параметры "default -V systemonly" являються необязательными, я рекомендую их оставить, т.к. без них, хост будет отдавать по snmp огромное количество всякой ненужной информации.

4. Перезапускаем демон snmpd.

Вот и все. Я постарался кратко рассказать о первоначальной настройки демонов snmpd и snmptrapd. Комментируем, подписываемся ну и всем пока:)

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

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

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

Предварительные требования

Для данного обучающего руководства вам потребуется следующее:

  • Два сервера Ubuntu 18.04, настроенные в соответствии с указаниями обучающего руководства Начальная настройка сервера для Ubuntu 18.04, включая пользователя без прав root с привилегиями sudo и настроенный брандмауэр ufw .

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

Вы можете начать изучение того, как SNMP можно реализовать в системе, установив демон и инструменты на ваши сервера Ubuntu.

Из вашего локального компьютера выполните вход на сервер менеджера с помощью вашего пользователя без прав root:

Обновите индекс пакетов для менеджера пакетов APT:

Затем установите программное обеспечение SNMP:

Пакет snmp предоставляет набор инструментов командной строки для отправки запросов SNMP агентам. Пакет snmp-mibs-downloader поможет установить файлы информационной базы управления (MIB), которая отслеживает сетевые объекты, и управлять ими.

Затем откройте новый терминал на вашем локальном компьютере и выполните вход на сервер агента:

На сервере агента обновите индекс пакетов:

Затем установите демон SNMP.

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

Теперь, когда вы установили эти компоненты, вы сможете перейти к настройке вашего сервера менеджера.

Шаг 2 — Настройка сервера менеджера SNMP

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

На вашем сервере менеджера откройте файл /etc/snmp/snmp.conf в текстовом редакторе, используя привилегии sudo. В этом обучающем руководстве мы будем использовать nano :

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

Сохраните и закройте snmp.conf , нажав CTRL+X , Y , а затем нажмите ENTER , если вы используете nano .

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

Шаг 3 — Настройка сервера агента SNMP

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

Для начала откройте на вашем сервере агента файл конфигурации демона с привилегиями sudo:

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

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

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

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

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

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

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

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

Также вы примените использование шифрования, добавив priv после вашего пользователя. Если вы хотите ограничить пользователя конкретной частью MIB, вы можете указать идентификатор объекта (OID) самого высокого уровня, к которому будет иметь доступ пользователь, в конце строки.

В рамках данного обучающего руководства обе строки будут выглядеть следующим образом:

Когда вы закончите внесение изменений, сохраните и закройте файл.

Для вступления этих изменений в силу, перезапустите службу snmpd на вашем сервере агента:

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

Дополнительную информацию о UFW можно получить в статье Настройка брандмауэра с UFW в Ubuntu 18.04.

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

Шаг 4 — Проверка аутентификации для сервера агента

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

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

  • -v : этот флаг используется для указания версии протокола SNMP, которую вы хотите использовать. В этом обучающем руководстве мы будем использовать версию 3.
  • -c : этот флаг используется, если вы работаете со строками доступа для аутентификации в стиле, используемом в версиях 1 и 2 протокола SNMP. Поскольку вы используете аутентификацию с помощью пользователя в стиле версии 3, вам не нужно использовать этот флаг.
  • -u : этот параметр используется для указания имени пользователя, которого вы будете использовать для аутентификации. Для чтения или изменения с помощью SNMP необходимо выполнять аутентификацию с помощью известного имени пользователя.
  • -l : этот флаг используется для определения уровня безопасности, который вы используете при подключении. Возможные значения — noAuthNoPriv при отсутствии аутентификации и шифрования, authNoPriv — при наличии аутентификации, но без шифрования, и authPriv — при использовании аутентификации и шифрования. Имя пользователя, которое вы используете, необходимо настроить в соответствии с уровнем безопасности, который вы указываете, либо аутентификация не будет выполнена.
  • -a : этот параметр используется для указания протокола аутентификации, который используется. Возможные значения — MD5 или SHA . Его значение должно соответствовать информации, которая была указана при создании пользователя.
  • -x : этот параметр используется для указания протокола шифрования, который используется. Возможные значения — DES или AES . Его значение должно соответствовать информации, которая была указана при создании пользователя. Это необходимо, если после привилегий пользователя идет priv , который делает шифрование обязательным.
  • -A : данный флаг используется для предоставления фразы-пароля аутентификации, которая была указана при создании пользователя.
  • -X : эта фраза-пароль шифрования, которая была указана при создании пользователя. Если ничего не было указано, но алгоритм шифрования был предоставлен, будет использоваться фраза-пароль аутентификации. Это обязательно, если указан параметр -x , либо если после привилегий пользователя идет priv , что говорит о необходимости шифрования.

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

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

Строка 1.3.6.1.2.1.1.1.0 — это OID, который отвечает за отображение информации о системе. Он будет возвращать вывод uname -a на удаленной системе.

Результат будет выглядеть следующим образом:

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

Шаг 5 — Настройка стандартной учетной записи пользователя

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

На сервере менеджера вы можете создать пользователя из шаблона с помощью инструмента snmpusm и следующего общего синтаксиса:

Используя то, что вы узнали о флагах аутентификации, которые вы должны передавать, и учетную запись, которая у вас уже есть (bootstrap), вы можете создать пользователя, соответствующего привилегиям пользователя, которые вы уже определили (demo).

Итоговая команда будет выглядеть следующим образом:

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

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

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

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

Теперь у вас есть рабочая учетная запись с именем demo. На следующем шаге вы упростите работу с командами SNMP, настроив клиент.

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

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

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

Если вы хотите поделиться учетными данными с любым действительным пользователем на вашем компьютере управления, вы можете указать данные в глобальном файле snmp.conf​​​ на сервере менеджера. Вам потребуется открыть этот файл с привилегиями sudo:

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

Независимо от вашего решения о том, где вы будете размещать конфигурацию, содержимое будет одним и тем же.

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

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

Используя эту информацию, вы можете создать соответствующий файл snmp.conf . В рамках этого руководства он будет выглядеть следующим образом:

После завершения редактирования сохраните и закройте файл.

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

Вместо того, чтобы вводить следующую команду:

Вы можете ввести:

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

Шаг 7 — Удаление учетной записи Bootstrap

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

На вашем сервере агента откройте файл /etc/snmp/snmpd.conf еще раз с привилегиями sudo.

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

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

Теперь перезапустите демон SNMP:

Это позволит выполнить рекомендацию, согласно которой в файле snmpd.conf ​​​ должны отсутствовать директивы createUser . Также это действие удалит привилегии из этого временного пользователя.

Если вы хотите полностью удалить пользователя bootstrap из usmUserTable , вы можете сделать это, запустив следующую команду из сервера менеджера:

Заключение

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

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

Сбор точной информации о серверах и инфраструктуре – очень важный аспект системного администрирования. Для обработки таких данных существует много инструментов, и многие из них основаны на технологии 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. Прежде чем вводить понятие ловушки, давайте сначала познакомимся с протоколом SNMP.

Простой протокол управления сетью (Simple Network Management Protocol) Протокол прикладного уровня, да TCP/IP Часть семейства протоколов. Это обеспечивает удобный обмен управляющей информацией между сетевыми устройствами. Это позволяет администраторам сети управлять производительностью сети, обнаруживать и решать сетевые проблемы, а также расширять сеть.

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

Структура управления управлением SNMP

Короче говоря, протокол SNMP - это протокол, используемый для управления устройствами. Что такое управление? Осмелюсь суммировать это на два основных момента: мониторинг (получение) и настройка (установка). То есть: основные средства управления устройством людьми можно свести к двум операциям: получение и установка. Как показано на рисунке 1.

Рисунок 1. Базовая структура управления SNMP.

 1. SNMP

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

Что такое MIB?

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

Так как же организовать параметры на управляемом устройстве? В большинстве случаев существует очень много параметров, которые можно получить и установить, и если вы просто перечислите их линейно, операция будет очень неудобной. Представьте себе список 1000 параметров в виде таблицы, насколько сложно будет запросить такую ​​таблицу, когда вам нужно ее использовать? Например, если вы планируете найти на земле город «Итака», если нет классификации и классификации, вам нужно поискать огромную таблицу. Но если вы скажете вам, что город «Итака» это: северный город Гайаны в Южной Америке, «Итака», тогда это проще, не так ли?

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

В иерархии MIB идентификатор объекта однозначно определяет управляемый объект. Иерархическая структура MIB может быть описана как дерево без корневого имени, а уровень дерева разделен по разным организациям. Как показано ниже:

Рисунок 2. Дерево MIB

 2. MIB

Многие объекты, которыми можно управлять с помощью SNMP, определены организациями по стандартизации. Например, информация о системном диске представлена ​​OID «1.3.6.1.4.1.2021.9». Эта последовательность чисел согласовывается и определяется Международной организацией по стандартизации, и все должны ей следовать. Конечно, международные организации не могут предсказать будущее.Если устройство, которое вы хотите разработать, имеет некоторые требования к управлению, которые не были определены ни в одном RFC, вы также можете написать свой собственный файл MIB для определения частных объектов MIB.

Что такое ловушка SNMP

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

SNMP Trap является частью SNMP. Когда в отслеживаемом сегменте происходит определенное событие, это может быть проблема с производительностью или даже сбой интерфейса сетевого устройства. Агент отправит тревожное событие на станцию ​​управления. Если агент не уведомляет NMS заранее, когда происходит определенное событие, NMS должна постоянно опрашивать агента. Это очень расточительный метод использования вычислительных ресурсов, так же как люди используют прерывания для уведомления ЦП о прибытии данных вместо того, чтобы позволить ЦП опрашивать. Уведомление о ловушке - более разумный выбор.

Введение в NET-SNMP

В системах Linux мы можем выбрать net-snmp для выполнения большей части работы, связанной с SNMP.

NET-SNMP - это реализация протокола SNMP с открытым исходным кодом. Он поддерживает SNMP v1, SNMP v2c и SNMP v3 и может использовать IPV4 и IPV6. Он также содержит все связанные реализации ловушек SNMP. Net-snmp включает набор служебных программ snmp и полную библиотеку разработки snmp.

Пользователи могут использовать инструменты, предоставляемые net-snmp, для выполнения многих операций SNMP, в частности, включая следующие приложения командной строки:

Некоторые приложения можно использовать для получения данных от устройств, поддерживающих SNMP. Среди них snmpget и snmpgetnext могут поддерживать независимые запросы, например:

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