9.6. Настройка SNMP

Назначение

SNMP - это протокол прикладного уровня, предназначенный для управления устройствами в IP-сетях а также для мониторинга их параметров и характеристик.

Описание

Системы, управляемые SNMP, состоят из SNMP-менеджера, SNMP-агента и информационной базы данных (MIB), описывающей параметры управляемого устройства. SNMP определяет формат сообщений для связи между менеджерами и агентами. Менеджер SNMP может быть частью системы управления сетью (NMS). Агент и MIB находятся на управляемом устройстве.

Чтобы настроить SNMP на коммутаторе, необходимо определить отношения между менеджером и агентом. Агент SNMP содержит переменные MIB, значения которых менеджер SNMP может запрашивать или изменять. Менеджер может получить значение от агента или сохранить значение в агенте. Агент собирает данные из MIB, являющегося хранилищем информации, о параметрах устройства и сетевых данных. Агент также может отвечать на запросы менеджера о получении или установке данных. Агент может отправлять менеджеру сообщения - SNMP-трапы (SNMPv1, SNMPv2с, SNMPv3), SNMP-Inform (SNMPv3).

SNMP-трапы - это незапрашиваемые сообщения, отправляемые SNMP-агентом SNMP-менеджеру при изменении состояния устройства. Ошибка аутентификации пользователя, перезапуск, состояние канала, отслеживание MAC-адресов, закрытие TCP-соединения, потеря соединения с соседним устройством или другие важные события могут быть причиной отправки SNMP-трапов.

SNMP-Inform – это уведомление SNMPv3, которое требует подтверждения от получателя (SNMP-менеджера). После отправки inform-уведомления агент ожидает ответ, удостоверяющий доставку сообщения. Если подтверждение не приходит, сообщение может быть отправлено повторно, что повышает надежность доставки.


Служба SNMP на коммутаторе реализована в соответствии с:

  • SNMPv1 (RFC 1157);

  • SNMPv2с (RFC 1901);

  • SNMPv3 (RFC 2273, 2274, 2275).

Примечание

Настройка поддерживаемой версии SNMP настраивается при помощи команды snmp-server version.

Основные отличия версий SNMP:

Аутентификация пользователей :

  • SNMPv1 и SNMPv2c: для аутентификации используются простые комьюнити (например, “public” или “private”), которые передаются в открытом виде и могут быть легко перехвачены.

  • SNMPv3: каждому пользователю назначается имя и пароль. Аутентификация происходит с использованием криптографических алгоритмов (MD5 или SHA), что гарантирует, что сообщение действительно исходит от доверенного источника.

Шифрование данных:

  • SNMPv1 и SNMPv2c: шифрование не поддерживается. Передаваемые в открытом виде данные можно перехватить и прочитать.

  • SNMPv3: поддерживается шифрование сообщений с помощью алгоритмов DES или AES (User-Based Security Model, RFC 2274). Это означает, что даже если сообщение будет перехвачено, его содержимое останется недоступным для злоумышленника.

Защита целостности и защита от повторных атак:

  • SNMPv1 и SNMPv2c: не реализована защита целостности и защита от повторных атак.

  • SNMPv3: в структуру сообщений включены дополнительные элементы, такие как Engine ID, timestamp и счетчик сообщений. Эти элементы помогают убедиться, что каждое сообщение уникально и не было изменено в процессе передачи, а также предотвращают так называемые replay-атаки (повторное использование перехваченных сообщений).

Управление доступом:

  • SNMPv1 и SNMPv2c: Доступ к данным регулируется только по значению комьюнити, что не позволяет тонко разграничивать права доступа.

  • SNMPv3: Введено гибкое управление доступом на основе представлений (View-Based Access Control Model - VACM, RFC 2275), которое позволяет создавать разные представления (view). Представления определяют, какие именно объекты доступны для конкретной группы, а также права доступа (чтение или изменение).

Примечание

На коммутаторах Aquarius представления можно использовать в SNMPv2с в модели доступа с использованием комьюнити.

SNMP-уведомления:

  • SNMPv1 и SNMPv2c: используются SNMP-трапы.

  • SNMPv3: Кроме SNMP-трапов в SNMPv3 появилась концепция уведомлений SNMP-Inform, которые похожи на SNMP-трапы, но имеют механизм подтверждения. При использовании уведомлений типа “Inform” менеджер SNMP должен подтверждать получение уведомления, обеспечивая бо́льшую надежность связи между агентом и менеджером. Так как SNMPv3 обеспечивает возможность безопасного обмена сообщениями между SNMP-агентом и SNMP-менеджером, он так же гарантирует надежность и защиту от несанкционированного доступа к SNMP-уведомлениям.

Настройка

Включение SNMP (SNMPv1, SNMPv2c, SNMPv3)

Шаг 1: Вход в режим “Global config”

Switch# configure terminal

Шаг 2: Включение SNMP

Switch(config)# snmp-server enable

Шаг 3: Выход из режима “Global config”

Switch(config)# end

Шаг 4: Проверка

Switch# show snmp
SNMP services: enable

