Настройка 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-агент.
Шаг 2: Создаём представление для разрешённых объектов.
.1 – корневое OID-дерево; include открывает доступ ко всем объектам MIB.
Шаг 3: Создаём community-строки с ограничениями по IP.
public– без ограничений по IP, только чтение.private– без ограничений по IP, чтение и запись.com1– только из диапазона 10.0.0.0/24, только чтение.
Шаг 4: Привязываем community-строки к группам доступа.
Шаг 5: Задаём права доступа для групп.
defaultrogroup– только чтение представленияdefaultview.default_rw_group– чтение и запись представленияdefaultview.
Шаг 6: Добавляем информацию о системе (необязательно).
Настройка SNMPv3¶
Сценарий: коммутатор SW1 включает SNMP-агента с защитой SNMPv3. Сервер NMS 192.168.1.107 опрашивает агент с использованием пользователя snmpuser1 с аутентификацией MD5 и шифрованием DES.
Топология сети:
Шаг 1: Активируем SNMP-агент.
Шаг 2: Устанавливаем engine ID перед созданием пользователей.
Engine ID основан на IP-адресе 127.0.0.1 (тип 01 = IPv4). Всегда задавайте engine ID вручную в продакшене, чтобы избежать изменений при сбросе конфигурации.
Шаг 3: Создаём представление для разрешённых объектов.
Шаг 4: Создаём пользователя SNMPv3 с уровнем authPriv.
snmpuser1– имя пользователя.800007e5017f000001– engine ID (тот же, что в шаге 2).md5– протокол аутентификации.MyStr0ngP@ss123– пароль аутентификации (минимум 8 символов).des– алгоритм шифрования (поддерживаются DES, 3DES, AES).MyEncKey456789– пароль шифрования (минимум 8 символов).
Шаг 5: Привязываем пользователя к группе доступа.
Шаг 6: Задаём права доступа для группы с уровнем priv.
priv означает authPriv – требуется аутентификация и шифрование.
Шаг 7: Добавляем информацию о системе.
Настройка SNMP trap¶
Сценарий: устройство отправляет уведомления об событиях (linkDown, linkUp, coldStart) на сервер NMS 192.168.1.107 по протоколу SNMPv2c с community public.
Шаг 1: Активируем SNMP-агент (если уже включен, пропускаем).
Шаг 2: Создаём конфигурацию сервера NMS для trap.
Имя конфигурации – Manager, используется для организации параметров.
Шаг 3: Переходим в режим конфигурации хоста и задаём параметры trap.
Шаг 4: Указываем версию SNMP и community-строку для trap.
Версия v2 соответствует SNMPv2c; public – имя сообщества.
Шаг 5: Включаем отправку trap и выходим из режима конфигурации хоста.
Шаг 6: Разрешаем отправку определённых событий.
Устройство отправляет только разрешённые события; остальные игнорируются.
Шаг 7: Сохраняем конфигурацию.