wiki:Examples3uSNMPv3Conf

Version 1 (modified by roman_zhur, 2 days ago) ( diff )

--

Общая информация

SNMP (Simple Network Management Protocol) - протокол для мониторинга и управления сетевым оборудованием. Он позволяет получать данные о состоянии устройства - метрики, аварии и статусы - и передавать их в систему мониторинга.

В этой инструкции мы рассмотрим настройку SNMP на блоке MC04-DSL-3U с использованием версии протокола SNMPv3, обеспечивающей аутентификацию и шифрование передаваемых данных в отличие от SNMPv1/v2c, где для доступа используется только community string, передаваемая в открытом виде.

В инструкции описаны:

  • настройка SNMP trapsink для отправки аварийных уведомлений (трапов) на SNMP-менеджер;
  • настройка SNMP-агента на блоке для приёма запросов от SNMP-менеджера;
  • настройка SNMP-менеджера на примере SnmpB для мониторинга блока через SNMP;
  • блокировка старых версий протокола SNMPv1 и SNMPv2c.

Настройка SNMP trapsink

Откройте веб-интерфейс блока и перейдите на вкладку Мониторинг. Нажмите Добавить, в появившемся окне выберите SNMP trapsink и нажмите ОК. В окне конфигурации SNMP trapsink укажите следующие параметры:

  • Имя - произвольное имя для идентификации трапсинка.
  • Хост - домен или IP-адрес, на который snmpd будет отправлять трапы. В примере указан IP-адрес ПК.
  • Версия - версия 3, наиболее защищённая благодаря поддержке шифрования и аутентификации.
  • Security level - authPriv для аутентификации и полного шифрования отправляемых данных.
  • Auth protocol - используемая хеш-функция. Чем выше её криптографическая стойкость, тем лучше. В примере выбран SHA1, поскольку используемый SNMP-менеджер не поддерживает другие версии SHA. Вам рекомендуется выбирать максимальную версию SHA, которую поддерживает SNMP-менеджер, и избегать устаревшего и менее безопасного алгоритма MD5, учитывая при этом производительность системы.
  • Auth name - произвольное имя: уникальный идентификатор учётной записи, передаваемый в открытом виде.
  • Auth password - пароль аутентификации из 8 и более символов. В примере указан 12345678.
  • Priv protocol - метод шифрования. Рекомендуется использовать AES как более стойкий алгоритм. (Используется AES128).
  • Priv password - пароль шифрования из 8 и более символов. В примере указан qwertyui.

После заполнения параметров нажмите ОК.

Параметр Security level имеет три опции:

  • noAuthNoPriv - нет ни аутентификации, ни шифрования нет. Аналог SNMPv2c: пакеты передаются в открытом виде, аутентификация происходит только по имени пользователя, без пароля.
  • authNoPriv - есть аутентификация, нет шифрования. Отправитель проверяется по хэш-функции и паролю (ключу аутентификации), но данные (метрики) внутри пакета передаются в открытом виде.
  • authPriv - есть аутентификация и шифрование. Пакет подписывается паролем аутентификации, а всё его содержимое шифруется вторым паролем (ключом приватности).

После сохранения настроек появится строка с созданным SNMP trapsink. Чтобы активировать трапсинк, установите чекбокс в столбце Активен.

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

Подключитесь по SSH к плате SW-01. Данные по умолчанию:

  • логин - root;
  • пароль - <пусто>.

В ответ на запрос login as: введите root и нажмите Enter. После появления строки root@[IP-адрес]'s password: нажмите Enter.

Остановите SNMP-агент командой /etc/init.d/snmpd stop Для открытия файла в текстовом редакторе введите команду: vi /var/net-snmp/snmpd.conf

Добавьте в файл строку вида: createUser [имя пользователя] [протокол аутентификации] [пароль аутентификации] [протокол шифрования] [пароль шифрования]

Используйте данные из настроек SNMP-trapsink.

В данном примере для простоты настройки использован один USM-профиль для SNMP-trapsink и SNMP-агента. Но это необязательно USM-профиль (User-based Security Model) состоит из имени пользователя, протокола и пароля аутентификации, протокола и пароля шифрования.

Почему профили могут различаться Для SNMP-trapsink и SNMP-агента можно использовать разные USM-профили:

  • Trapsink - учётные данные, с которыми агент отправляет трапы менеджеру. Они определяют, как трап будет подписан и зашифрован на исходящей стороне.
  • createUser + rwuser/rouser на агенте - учётные данные, с которыми менеджер опрашивает агента с помощью запросов GET/SET. Это входящее направление, не зависящее от отправки трапов.

Таким образом, можно создать двух разных пользователей: одного - только для трапов, другого - только для опроса. У них могут быть разные пароли и протоколы. Технически это два отдельных USM-пользователя, каждый из которых создаётся своей строкой createUser.

