| | 1 | == Общая информация == |
| | 2 | |
| | 3 | SNMP (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 ==== |
| | 170 | SNMP-агент отправляет 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 | {{{ |
| | 188 | com2sec local 127.0.0.1 private |
| | 189 | com2sec readonly default public |
| | 190 | com2sec6 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 | |