Настройка прав доступа с использованием SNMP-комьюнити (SNMPv1, SNMPv2c)

Комьюнити SNMP используется для определения отношений между SNMP-менеджером и SNMP-агентом. Комьюнити также действует как пароль, разрешающий доступ к агенту на коммутаторе.

Можно указать одну или несколько характеристик, связанных с комьюнити:

  • Вид MIB, который определяет подмножество всех объектов MIB, доступных для данной комьюнити.

  • Разрешение на чтение или чтение/запись для объектов MIB, доступных данной комьюнити.

Действия из примера ниже выполняются в режиме “Priveleged EXEC”.

Шаг 1: Настройка представления (необязательно)

Настройка представления с именем “view1”:

Switch# configure terminal
Switch(config)# snmp-server view view1 included 1
Switch(config)# end

Проверка:

Switch# show snmp-server view
View-name                       View-type         Subtree
===========================================================
view1                             included          .1

Шаг 2: Настройка комьюнити (community string)

Настройка комьюнити с именем “Public” с доступом на чтение и запись представления “view1”:

Switch# configure terminal
Switch(config)# snmp-server community public read-write view view1
Switch(config)# end

Проверка:

Switch# show running-config
snmp-server enable
snmp-server view view1 included 1 
snmp-server community public read-only view view1

Настройка прав доступа (SNMPv3)

Для управления устройством по SNMPv3 создается пользователь для которого определяются настройки безопасности – аутентификация и настройки шифрования трафика SNMP.

Группа SNMP включает в себя SNMP-пользователей и определяет модель безопасности.

Представление SNMP должно быть связано с группой SNMP. Связь представления с группой выполняется с помощью настройки доступа для группы. Эта настройка определяет уровень безопасности и права (чтение, запись, настройка оповещений) для доступа созданной группы к конкретному представлению.

Шаг 1: Настройка идентификатора SNMP-движка

В качестве идентификатора использован номер 0х80<MAC-адрес коммутатора>:

Switch# configure terminal
Switch(config)# snmp-server engineID 8000583f1ce157
Switch(config)# end

Проверка:

Switch# show snmp-server engineID
Engine ID   : 8000583f1ce157

Шаг 2: Настройка представления

Настройка представления, включающего все интерфейсы коммутатора:

Switch# configure terminal
Switch(config)# snmp-server view INTERFACES included .1.3.6.1.4.1.54928.42
Switch(config)# end

Проверка:

Switch# show snmp-server view
View-name                       View-type         Subtree
===========================================================
INTERFACES                      included          .1.3.6.1.4.1.54928.42

Шаг 3: Создание SNMP-пользователя

Создание пользователя с именем usr1 с аутентификацией md5, паролем mypassword и шифрованием SNMP-трафика с помощью алгоритма aes:

Switch# configure terminal
Switch(config)# snmp-server usm-user usr1 authentication md5 mypassword privacy aes yourpassword
Switch(config)# end

Проверка:

Switch# show snmp-server usm-user usr1
EnginedID:       8000583f1ce157
User Name:       usr1
Auth Protocol:   md5
priv Protocol:   aes
Storage Type:    nonvolatile
Row status:      active

Шаг 4: Создание SNMP-группы

Создание SNMP-группы с именем “grp1”, содержащую пользовтеля “usr1” и использующую модель безопасности USM:

Switch# configure terminal
Switch(config)# snmp-server group grp1 user usr1 security-model usm
Switch(config)# end

Проверка:

Switch# show snmp-server group grp1
Group name:       grp1
Security model:   v3
Security name:    usr1
Storage Type:     permanent
Row status:       active

Шаг 5: Настройка доступа

Настройка уровня безопасности и прав доступа (чтение+запись) для группы “grp1” к созданному представлению “INTERFACES”:

Switch# configure terminal
Switch(config)# snmp-server access grp1 security-model usm priv read INTERFACES write INTERFACES notify INTERFACES
Switch# end

Проверка:

Switch# show snmp-server access grp1
Group name:         grp1
Context:
Security model:     usm
Security level:     priv
Context Match:      exact
Read view:          INTERFACES
Write view:         INTERFACES
Notify view:        INTERFACES
Storage Type:       permanent
Row status:         active

Настройка уведомлений (SNMPv1 и SNMPv2с)

Шаг 1: Вход в режим “Global config”

Switch# configure terminal

Шаг 2: Настройка SNMP

Включение всех поддерживаемых SNMP-трапов, настройка удаленного менеджера SNMP-трапов (IPv4 10.0.0.2, IPv6 2001:1000::1):

Switch(config)# snmp-server trap enable all
Switch(config)# snmp-server trap target-address 10.0.0.2 community public
Switch(config)# snmp-server trap target-address 2001:1000::1 community public

Шаг 3: Выход из режима “Global config”

Switch(config)# end

Шаг 4: Проверка

