Настройка 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: Сохраняем конфигурацию.
Полный вывод выполненных конфигураций¶
Конфигурация SNMPv2c¶
Конфигурация SNMPv3¶
Конфигурация SNMP trap¶
Изучение состояния устройства¶
Проверка community-строк¶
Ключевые поля:
- Community/Security Name – имя сообщества для идентификации источника.
- Source IP – диапазон адресов, с которых разрешён доступ (CIDR-нотация).
0.0.0.0/0означает доступ без ограничений по IP. - Community secret – название secret (не сам пароль).
Проверка пользователей SNMPv3¶
Ключевые поля:
- User/Security Name – имя пользователя.
- Engine ID – идентификатор агента в hexadecimal (совпадает с установленным в конфиге).
- Security Level – уровень защиты:
NoAuth, NoPriv(нет защиты),Auth, NoPriv(только аутентификация),Auth, Priv(аутентификация + шифрование). - Authentication Protocol – алгоритм хеширования пароля (MD5, SHA).
- Privacy Protocol – алгоритм шифрования (DES, 3DES, AES).
Проверка привязки к группам¶
Ключевые поля:
- Security Model – версия SNMP (v1, v2c, v3).
- Security Name – имя пользователя (community или учётная запись).
- Group Name – название группы, к которой привязан пользователь.
Проверка прав доступа групп¶
Ключевые поля:
- Group Name – название группы доступа.
- Security Model – версия SNMP.
- Security Level – уровень безопасности (для SNMPv3).
- Read View Name – представление для операций чтения (пусто означает доступ запрещён).
- Write View Name – представление для операций записи;
<no writeview specified>означает запись запрещена.
Проверка конфигурации trap¶
Ключевые поля:
- Host IP, Host Port – адрес и порт сервера NMS (обычно 162 для trap).
- Host SNMP Version – версия SNMP для отправки trap (v1 или v2).
- Host Community/User – community-строка (v1/v2) или имя пользователя (v3) для аутентификации trap.
- Trap Status – статус отправки (enabled/disabled).
Рекомендации по выполнению настроек¶
- Engine ID SNMPv3 задавайте до создания пользователей. При изменении engine ID после создания пользователей они автоматически удаляются. В продакшене используйте фиксированный engine ID на основе management IP-адреса устройства, чтобы избежать потери конфигурации при перезагрузке.
- Используйте SNMPv3 с уровнем authPriv для критичных систем. Это обеспечивает как аутентификацию, так и шифрование трафика. SNMPv1 и v2c передают community-строки в открытом виде и подходят только для изолированных лабораторных сетей.
- Паролей аутентификации и шифрования должны быть минимум 8 символов каждый. Используйте комбинацию прописных, строчных букв, цифр и специальных символов (например,
MyStr0ng@P@ss123). - Ограничивайте доступ по IP для community-строк. Не используйте 0.0.0.0/0 для критичных community (private, monitoring). Указывайте точный диапазон подсетей или конкретные IP-адреса менеджеров.
- Права на запись (write view) разрешайте только необходимым группам. По умолчанию назначайте группам только права на чтение (read view); write view добавляйте исключительно для групп, выполняющих администрирование (например, изменение конфигурации).
- Создавайте отдельные пользователи SNMPv3 для каждого менеджера. Не используйте одного пользователя на несколько NMS-систем; это затрудняет аудит и диагностику проблем.
- Проверяйте connectivity перед настройкой. Убедитесь, что между агентом и менеджером открыты UDP-порты 161 (опрос) и 162 (trap). Используйте
pingи проверку правил firewall. - Trap отправляйте только на доверенные серверы. Включайте только события, которые действительно нужны (linkDown, linkUp, coldStart, т.д.); отправка всех событий может перегрузить сеть и сервер NMS.
- Тестируйте конфигурацию с помощью SNMP-клиента. Используйте утилиты типа
snmpget,snmpwalk,snmptrap(из пакета Net-SNMP на Linux) или встроенные средства NMS для проверки опроса и trap. - Документируйте engine ID, пользователей и community-строки в конфигурационном управлении. Engine ID и пароли не передавайте открытым текстом; храните в защищённом хранилище (vault, ConfigMgmt-система).
История возникновения команды¶
ПО версии S2158-5.4.0 поддерживаются все три версии SNMP.
Ссылки на внешнюю документацию¶
- RFC 1065 – Structure and Identification of Management Information for TCP/IP-based Internets
- RFC 1901 – Introduction to Community-based SNMPv2
- RFC 3411 – An Architecture for Describing SNMP Management Frameworks
- RFC 3412 – Message Processing and Dispatching for the SNMP
- RFC 3414 – User-based Security Model (USM) for SNMPv3
- RFC 3415 – View-based Access Control Model (VACM) for the SNMP
- RFC 3418 – Management Information Base (MIB) for the SNMP