Перейти к содержанию

Настройка SNMP v1/v2c и v3

SNMP – протокол для сбора информации с сетевых устройств и отправки уведомлений об критических событиях. Используется сервером управления (NMS) для опроса коммутаторов, маршрутизаторов и других устройств по UDP-портам 161 (опрос) и 162 (trap).

Три версии протокола обеспечивают разные уровни безопасности:

  • SNMPv1 и v2c передают данные в открытом виде с защитой только по имени сообщества;
  • SNMPv3 добавляет аутентификацию и шифрование.

В этой статье рассмотрена настройка как простых версий (v1/v2c) для небольших сетей, так и защищённой версии (v3) для продакшена.

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

  • Доступ к CLI устройства (коммутатор, маршрутизатор, NMS-сервер).
  • ПО версии S2158-5.4.0 или выше.
  • IP-адреса всех участников (агента SNMP, сервера NMS).
  • Сетевая связность между агентом и менеджером на портах UDP 161, 162.
  • Для SNMPv3 дополнительно требуются пароли аутентификации и шифрования (минимум 8 символов каждый).

Основная информация о применяемых технологиях

Сравнение версий SNMP

Параметр SNMPv1 SNMPv2c SNMPv3
Аутентификация Community-строка Community-строка Пользователь + пароль
Шифрование Нет Нет DES/3DES/AES
Безопасность Минимальная Минимальная Высокая
Уровень доступа Нет Нет noAuth, authNoPriv, authPriv

Community-строки (SNMPv1 и SNMPv2c)

Community – текстовый пароль, отправляемый в открытом виде в каждом пакете SNMP. Использует две основные строки:

  • public – только для чтения (read-only), стандартное имя.
  • private – для чтения и записи (read-write).

Пакеты с неправильной community-строкой отклоняются, но перехватываются в открытом виде. Community ограничивается по IP-адресу источника (например, только с подсети 10.0.0.0/24). Для v2c также поддерживаются произвольные имена сообществ (например, com1, monitoring).

SNMPv3 Engine ID - уникальный идентификатор агента

Engine ID – 10–64 символа в шестнадцатеричном формате, уникально идентифицирует SNMP-агент на устройстве (RFC 3411). Стандарт требует engine ID на каждом устройстве, участвующем в SNMPv3.

Структура Engine ID (на примере 800007e5017f000001):

  • Байты 1–4 (8000 07e5) – enterprise number в формате big-endian (первый бит = 1, остаток = номер организации). Пример: 0x07e5 = 2021 в десятичной системе.
  • Байт 5 (01) – тип идентификатора: 01 = IPv4-адрес, 02 = IPv6-адрес, 03 = MAC-адрес, 04 = текстовая строка, 05 = произвольные октеты.
  • Байты 6+ (7f00 0001) – значение идентификатора. В примере: 7f.00.00.01 = IP-адрес 127.0.0.1.

Назначение Engine ID Engine ID устанавливается командой snmp-server engine-id local <hex> перед созданием пользователей SNMPv3. При изменении engine ID все существующие пользователи v3 удаляются автоматически. Если engine ID не задан вручную, система генерирует его автоматически на основе MAC-адреса, но при сбросе конфигурации он может изменить. В продакшене рекомендуется задавать вручную на основе management IP-адреса устройства.

Пользователи, группы и представления (SNMPv3)

Пользователь – учётная запись SNMPv3 с привязкой к engine ID и связанными паролями аутентификации и шифрования.

Группа – объединение пользователей с общими правами доступа. Связывает пользователей v3 с политиками управления доступом.

View (представление) – список OID-поддеревьев, разрешённых для чтения (read) или запрещённых (exclude). Пример: .1 включает всё дерево MIB, .1.3.6.1.2.1.1 ограничивает доступ только к system-объектам.

Уровни безопасности SNMPv3:

  • noAuth – без аутентификации и шифрования (не рекомендуется).
  • authNoPriv – только аутентификация (MD5, SHA), без шифрования.
  • authPriv – аутентификация + шифрование (MD5/SHA + DES/3DES/AES). Обязателен в продакшене.

Назначение применяемых команд/конфигурации

Команда Описание
snmp-server Активирует SNMP-агент на устройстве.
snmp-server engine-id local <hex> Устанавливает engine ID агента (SNMPv3). Генерируется один раз и не меняется при перезагрузке.
snmp-server community <name> <secret> Создаёт community-строку для SNMPv1/v2c с опциональными ограничениями по IP.
snmp-server community <name> ip-range <ip> <mask> <secret> Привязывает community-строку к диапазону IP-адресов.
snmp-server user <username> engine-id <hex> md5 <auth-pass> priv des <priv-pass> Создаёт пользователя SNMPv3 с MD5-аутентификацией и DES-шифрованием.
snmp-server security-to-group model { v1 \| v2c \| v3 } name <username> group <group> Привязывает пользователя (community или SNMPv3) к группе доступа.
snmp-server access <group> model { v1 \| v2c \| v3 } level { noauth \| auth \| priv } read <view> [write <view>] Задаёт права чтения/записи для группы по уровню безопасности.
snmp-server view <view-name> <oid> { include \| exclude } Определяет представление – список разрешённых (include) или запрещённых (exclude) OID.
snmp-server host <name> Создаёт конфигурацию сервера NMS для отправки trap-уведомлений.
host <ip> <port> traps В режиме конфигурации хоста задаёт IP, порт и включает отправку trap.
version { v1 \| v2 } <community> В режиме конфигурации хоста указывает версию SNMP и community для отправки trap.
snmp-server trap <trap-name> Разрешает отправку определённого события (linkDown, linkUp, coldStart).
show snmp community <name> Отображает параметры community-строки (имя, IP-диапазон, секрет).
show snmp user <username> Отображает параметры пользователя SNMPv3 (engine ID, уровень, протоколы).
show snmp security-to-group { v1 \| v2c \| v3 } <name> Отображает привязку пользователя к группе.
show snmp access [any \| v1 \| v2c \| v3] Отображает все группы доступа с правами на чтение и запись.

