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

Настройка 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

configure terminal
!
snmp-server
!
snmp-server view defaultview .1 include
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
!
snmp-server security-to-group model v2c name public group defaultrogroup
snmp-server security-to-group model v2c name private group default_rw_group
!
snmp-server access defaultrogroup model v2c level noauth read defaultview
snmp-server access default_rw_group model v2c level noauth read defaultview write defaultview
!
end

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

configure terminal
!
snmp-server
!
snmp-server engine-id local 800007e5017f000001
snmp-server view defaultview .1 include
snmp-server user snmpuser1 engine-id 800007e5017f000001 md5 MyStr0ngP@ss123 priv des MyEncKey456789
!
snmp-server security-to-group model v3 name snmpuser1 group group1
snmp-server access group1 model v3 level priv read defaultview write defaultview
!
snmp-server location "Office, 3d floor"
snmp-server contact "admin@company.local"
!
end

Конфигурация SNMP trap

configure terminal
!
snmp-server
!
snmp-server host Manager
 host 192.168.1.107 162 traps
 version v2 public
 traps
 no shutdown
 exit
!
snmp-server trap linkDown
snmp-server trap linkUp
snmp-server trap coldStart
!
end

Изучение состояния устройства

Проверка community-строк

# show snmp community
Community/Security Name : com1
Source IP               : 10.0.0.0/24
Community secret        : secret

Community/Security Name : public
Source IP               : 0.0.0.0/0
Community secret        : public

Community/Security Name : private
Source IP               : 0.0.0.0/0
Community secret        : private

Ключевые поля:

  • Community/Security Name – имя сообщества для идентификации источника.
  • Source IP – диапазон адресов, с которых разрешён доступ (CIDR-нотация). 0.0.0.0/0 означает доступ без ограничений по IP.
  • Community secret – название secret (не сам пароль).

Проверка пользователей SNMPv3

1
2
3
4
5
6
# show snmp user snmpuser1
User/Security Name      : snmpuser1
Engine ID               : 800007e5017f000001
Security Level          : Auth, Priv
Authentication Protocol : MD5
Privacy Protocol        : DES

Ключевые поля:

  • User/Security Name – имя пользователя.
  • Engine ID – идентификатор агента в hexadecimal (совпадает с установленным в конфиге).
  • Security Level – уровень защиты: NoAuth, NoPriv (нет защиты), Auth, NoPriv (только аутентификация), Auth, Priv (аутентификация + шифрование).
  • Authentication Protocol – алгоритм хеширования пароля (MD5, SHA).
  • Privacy Protocol – алгоритм шифрования (DES, 3DES, AES).

Проверка привязки к группам

1
2
3
4
5
6
7
8
9
# show snmp security-to-group v2c public
Security Model : v2c
Security Name  : public
Group Name     : defaultrogroup

# show snmp security-to-group v3 snmpuser1
Security Model : v3
Security Name  : snmpuser1
Group Name     : group1

Ключевые поля:

  • Security Model – версия SNMP (v1, v2c, v3).
  • Security Name – имя пользователя (community или учётная запись).
  • Group Name – название группы, к которой привязан пользователь.

Проверка прав доступа групп

# show snmp access
Group Name       : group1
Security Model   : v3
Security Level   : Auth, Priv
Read View Name   : defaultview
Write View Name  : defaultview

Group Name       : defaultrogroup
Security Model   : v2c
Security Level   : NoAuth, NoPriv
Read View Name   : defaultview
Write View Name  : <no writeview specified>

Group Name       : default_ro_group
Security Model   : any
Security Level   : NoAuth, NoPriv
Read View Name   : default_view
Write View Name  : <no writeview specified>

Group Name       : default_rw_group
Security Model   : any
Security Level   : NoAuth, NoPriv
Read View Name   : default_view
Write View Name  : default_view

Group Name       : default_rw_group
Security Model   : v2c
Security Level   : NoAuth, NoPriv
Read View Name   : defaultview
Write View Name  : defaultview

Ключевые поля:

  • Group Name – название группы доступа.
  • Security Model – версия SNMP.
  • Security Level – уровень безопасности (для SNMPv3).
  • Read View Name – представление для операций чтения (пусто означает доступ запрещён).
  • Write View Name – представление для операций записи; <no writeview specified> означает запись запрещена.

Проверка конфигурации trap

1
2
3
4
5
6
7
# show snmp host Manager
Host Name                : Manager
Host IP                  : 192.168.1.107
Host Port                : 162
Host SNMP Version        : v2
Host Community/User      : public
Trap Status              : enabled

Ключевые поля:

  • 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).

Рекомендации по выполнению настроек

  1. Engine ID SNMPv3 задавайте до создания пользователей. При изменении engine ID после создания пользователей они автоматически удаляются. В продакшене используйте фиксированный engine ID на основе management IP-адреса устройства, чтобы избежать потери конфигурации при перезагрузке.
  2. Используйте SNMPv3 с уровнем authPriv для критичных систем. Это обеспечивает как аутентификацию, так и шифрование трафика. SNMPv1 и v2c передают community-строки в открытом виде и подходят только для изолированных лабораторных сетей.
  3. Паролей аутентификации и шифрования должны быть минимум 8 символов каждый. Используйте комбинацию прописных, строчных букв, цифр и специальных символов (например, MyStr0ng@P@ss123).
  4. Ограничивайте доступ по IP для community-строк. Не используйте 0.0.0.0/0 для критичных community (private, monitoring). Указывайте точный диапазон подсетей или конкретные IP-адреса менеджеров.
  5. Права на запись (write view) разрешайте только необходимым группам. По умолчанию назначайте группам только права на чтение (read view); write view добавляйте исключительно для групп, выполняющих администрирование (например, изменение конфигурации).
  6. Создавайте отдельные пользователи SNMPv3 для каждого менеджера. Не используйте одного пользователя на несколько NMS-систем; это затрудняет аудит и диагностику проблем.
  7. Проверяйте connectivity перед настройкой. Убедитесь, что между агентом и менеджером открыты UDP-порты 161 (опрос) и 162 (trap). Используйте ping и проверку правил firewall.
  8. Trap отправляйте только на доверенные серверы. Включайте только события, которые действительно нужны (linkDown, linkUp, coldStart, т.д.); отправка всех событий может перегрузить сеть и сервер NMS.
  9. Тестируйте конфигурацию с помощью SNMP-клиента. Используйте утилиты типа snmpget, snmpwalk, snmptrap (из пакета Net-SNMP на Linux) или встроенные средства NMS для проверки опроса и trap.
  10. Документируйте 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