Changes between Initial Version and Version 1 of Examples3uSNMPv3Conf


Ignore:
Timestamp:
Aug 17, 2026, 2:48:55 PM (2 days ago)
Author:
roman_zhur
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Examples3uSNMPv3Conf

    v1 v1  
     1== Общая информация ==
     2
     3SNMP (Simple Network Management Protocol) - протокол для мониторинга и управления сетевым оборудованием. Он позволяет получать данные о состоянии устройства - метрики, аварии и статусы - и передавать их в систему мониторинга.
     4
     5В этой инструкции мы рассмотрим настройку SNMP на блоке MC04-DSL-3U с использованием версии протокола SNMPv3, обеспечивающей аутентификацию и шифрование передаваемых данных в отличие от SNMPv1/v2c, где для доступа используется только community string, передаваемая в открытом виде.
     6
     7В инструкции описаны:
     8 * настройка SNMP trapsink для отправки аварийных уведомлений (трапов) на SNMP-менеджер;
     9 * настройка SNMP-агента на блоке для приёма запросов от SNMP-менеджера;
     10 * настройка SNMP-менеджера на примере SnmpB для мониторинга блока через SNMP;
     11 * блокировка старых версий протокола SNMPv1 и SNMPv2c.
     12
     13== Настройка SNMP trapsink ==
     14
     15Откройте веб-интерфейс блока и перейдите на вкладку '''Мониторинг'''. Нажмите '''Добавить''', в появившемся окне выберите '''SNMP trapsink''' и нажмите '''ОК'''.
     16[[Image(01.png)]]
     17В окне конфигурации SNMP trapsink укажите следующие параметры:
     18 * '''Имя''' - произвольное имя для идентификации трапсинка.
     19 * '''Хост''' - домен или IP-адрес, на который {{{snmpd}}} будет отправлять трапы. В примере указан IP-адрес ПК.
     20 * '''Версия''' - версия 3, наиболее защищённая благодаря поддержке шифрования и аутентификации.
     21 * '''Security level''' - authPriv для аутентификации и полного шифрования отправляемых данных.
     22 * '''Auth protocol''' - используемая хеш-функция. Чем выше её криптографическая стойкость, тем лучше. В примере выбран SHA1, поскольку используемый SNMP-менеджер не поддерживает другие версии SHA. Вам рекомендуется выбирать максимальную версию SHA, которую поддерживает SNMP-менеджер, и избегать устаревшего и менее безопасного алгоритма MD5, учитывая при этом производительность системы.
     23 * '''Auth name''' - произвольное имя: уникальный идентификатор учётной записи, передаваемый в открытом виде.
     24 * '''Auth password''' - пароль аутентификации из 8 и более символов. В примере указан {{{12345678}}}.
     25 * '''Priv protocol''' - метод шифрования. Рекомендуется использовать AES как более стойкий алгоритм. (Используется AES128).
     26 * '''Priv password''' - пароль шифрования из 8 и более символов. В примере указан {{{qwertyui}}}.
     27
     28После заполнения параметров нажмите '''ОК'''.
     29
     30[[Image(02.png)]]
     31
     32Параметр '''Security level''' имеет три опции:
     33 * '''noAuthNoPriv''' - нет ни аутентификации, ни шифрования нет. Аналог SNMPv2c: пакеты передаются в открытом виде, аутентификация происходит только по имени пользователя, без пароля.
     34 * '''authNoPriv''' - есть аутентификация, нет шифрования. Отправитель проверяется по хэш-функции и паролю (ключу аутентификации), но данные (метрики) внутри пакета передаются в открытом виде.
     35 * '''authPriv''' - есть аутентификация и шифрование. Пакет подписывается паролем аутентификации, а всё его содержимое шифруется вторым паролем (ключом приватности).
     36
     37После сохранения настроек появится строка с созданным SNMP trapsink. Чтобы активировать трапсинк, установите чекбокс в столбце '''Активен'''.
     38[[Image(03.png)]]
     39== Настройка SNMP-агента ==
     40
     41Подключитесь по SSH к плате SW-01. Данные по умолчанию:
     42 * логин - {{{root}}};
     43 * пароль - {{{<пусто>}}}.
     44
     45В ответ на запрос {{{login as:}}} введите {{{root}}} и нажмите Enter. После появления строки {{{root@[IP-адрес]'s password:}}} нажмите Enter.
     46
     47Остановите SNMP-агент командой
     48{{{/etc/init.d/snmpd stop}}}
     49[[Image(04.png)]]
     50Для открытия файла в текстовом редакторе введите команду:
     51{{{vi /var/net-snmp/snmpd.conf}}}
     52
     53Добавьте в файл строку вида:
     54{{{createUser [имя пользователя] [протокол аутентификации] [пароль аутентификации] [протокол шифрования] [пароль шифрования]}}}
     55
     56Используйте данные из настроек SNMP-trapsink.
     57
     58>В данном примере для простоты настройки использован один USM-профиль для SNMP-trapsink и SNMP-агента. ''Но это необязательно''
     59>USM-профиль (User-based Security Model) состоит из имени пользователя, протокола и пароля аутентификации, протокола и пароля шифрования.
     60>
     61>'''Почему профили могут различаться'''
     62>Для SNMP-trapsink и SNMP-агента можно использовать разные USM-профили:
     63>- '''Trapsink''' - учётные данные, с которыми агент отправляет трапы менеджеру. Они определяют, как трап будет подписан и зашифрован на исходящей стороне.
     64>- '''createUser + rwuser/rouser''' на агенте - учётные данные, с которыми менеджер опрашивает агента с помощью запросов GET/SET. Это входящее направление, не зависящее от отправки трапов.
     65>
     66>Таким образом, можно создать двух разных пользователей: одного - только для трапов, другого - только для опроса. У них могут быть разные пароли и протоколы. Технически это два отдельных USM-пользователя, каждый из которых создаётся своей строкой {{{createUser}}}.
     67>
     68>Единственное, что должно совпадать, параметры USM-профиля для агента и для менеджера.
     69>- Для trapsink: параметры (имя, протоколы, пароли), заданные в конфиге блока, должны совпадать с тем, что настроено в SNMP-менеджере для приёма трапов от этого пользователя, иначе менеджер не сможет проверить подпись/расшифровать трап.
     70>- Для опроса: параметры пользователя в {{{createUser}}}/{{{rwuser}}} на агенте должны совпадать с тем, что менеджер использует при отправке GET/SET-запросов, иначе агент отклонит запрос.
     71
     72Для перехода в vi в ''режим ввода'' нажмите клавишу {{{i}}}.
     73
     74Для примера напишем:
     75{{{createUser grs2_snmp SHA 12345678 AES qwertyui}}}
     76
     77Для возврата в ''обычный режим'' нажмите {{{ESC}}}, затем введите {{{:wq}}} ''(с двоеточием)'', чтобы сохранить файл и выйти.
     78
     79>Небольшая справка по vi:
     80>- Обычный режим - перемещение по файлу, стирание текста и другие редактирующие функции.
     81>       - Клавиша {{{Esc}}}.
     82>- Режим ввода - ввод текста.
     83>       - Для перехода из ''обычного режима'' нажать клавишу {{{i}}} или {{{Insert}}}.
     84> - {{{:q}}} - набрать на клавиатуре в ''обычном режиме'' для выхода из редактора.
     85> - {{{:q!}}} - набрать на клавиатуре в ''обычном режиме'' для выхода из редактора без сохранения изменений.
     86> - {{{:wq}}} - набрать на клавиатуре в ''обычном режиме'' для выхода из редактора c сохранением файла.
     87> - {{{-}}} в левом нижнем углу означает ''обычный режим''.
     88> - {{{I}}} в левом нижнем углу означает ''режим ввода''.
     89
     90[[Image(05.png)]]
     91
     92> Касательно предупреждения "Do not edit this file". Единственное изменение, которое можно вносить в этот файл, это создание юзера, о чем написано в предпоследней строчке самого предупреждения.
     93> Чтобы {{{snmpd}}} не стёр внесенные изменения, мы и остановили {{{snmpd}}}. Если открыть этот файл заново после запуска {{{snmpd}}}, то строка {{{creatUser <...>}}} закодируется для безопасности.
     94
     95Новому пользователю необходимо назначить права. Введите команду:
     96{{{vi /etc/snmp/snmpd.conf}}}
     97
     98Добавьте в файл строку вида:
     99{{{[rw/ro]user [имя пользователя] [noauth|auth|priv]}}}
     100где:
     101 * {{{rwuser}}} - пользователь с правами на чтение и запись;
     102 * {{{rouser}}} - пользователь с правами только на чтение;
     103 * {{{[noauth|auth|priv]}}} - минимальный уровень безопасности:
     104         * {{{noauth}}} - разрешает запросы уровней {{{noauth}}}, {{{auth}}} и {{{priv}}};
     105         * {{{auth}}} - разрешает {{{auth}}} и {{{priv}}}, но отклоняет {{{noauth}}};
     106         * {{{priv}}} - разрешает только {{{priv}}}.
     107
     108Для примера добавим строку:
     109{{{rwuser grs2_snmp priv}}}
     110
     111Без указания дополнительных параметров директива {{{rwuser}}} ({{{rouser}}}) по умолчанию обеспечивает пользователю доступ к полному дереву OID с использованием контекста по умолчанию. ''Дополнительная информация: [http://www.net-snmp.org/docs/man/snmpd.conf.html Manpage of SNMPD.CONF].''
     112[[Image(06.png)]]
     113После создания пользователя и назначения прав запустите {{{snmpd}}} командой:
     114{{{/etc/init.d/snmpd start}}}
     115----
     116Другие уровни безопасности:
     117 * '''authPriv''' - проверка подлинности источника сообщения и целостности данных и шифрование данных
     118         * в файле {{{/var/net-snmp/snmpd.conf}}} написать {{{createUser [имя пользователя] [протокол аутентификации] [пароль аутентификации] [протокол шифрования] [пароль шифрования]}}}.
     119         * в файле {{{/etc/snmp/snmpd.conf}}} написать {{{[rw/ro]user [имя пользователя] priv}}}
     120 * '''authNoPriv''' - проверка подлинности источника сообщения и целостности данных, данные в открытом виде
     121         * в файле {{{/var/net-snmp/snmpd.conf}}} написать строку {{{createUser [имя пользователя] [протокол аутентификации] [пароль аутентификации]}}}.
     122         * в файле {{{/etc/snmp/snmpd.conf}}} написать {{{[rw/ro]user [имя пользователя] auth}}}
     123 * '''noAuthNoPriv''' - нет шифрования
     124         * в файле {{{/var/net-snmp/snmpd.conf}}} написать {{{createUser [имя пользователя]}}}.
     125         * в файле {{{/etc/snmp/snmpd.conf}}} написать {{{[rw/ro]user [имя пользователя] noauth}}}
     126== Настройка SNMP-менеджера ==
     127'''на примере программы SnmpB v0.8'''
     128
     129Настройка графических SNMP-менеджеров в целом однотипна и включает три шага:
     130 * добавление собственных MIB-файлов;
     131 * настройку данных аутентификации и шифрования (добавление USM-профиля);
     132 * сопоставление конкретного хоста с USM-профилем.
     133=== Добавление MIB-файлов ===
     134
     135Вернитесь в веб-интерфейс блока, откройте вкладку '''Мониторинг''' и скачайте MIB-файлы.
     136[[Image(07.png)]]
     137Нажмите '''Скачать MIB блока'''. Откроется файл {{{mib.txt}}}. Выделите весь текст с помощью {{{Ctrl-A}}}, вставьте его в текстовый файл и переименуйте файл в {{{ADC-MIB}}}. Расширение зависит от формата, используемого SNMP-менеджером, но обычно MIB-файлы хранятся без расширения.
     138
     139При нажатии '''Скачать ADC-MIB''' откроется файл {{{adc-mib.txt}}}. Таким же способом скопируйте его содержимое в текстовый файл и переименуйте полученный файл в {{{M3U9999-MIB}}}.
     140
     141Полученные файлы переместите в папку SNMP-менеджера, где хранятся его MIB-файлы. Для SnmpB путь выглядит так: {{{C:\Program Files (x86)\SnmpB\mibs}}}
     142
     143На вкладке '''Modules''' в SnmpB слева отображаются MIB-файлы, обнаруженные в каталоге по умолчанию, а справа - загруженные файлы, доступные на вкладке '''Tree'''. Перенесите {{{ADC-MIB}}} и {{{M3U9999-MIB}}} из списка доступных файлов в список загруженных.
     144[[Image(08.png)]]
     145
     146> Каждый блок MC04-DSL-3U формирует собственный MIB-файл в зависимости от установленных плат, однако все переменные находятся в одном корневом OID. Поэтому при загрузке MIB нескольких блоков возможен конфликт: один и тот же OID, например {{{.1.3.6.1.4.1.32109.9999.4.5.6.0}}}, в разных блоках может соответствовать переменным разных типов. В таком случае менеджер откажется работать с этими MIB.
     147>
     148> Чтобы избежать конфликта, назначьте блоку отдельный корневой OID. На вкладке '''Мониторинг''' можно изменить последний элемент корневого OID: значение по умолчанию - 9999, допустимый диапазон - 1–65535. Например, при значении 8888 получится уникальный OID {{{.1.3.6.1.4.1.32109.8888.4.5.6.0}}}, который не пересекается с OID других блоков.
     149=== Добавление USM-профиля ===
     150
     151Выберите пункт меню {{{Options -> Manage SNMPv3 USM Profiles...}}}, чтобы открыть окно '''USM Profiles'''. Щёлкните правой кнопкой мыши в левой области окна и выберите {{{New USM Profile}}}. Заполните поля в соответствии с настройками SNMP-trapsink и SNMP-агента.
     152[[Image(09.png)]]
     153На вкладке '''Discovery''' измените '''Discovery range''' на '''IP network''', в поле '''From address''' укажите IP-адрес SW-01 (если в вашей сети много блоков, то так же следует указать и '''To address'''). Справа снимите чекбоксы SNMPv1 и SNMPv2c, после чего нажмите кнопку '''Discover'''.
     154
     155В нижней части окна должен появиться IP-адрес SW-01. Щёлкните по нему правой кнопкой мыши, выберите '''Add agent(s) to profile list''', а затем нажмите кнопку настроек в разделе '''Use settings from SNMP Agent profile'''.
     156[[Image(10.png)]]
     157
     158В окне '''Agent Profiles''' раскройте список под IP-адресом SW-01 или его именем, например {{{sw01}}}. В подменю '''SnmpV3''' выберите '''Security name''', созданный на предыдущем этапе в '''USM Profiles''', и нужный '''Security Level'''.
     159[[Image(11.png)]]
     160На этом настройка SNMP-менеджера завершена.
     161----
     162В SnmpB настройки иногда не применяются «на лету» и требуют перезапуска приложения. После перезапуска SnmpB или блока MC04-DSL-3U может потребоваться повторная процедура Discover для синхронизации EngineID между SNMP-менеджером и SNMP-агентом. На вкладке '''Discovery''' заполните поле '''IP networks - From address''' и нажмите '''Discover'''.
     163=== Проверка работы SNMP ===
     164
     165==== SNMP-агент ====
     166Перейдем на вкладку '''Tree''' и попробуем выполнить команду {{{Get}}}.
     167Как видно в окне '''Query Results''', запрос успешно выполнен, данные OID отобразились.
     168[[Image(12.png)]]
     169==== SNMP trapsink ====
     170SNMP-агент отправляет trapsink, когда есть авария либо она завершилась.
     171Для проверки в блоке MC04-DSL-3U вызовем аварию, например, активировав поток E1 на плате E1-08 и сняв чекбокс "маска".
     172На вкладке '''Traps''' видны пришедшие трапсинки.
     173[[Image(13.png)]]
     174== Блокировка SNMP v1 и v2c ==
     175
     176Для дополнительной защиты вам может понадобиться полностью отключить возможность подключения по устаревшим версиям протокола - SNMP v1 и SNMPv2c, поскольку аутентификация в них ограничивается community string, передаваемой в открытом виде.
     177
     178В net-snmp доступ по v1/v2c включается директивой {{{com2sec}}} (и {{{com2sec6}}} для IPv6) в файле {{{/etc/snmp/snmpd.conf}}}, которая сопоставляет community string с внутренним именем пользователя. Если такой записи нет, агент отклоняет запросы по v1/v2c ещё на этапе аутентификации, до обращения к группам и правам доступа. Директивы {{{group}}} и {{{access}}}, использующие модели {{{v1}}}/{{{v2c}}}, при этом становятся неиспользуемыми и не влияют на работу SNMPv3, для которого имена пользователей приходят из {{{createUser}}}, а не через {{{com2sec}}}.
     179
     180Перед изменением конфига можно сделать резервную копию файла командой:
     181{{{cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak}}}
     182
     183Откройте файл командой: 
     184{{{vi /etc/snmp/snmpd.conf}}}
     185
     186В конфигурации по умолчанию за доступ по v1/v2c отвечают строки вида:
     187{{{
     188com2sec local     127.0.0.1  private
     189com2sec readonly  default    public
     190com2sec6 readwrite default    public
     191}}}
     192
     193Закомментируйте эти строки, добавив символ {{{#}}} в начало каждой из них:
     194[[Image(14.png)]]
     195Строки {{{group <...>}}} и связанные с ними записи {{{access}}} можно оставить без изменений, так как без соответствующих записей {{{com2sec}}} они не задействуются.
     196
     197Сохраните изменения в файле ({{{Esc -> :wq}}}) и перезапустите {{{snmpd}}} командой:
     198{{{/etc/init.d/snmpd restart}}}
     199
     200После перезапуска доступ по SNMPv1 и SNMPv2c будет заблокирован.
     201
     202Проверим это, попытавшись выполнить команду {{{snmpget}}} с параметрами {{{-v:1}}} и {{{-v:2c}}}:
     203[[Image(15.png)]]
     204Как видно на скриншоте, после изменения файла ответы на SNMP-запросы v1 и v2c действительно перестали приходить.
     205== Результат настройки ==
     206
     207Теперь блок MC04-DSL-3U готов к работе с системой мониторинга по SNMPv3. SNMP-агент принимает защищённые запросы, а SNMP-trapsink передаёт в SnmpB уведомления о возникновении и завершении аварий. Загруженные MIB-файлы позволяют просматривать параметры оборудования в понятном виде и обращаться к нужным OID.
     208
     209Использование USM-профиля с аутентификацией и шифрованием защищает данные во время обмена между блоком и SNMP-менеджером. Отключение SNMPv1 и SNMPv2c при этом исключает подключение по устаревшим версиям протокола, в которых community string передаётся в открытом виде.
     210