Пример конфигурирования

Настройка SNMPv2c

Сценарий: коммутатор SW1 предоставляет доступ на чтение по community public (без ограничений по IP), на чтение и запись по community private (без ограничений по IP) и на чтение по community com1 только из сети 10.0.0.0/24.

Шаг 1: Активируем SNMP-агент.

configure terminal
snmp-server

Шаг 2: Создаём представление для разрешённых объектов.

.1 – корневое OID-дерево; include открывает доступ ко всем объектам MIB.

snmp-server view defaultview .1 include

Шаг 3: Создаём community-строки с ограничениями по IP.

  • public – без ограничений по IP, только чтение.
  • private – без ограничений по IP, чтение и запись.
  • com1 – только из диапазона 10.0.0.0/24, только чтение.
1
2
3
snmp-server community public ip-range 0.0.0.0 0.0.0.0 public
snmp-server community private ip-range 0.0.0.0 0.0.0.0 private
snmp-server community com1 ip-range 10.0.0.0 255.255.255.0 secret

Шаг 4: Привязываем community-строки к группам доступа.

snmp-server security-to-group model v2c name public group defaultrogroup
snmp-server security-to-group model v2c name private group default_rw_group

Шаг 5: Задаём права доступа для групп.

  • defaultrogroup – только чтение представления defaultview.
  • default_rw_group – чтение и запись представления defaultview.
snmp-server access defaultrogroup model v2c level noauth read defaultview
snmp-server access default_rw_group model v2c level noauth read defaultview write defaultview

Шаг 6: Добавляем информацию о системе (необязательно).

1
2
3
snmp-server location ServerRoom-3F
snmp-server contact admin@company.local
end

Настройка SNMPv3

Сценарий: коммутатор SW1 включает SNMP-агента с защитой SNMPv3. Сервер NMS 192.168.1.107 опрашивает агент с использованием пользователя snmpuser1 с аутентификацией MD5 и шифрованием DES.

Топология сети:

1
2
3
4
5
6
7
+------------------+                      +------------------+
|  Коммутатор SW1  |<------ SNMPv3 ------>|   Сервер NMS     |
|                  |    UDP 161 (опрос)   |   192.168.1.107  |
|   SNMP-агент     |    UDP 162 (trap)    |   SNMP-менеджер  |
| Engine ID:       |                      |                  |
| 800007e5017f00...|                      |                  |
+------------------+                      +------------------+

Шаг 1: Активируем SNMP-агент.

configure terminal
snmp-server

Шаг 2: Устанавливаем engine ID перед созданием пользователей.

Engine ID основан на IP-адресе 127.0.0.1 (тип 01 = IPv4). Всегда задавайте engine ID вручную в продакшене, чтобы избежать изменений при сбросе конфигурации.

snmp-server engine-id local 800007e5017f000001

Шаг 3: Создаём представление для разрешённых объектов.

snmp-server view defaultview .1 include

Шаг 4: Создаём пользователя SNMPv3 с уровнем authPriv.

  • snmpuser1 – имя пользователя.
  • 800007e5017f000001 – engine ID (тот же, что в шаге 2).
  • md5 – протокол аутентификации.
  • MyStr0ngP@ss123 – пароль аутентификации (минимум 8 символов).
  • des – алгоритм шифрования (поддерживаются DES, 3DES, AES).
  • MyEncKey456789 – пароль шифрования (минимум 8 символов).
snmp-server user snmpuser1 engine-id 800007e5017f000001 md5 MyStr0ngP@ss123 priv des MyEncKey456789

Шаг 5: Привязываем пользователя к группе доступа.

snmp-server security-to-group model v3 name snmpuser1 group group1

Шаг 6: Задаём права доступа для группы с уровнем priv.

priv означает authPriv – требуется аутентификация и шифрование.

snmp-server access group1 model v3 level priv read defaultview write defaultview

Шаг 7: Добавляем информацию о системе.

1
2
3
snmp-server location "Office, 3d Floor"
snmp-server contact "admin@company.local"
end

Настройка SNMP trap

Сценарий: устройство отправляет уведомления об событиях (linkDown, linkUp, coldStart) на сервер NMS 192.168.1.107 по протоколу SNMPv2c с community public.

Шаг 1: Активируем SNMP-агент (если уже включен, пропускаем).

configure terminal
snmp-server

Шаг 2: Создаём конфигурацию сервера NMS для trap.

Имя конфигурации – Manager, используется для организации параметров.

snmp-server host Manager

Шаг 3: Переходим в режим конфигурации хоста и задаём параметры trap.

 host 192.168.1.107 162 traps

Шаг 4: Указываем версию SNMP и community-строку для trap.

Версия v2 соответствует SNMPv2c; public – имя сообщества.

 version v2 public

Шаг 5: Включаем отправку trap и выходим из режима конфигурации хоста.

1
2
3
 traps
 no shutdown
 exit

Шаг 6: Разрешаем отправку определённых событий.

Устройство отправляет только разрешённые события; остальные игнорируются.

1
2
3
snmp-server trap linkDown
snmp-server trap linkUp
snmp-server trap coldStart

Шаг 7: Сохраняем конфигурацию.

1
2
3
end

copy running-config startup-config

Полный вывод выполненных конфигураций

Конфигурация SNMPv2c