Единственное, что должно совпадать, параметры USM-профиля для агента и для менеджера.

  • Для trapsink: параметры (имя, протоколы, пароли), заданные в конфиге блока, должны совпадать с тем, что настроено в SNMP-менеджере для приёма трапов от этого пользователя, иначе менеджер не сможет проверить подпись/расшифровать трап.
  • Для опроса: параметры пользователя в createUser/rwuser на агенте должны совпадать с тем, что менеджер использует при отправке GET/SET-запросов, иначе агент отклонит запрос.

Для перехода в vi в режим ввода нажмите клавишу i.

Для примера напишем: createUser grs2_snmp SHA 12345678 AES qwertyui

Для возврата в обычный режим нажмите ESC, затем введите :wq (с двоеточием), чтобы сохранить файл и выйти.

Небольшая справка по vi:

  • Обычный режим - перемещение по файлу, стирание текста и другие редактирующие функции.
    • Клавиша Esc.
  • Режим ввода - ввод текста.
    • Для перехода из обычного режима нажать клавишу i или Insert.
  • :q - набрать на клавиатуре в обычном режиме для выхода из редактора.
  • :q! - набрать на клавиатуре в обычном режиме для выхода из редактора без сохранения изменений.
  • :wq - набрать на клавиатуре в обычном режиме для выхода из редактора c сохранением файла.
  • - в левом нижнем углу означает обычный режим.
  • I в левом нижнем углу означает режим ввода.

Касательно предупреждения "Do not edit this file". Единственное изменение, которое можно вносить в этот файл, это создание юзера, о чем написано в предпоследней строчке самого предупреждения. Чтобы snmpd не стёр внесенные изменения, мы и остановили snmpd. Если открыть этот файл заново после запуска snmpd, то строка creatUser <...> закодируется для безопасности.

Новому пользователю необходимо назначить права. Введите команду: vi /etc/snmp/snmpd.conf

Добавьте в файл строку вида: [rw/ro]user [имя пользователя] [noauth|auth|priv] где:

  • rwuser - пользователь с правами на чтение и запись;
  • rouser - пользователь с правами только на чтение;
  • [noauth|auth|priv] - минимальный уровень безопасности:
    • noauth - разрешает запросы уровней noauth, auth и priv;
    • auth - разрешает auth и priv, но отклоняет noauth;
    • priv - разрешает только priv.

Для примера добавим строку: rwuser grs2_snmp priv

Без указания дополнительных параметров директива rwuser (rouser) по умолчанию обеспечивает пользователю доступ к полному дереву OID с использованием контекста по умолчанию. Дополнительная информация: Manpage of SNMPD.CONF. После создания пользователя и назначения прав запустите snmpd командой: /etc/init.d/snmpd start


Другие уровни безопасности:

  • authPriv - проверка подлинности источника сообщения и целостности данных и шифрование данных
    • в файле /var/net-snmp/snmpd.conf написать createUser [имя пользователя] [протокол аутентификации] [пароль аутентификации] [протокол шифрования] [пароль шифрования].
    • в файле /etc/snmp/snmpd.conf написать [rw/ro]user [имя пользователя] priv
  • authNoPriv - проверка подлинности источника сообщения и целостности данных, данные в открытом виде
    • в файле /var/net-snmp/snmpd.conf написать строку createUser [имя пользователя] [протокол аутентификации] [пароль аутентификации].
    • в файле /etc/snmp/snmpd.conf написать [rw/ro]user [имя пользователя] auth
  • noAuthNoPriv - нет шифрования
    • в файле /var/net-snmp/snmpd.conf написать createUser [имя пользователя].
    • в файле /etc/snmp/snmpd.conf написать [rw/ro]user [имя пользователя] noauth

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

на примере программы SnmpB v0.8

Настройка графических SNMP-менеджеров в целом однотипна и включает три шага:

  • добавление собственных MIB-файлов;
  • настройку данных аутентификации и шифрования (добавление USM-профиля);
  • сопоставление конкретного хоста с USM-профилем.

Добавление MIB-файлов

Вернитесь в веб-интерфейс блока, откройте вкладку Мониторинг и скачайте MIB-файлы. Нажмите Скачать MIB блока. Откроется файл mib.txt. Выделите весь текст с помощью Ctrl-A, вставьте его в текстовый файл и переименуйте файл в ADC-MIB. Расширение зависит от формата, используемого SNMP-менеджером, но обычно MIB-файлы хранятся без расширения.

При нажатии Скачать ADC-MIB откроется файл adc-mib.txt. Таким же способом скопируйте его содержимое в текстовый файл и переименуйте полученный файл в M3U9999-MIB.

Полученные файлы переместите в папку SNMP-менеджера, где хранятся его MIB-файлы. Для SnmpB путь выглядит так: C:\Program Files (x86)\SnmpB\mibs

На вкладке Modules в SnmpB слева отображаются MIB-файлы, обнаруженные в каталоге по умолчанию, а справа - загруженные файлы, доступные на вкладке Tree. Перенесите ADC-MIB и M3U9999-MIB из списка доступных файлов в список загруженных.

