Opened 7 years ago

Closed 2 years ago

Last modified 2 years ago

#266 closed баг (fixed)

Настройки SNMP TRAP'ов применяются только после рестарта swd

Reported by: alx Owned by: alx
Priority: средний Milestone: 1 очередь
Component: swd Keywords:
Cc:

Description (last modified by alx)

Замечено что, как минимум, при установке уровня защиты AuthPriv (вероятно также при смене уровня защиты вообще), при изменении алгоритма шифрования и/или аутентификации, изменения вступают в действие только после рестарта swd.

В настоящий момент коммит r1555 откачен для веб-интерфейса. Надо разобраться с причиной и по возможности устранить.

Предположительно тут следует не создавать сессию заново при каждой отправке TRAP'а, а создавать ее один раз при создании трапсинка, и затем только модифицировать.

Change History (5)

comment:1 by alx, 6 years ago

Description: modified (diff)

comment:2 by alx, 2 years ago

Причина проблемы прояснилась.

Оказывается, при отправке TRAP с аутентификацией (а, возможно, даже любого SNMPv3 TRAP'а) библиотека создает пользователя в своей внутренней базе данных и копирует туда настройки аутентификации и шифрования из текущей сессии. Если позже эти данные в сессии меняются (например алгоритм аутентификации), то библиотека находит существующую запись о пользователе, видит, что данные аутентификации у него есть, и продолжает использовать старые данные, не проверяя, что в сессии их изменили.

Проблема решилась следующими мерами:

  • Объект сессии создается не каждый раз при отправке TRAP, а при конфигурации трапсинка, и хранится там.
  • При каждой модификации настроек трапсинка выполняется поиск ранее настроенного пользователя в базе данных библиотеки, и если он там есть, пользователь удаляется.

comment:3 by alx, 2 years ago

Кроме сказанного выше, запись пользователя в базе данных идентифицируется именем пользователя и securityEngineID. Учитывая это, получается, что у всех тапсинков блока securityEngineID должны быть разные, иначе если в разных трапсинках будет использовано одно и то же имя пользователя, возникнет та же проблема - у таких трапсинков нельзя будет установить разные настройка аутентификации и шифрования, все они будут использовать одни настройки.

Чтобы этого не происходило, принято решение генерировать securityEngineID трапсинка, добавляя к MAC адресу платы имя трапсинка (так нельзя создать несколько трапсинков с одинаковым именем).

comment:4 by alx, 2 years ago

Resolution: fixed
Status: newclosed

In 2131/sw:

Список трапсинков (класс Trapsinks) теперь хранит не объекты Trapsink,
а указатели на них. Объекты Trapsink теперь создаются динамически (при чтении
конфиг-файла и/или при добавлении трапсинка через веб-интерфейс).

SNMP сессия теперь создается не каждый раз при отправке TRAP, а один раз при
конфигурации трапсинка. Это сильно экономит время при отправке TRAP.

Engine ID генерируется соединением MAC адреса платы с именем трапсинка.

В веб-интерфейс снова добавлены настройки уровня безопасности и алгоритма шифрования трапсинков.

Closes #266.

comment:5 by alx, 2 years ago

In 2132/sw:

Добавлена поддержка новых алгоритмов аутентификации SNMP (SHA224, SHA256, SHA384 и SHA512).

Engine Id теперь генерируется в соответствии с rfc3411: 0x80 <enterprise> 0x05 <MAC> <имя трапсинка>.

Добавлено ограничение размера Engine Id (не может быть больше 32 байт). Соответственно,
в Engine Id добавляются только первые 21 байт имени трапсинка. See #266.

Note: See TracTickets for help on using tickets.