Как установить и настроить демон и клиент SNMP в Ubuntu 14.04

Вступление

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

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

В нашем последнем руководстве мы узнали об основах протокола SNMP https://www.digitalocean.com/community/tutorials/an-introduction-to-snmp-simple-network-management-protocol. В этом руководстве мы начнем демонстрировать, как настроить инструменты для связи с использованием SNMP. Мы будем использовать два сервера Ubuntu 14.04 для демонстрации, но большинство других систем должны быть в состоянии следовать с некоторыми изменениями.

Установите демон и утилиты SNMP

Мы можем начать исследовать, как SNMP может быть реализован в системе, установив демон и инструменты в некоторых системах Ubuntu.

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

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

sudo apt-get update
sudo apt-get install snmp snmp-mibs-downloader

На нашем втором сервере, с которым мы будем взаимодействовать, будет запущен демон, мы можем установить необходимые компоненты, набрав:

sudo apt-get update
sudo apt-get install snmpd

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

Настройка SNMP Manager

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

Откройте файл + / etc / snmp / snmpd.conf в текстовом редакторе с правами sudo:

sudo nano /etc/snmp/snmp.conf

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

mibs :

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

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

Настройка машины агента SNMP

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

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

sudo nano /etc/snmp/snmpd.conf

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

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

#  Listen for connections from the local system only
agentAddress  udp:127.0.0.1:161
#  Listen for connections on all interfaces (both IPv4 *and* IPv6)

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

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

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

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

createUser bootstrap MD5 temp_password DES

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

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

Для наших целей обе наши строки будут довольно простыми:

rwuser bootstrap priv
rwuser  priv

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

Чтобы реализовать эти изменения, перезапустите сервис + snmpd +:

sudo service snmpd restart

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

Мы сделаем это с помощью инструмента + snmpusm +, который используется для управления пользователями. Вам необходимо знать IP-адрес вашего сервера агента, чтобы это работало правильно.

Прежде чем мы начнем, мы немного поговорим об общей структуре отправки команды SNMP.

Общая структура команд SNMP

При использовании набора инструментов, включенного в пакет + snmp + (программный пакет + net-snmp +), вы заметите несколько шаблонов в способе, которым вы должны вызывать команды.

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

  • * -v VERSION *: Этот флаг используется для указания версии протокола SNMP, которую вы хотели бы использовать. Мы будем использовать v3 в этом руководстве.

  • * -c СООБЩЕСТВО *: Этот флаг используется, если вы используете для аутентификации строки сообщества в стиле SNMP v1 или v2. Поскольку мы используем аутентификацию на основе пользователей в стиле v3, она нам не понадобится.

  • * -u ИМЯ ПОЛЬЗОВАТЕЛЯ *: Этот параметр используется для указания имени пользователя, под которым вы хотите пройти аутентификацию. Чтобы прочитать или изменить что-либо с использованием SNMP, вы должны пройти аутентификацию с известным именем пользователя.

  • * -l LEVEL *: используется для указания уровня безопасности, с которым вы подключаетесь. Возможные значения: «+ noAuthNoPriv » для отсутствия аутентификации и шифрования, « authNoPriv » для аутентификации, но без шифрования и « authPriv +» для аутентификации и шифрования. Используемое имя пользователя должно быть настроено для работы на указанном вами уровне безопасности, иначе аутентификация не будет успешной.

  • * -a PROTOCOL *: Этот параметр используется для указания используемого протокола authentication. Возможные значения: + MD5 + или + SHA +. Это должно соответствовать информации, которая была указана при создании пользователя.

  • * -x PROTOCOL *: Этот параметр используется для указания используемого протокола encryption. Возможные значения: + DES + или + AES +. Это должно соответствовать информации, которая была указана при создании пользователя. Это необходимо всякий раз, когда в спецификации привилегий пользователя стоит + priv +, что делает шифрование обязательным.

  • * -A PASSPHRASE *: используется для ввода идентификационной фразы аутентификации, которая была указана при создании пользователя.

  • * -X PASSPHRASE *: это кодовая фраза шифрования, которая была указана при создании пользователя. Если ничего не было указано, но был задан алгоритм шифрования, будет использована идентификационная фраза аутентификации. Это требуется, когда задан параметр + -x + или когда в спецификации привилегий пользователя есть + priv + после него, что требует шифрования.

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

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

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

snmpget -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password  1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0 = STRING: Linux target 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64

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

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

Настройка учетной записи обычного пользователя

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

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

snmpusm   create

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

Команда будет выглядеть так:

snmpusm -u bootstrap -l authPriv -a MD5 -x DES -A temp_password -X temp_password  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  passwd temp_password

Вы должны получить следующее сообщение:

SNMPv3 Key(s) successfully changed.

Мы можем проверить наши новые учетные данные и пароль, спросив наш удаленный сервер, как долго работает служба SNMP. Мы будем использовать команду + snmpget +, чтобы получить одно значение с другого компьютера.

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

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

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

DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (383018) 1:03:50.18

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

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

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

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

sudo nano /etc/snmp/snmp.conf

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

mkdir ~/.snmp
cd ~/.snmp
nano snmp.conf

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

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

Command Flag Description Translated snmp.conf directive

-u

The SNMPv3 username to authenticate as.

defSecurityName

-l authPriv

The security level to authenticate with.

defSecurityLevel authPriv

-a MD5

The authentication protocol to use.

defAuthType MD5

-x DES

The privacy (encryption) protocol to use.

defPrivType DES

-A

The authentication passphrase for the supplied username.

defAuthPassphrase

-X

The privacy passphrase fro the supplied username.

defPrivPassphrase

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

defSecurityName demo
defSecurityLevel authPriv
defAuthType MD5
defPrivType DES
defAuthPassphrase
defPrivPassphrase

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

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

Вместо ввода:

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

Мы можем просто напечатать:

snmpget  sysUpTime.0

Как видите, это значительно сокращает объем информации, который мы должны предоставить при каждом запросе.

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

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

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

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

createUser bootstrap MD5 temp_password DES
rwuser bootstrap priv

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

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

sudo service snmpd restart

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

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

snmpusm  delete bootstrap

Вы получите следующий ответ:

User successfully deleted.

Заключение

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

В следующем руководстве мы рассмотрим некоторые из https://www.digitalocean.com/community/tutorials/how-to-use-the-net-snmp-tool-suite-to-manage-and-monitor- серверы [основное использование инструментов net-snmp], с которыми мы работали. Мы покажем, как извлекать значения по одному или навалом и как изменять данные.

Related