Switch# show running-config
snmp-server trap target-address 10.0.0.2 community public 
snmp-server trap target-address 2001:1000::1 community public
snmp-server trap enable vrrp
snmp-server trap enable igmp snooping
snmp-server trap enable ospf
snmp-server trap enable pim
snmp-server trap enable stp
snmp-server trap enable system
snmp-server trap enable coldstart 
snmp-server trap enable warmstart 
snmp-server trap enable linkdown 
snmp-server trap enable linkup

Настройка уведомлений (SNMPv3)

Шаг 1: Вход в режим “Global config”

Switch# configure terminal

Шаг 2: Включение SNMP-трапов

Включение SNMP-трапов для всех поддерживаемых событий:

Switch(config)# snmp-server trap enable all
Switch(config)# end

Проверка:

Switch# show running-config | i snmp-server trap
snmp-server trap enable system
snmp-server trap enable loopback-detect
snmp-server trap enable ipsla test-failure
snmp-server trap enable ipsla test-success
snmp-server trap enable ipsla packet-timeout
snmp-server trap enable ipsla overthreshold
snmp-server trap enable cpu-traffic-limit
snmp-server trap enable bgp established-notification
snmp-server trap enable bgp backward-trans-notification
snmp-server trap enable coldstart
snmp-server trap enable warmstart
snmp-server trap enable linkdown
snmp-server trap enable linkup
snmp-server trap enable bfd

Шаг 3: Настройка уведомлений SNMP-Inform (необязально)

Настройка SNMP-Inform на количество попыток посылки уведомлений - 5 и время между попытками - 10:

Switch(config)# snmp-server inform retries 5 timeout 10
Switch(config)# end

Проверка:

Switch# show running-config | i retries
snmp-server inform retries 5 timeout 10

Шаг 4: Настройка профиля уведомлений

Настройка профиля уведомлений SNMPv3, который связывает имя профиля NOTIFTRAP с тегом NTFTR и типом уведомлений SNMP-trap:

Switch# configure terminal
Switch(config)# snmp-server notify NOTIFTRAP tag NTFTR trap
Switch(config)# end

Настройка профиля уведомлений SNMPv3, который связывает имя профиля NOTIFINFORM с тегом NTFINF и типом уведомлений SNMP-inform:

Switch# configure terminal
Switch(config)# snmp-server notify NOTIFINFORM tag NTFINF inform
Switch(config)# end

Вывод профилей уведомлений:

Switch# show snmp-server notify
Notify-name              Notify-type
===========================================================
NOTIFINFORM              inform
NOTIFTRAP                trap

Вывод профиля NOTIFTRAP:

Switch# show snmp-server notify NOTIFTRAP
Notify name:   NOTIFTRAP
Notify tag:    NTFTR
Notify type:   trap
Storage type:  nonvolatile
Row status:    active

Вывод профиля NOTIFINFORM:

Switch# show snmp-server notify NOTIFINFORM
Notify name:   NOTIFINFORM
Notify tag:    NTFINF
Notify type:   inform
Storage type:  nonvolatile
Row status:    active

Шаг 5: Настройка параметров получателя уведомлений

Switch# configure terminal
Switch(config)# snmp-server target-params TRGPRM user user1 security-model v3 message-processing v3 noauth
Switch(config)# end

Вывод всех получателей:

Switch# show snmp-server target-params
Target-parameter-name            Security-name
===========================================================
TRGPRM                           user1

Вывод получателя TRGPRM:

Switch# show snmp-server target-params TRGPRM
Target parameter name:   TRGPRM
Message processing model:   v3
Security model:    v3
Security name:   user1
Security level:  noauth
Storage type:    nonvolatile
Row status:      active

Шаг 6: Настройка адресов SNMP-менеджера

Настройка адреса получателя SNMP-трапов:

Switch# configure terminal
Switch(config)# snmp-server target-address TRGADRTRAP param TRGPRM 10.1.1.1 taglist NTFTR
Switch(config)# end

Настройка адреса получателя сообщений SNMP-Inform:

Switch# configure terminal
Switch(config)# snmp-server target-address TRGADRINFORM param TRGPRM 10.1.1.2 taglist NTFINF
Switch(config)# end

Вывод настроенных получателей:

Switch# show snmp-server target-address
Targetaddress-name       IP-address          Mgmt-If Parameters
===========================================================
TRGADRINFORM             10.1.1.2            no      TRGPRM
TRGADRTRAP               10.1.1.1            no      TRGPRM

Вывод информации о получателе TRGADRTRAP:

Switch# show snmp-server target-address TRGADRTRAP
Targetaddr name: TRGADRTRAP
IP address:      10.1.1.1
Mgmt-If:         no
UDP Port #:      162
Timeout:         15000
Retry count:     3
Tag List:        NTFTR
Parameters:      TRGPRM
Storage type:    nonvolatile
Row status:      active

Вывод информации о получателе TRGADRINFORM:

Switch# show snmp-server target-address TRGADRINFORM
Targetaddr name: TRGADRINFORM
IP address:      10.1.1.2
Mgmt-If:         no
UDP Port #:      162
Timeout:         15000
Retry count:     3
Tag List:        NTFINF
Parameters:      TRGPRM
Storage type:    nonvolatile
Row status:      active