Каждый блок MC04-DSL-3U формирует собственный MIB-файл в зависимости от установленных плат, однако все переменные находятся в одном корневом OID. Поэтому при загрузке MIB нескольких блоков возможен конфликт: один и тот же OID, например .1.3.6.1.4.1.32109.9999.4.5.6.0, в разных блоках может соответствовать переменным разных типов. В таком случае менеджер откажется работать с этими MIB.

Чтобы избежать конфликта, назначьте блоку отдельный корневой OID. На вкладке Мониторинг можно изменить последний элемент корневого OID: значение по умолчанию - 9999, допустимый диапазон - 1–65535. Например, при значении 8888 получится уникальный OID .1.3.6.1.4.1.32109.8888.4.5.6.0, который не пересекается с OID других блоков.

Добавление USM-профиля

Выберите пункт меню Options -> Manage SNMPv3 USM Profiles..., чтобы открыть окно USM Profiles. Щёлкните правой кнопкой мыши в левой области окна и выберите New USM Profile. Заполните поля в соответствии с настройками SNMP-trapsink и SNMP-агента. На вкладке Discovery измените Discovery range на IP network, в поле From address укажите IP-адрес SW-01 (если в вашей сети много блоков, то так же следует указать и To address). Справа снимите чекбоксы SNMPv1 и SNMPv2c, после чего нажмите кнопку Discover.

В нижней части окна должен появиться IP-адрес SW-01. Щёлкните по нему правой кнопкой мыши, выберите Add agent(s) to profile list, а затем нажмите кнопку настроек в разделе Use settings from SNMP Agent profile. No image "10.png" attached to Examples3uSNMPv3Conf

В окне Agent Profiles раскройте список под IP-адресом SW-01 или его именем, например sw01. В подменю SnmpV3 выберите Security name, созданный на предыдущем этапе в USM Profiles, и нужный Security Level. No image "11.png" attached to Examples3uSNMPv3Conf На этом настройка SNMP-менеджера завершена.


В SnmpB настройки иногда не применяются «на лету» и требуют перезапуска приложения. После перезапуска SnmpB или блока MC04-DSL-3U может потребоваться повторная процедура Discover для синхронизации EngineID между SNMP-менеджером и SNMP-агентом. На вкладке Discovery заполните поле IP networks - From address и нажмите Discover.

Проверка работы SNMP

SNMP-агент

Перейдем на вкладку Tree и попробуем выполнить команду Get. Как видно в окне Query Results, запрос успешно выполнен, данные OID отобразились. No image "12.png" attached to Examples3uSNMPv3Conf

SNMP trapsink

SNMP-агент отправляет trapsink, когда есть авария либо она завершилась. Для проверки в блоке MC04-DSL-3U вызовем аварию, например, активировав поток E1 на плате E1-08 и сняв чекбокс "маска". На вкладке Traps видны пришедшие трапсинки. No image "13.png" attached to Examples3uSNMPv3Conf

Блокировка SNMP v1 и v2c

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

В net-snmp доступ по v1/v2c включается директивой com2seccom2sec6 для IPv6) в файле /etc/snmp/snmpd.conf, которая сопоставляет community string с внутренним именем пользователя. Если такой записи нет, агент отклоняет запросы по v1/v2c ещё на этапе аутентификации, до обращения к группам и правам доступа. Директивы group и access, использующие модели v1/v2c, при этом становятся неиспользуемыми и не влияют на работу SNMPv3, для которого имена пользователей приходят из createUser, а не через com2sec.

Перед изменением конфига можно сделать резервную копию файла командой: cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak

Откройте файл командой: vi /etc/snmp/snmpd.conf

В конфигурации по умолчанию за доступ по v1/v2c отвечают строки вида:

com2sec local     127.0.0.1  private
com2sec readonly  default    public
com2sec6 readwrite default    public

Закомментируйте эти строки, добавив символ # в начало каждой из них: No image "14.png" attached to Examples3uSNMPv3Conf Строки group <...> и связанные с ними записи access можно оставить без изменений, так как без соответствующих записей com2sec они не задействуются.

Сохраните изменения в файле (Esc -> :wq) и перезапустите snmpd командой: /etc/init.d/snmpd restart

После перезапуска доступ по SNMPv1 и SNMPv2c будет заблокирован.

Проверим это, попытавшись выполнить команду snmpget с параметрами -v:1 и -v:2c: No image "15.png" attached to Examples3uSNMPv3Conf Как видно на скриншоте, после изменения файла ответы на SNMP-запросы v1 и v2c действительно перестали приходить.

Результат настройки

Теперь блок MC04-DSL-3U готов к работе с системой мониторинга по SNMPv3. SNMP-агент принимает защищённые запросы, а SNMP-trapsink передаёт в SnmpB уведомления о возникновении и завершении аварий. Загруженные MIB-файлы позволяют просматривать параметры оборудования в понятном виде и обращаться к нужным OID.

Использование USM-профиля с аутентификацией и шифрованием защищает данные во время обмена между блоком и SNMP-менеджером. Отключение SNMPv1 и SNMPv2c при этом исключает подключение по устаревшим версиям протокола, в которых community string передаётся в открытом виде.

Attachments (15)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.