Перейти к основному содержимому
Версия: 4.5.X

SNMP

Этот раздел содержит информацию о работе с SNMP. Рекомендуется использовать протокол SNMPv3, поскольку он является более безопасным по сравнению с предыдущими версиями — SNMPv1 и SNMPv2c. Более высокая безопасность SNMPv3 по сравнению с предыдущими версиями обеспечивается возможностями аутентификации.

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

/etc/echelon/komrad/komrad-snmp-collector.yaml
### schema: komrad/komrad-snmp-collector/4.1.33
# Идентификатор предприятия
tenant_id: 75
# Идентификатор установки
setup_id: komrad-production
# Метка безопасности, аналог Oracle Security Label
sl: 715
bus:
servers:
- nats://10.0.5.197:3490
user: komrad
password: pass
user-credentials: ""
tls:
disable: false
ServerName: ""
TrustedCA: /var/lib/echelon/komrad/certs/ca.pem
Cert: /var/lib/echelon/komrad/certs/client.pem
CertKey: /var/lib/echelon/komrad/certs/client-key.pem
system-pool: false
min-version: "1.3"
client-auth: require-and-verify-client-cert
tuning:
# Возможность установить время ожидания при соединении.
connect-timeout: 10s
# Возможность установить максимальное количество попыток повторного подключения.
max-reconnects: 1000000
# Устанавливает максимальное количество времени, в течение которого мы будем ждать ответа.
max-wait: 0s
# Параметр для установки периода для клиентских команд ping.
ping-interval: 2m
# Возможность установить максимальное количество запросов ping,
# которые могут остаться без ответа сервера, прежде чем закрыть соединение.
max-pings-outstanding: 2
# Устанавливает максимальное количество незавершенных асинхронных публикаций,
# которые могут быть одновременно запущены.
publish-async-max-pending: 0
# Интервал переподключения.
reconnect-interval: 5s
# Возможность установить время ожидания между попытками повторного подключения.
reconnect-wait: 1s
# Устанавливает соединение в состояние повторного подключения, если оно не может подключиться.
retry-on-failed-connect: false
# Таймаут между попытками рестарта коллектора во время неустойчивой связи с центральным сервером КОМРАД
restart-timeout: 1s
# local_ip: 10.0.0.1
# Настройки пакетного сбора данных - включает накопление событий в пакеты
# для оптимизации скорости передачи информации.
# Например, увеличение параметра timeout до 3s и limit до 20000 позволяет достигать 100 000 EPS.
batching:
# предельный интервал времени накопления пакетов, по умолчанию 1 секунда
timeout: 1s
# предельный лимит событий в пакете, по умолчанию - 100
limit: 1000
# Настройки write-ahead-log (WAL) - механизма записи на диск событий
# в случае разрыва соединения с сетью. События пишутся на диск в сжатом виде, в случае
# восстановления соединения с сетью сжатые пакеты событий направляются в шину событий Комрад.
# Рекомендуется контролировать объем свободного дискового пространства на узле с коллектором/агентом.
wal:
# Путь до папки в которой будет храниться конфигурационная информация коллектора/агента.
# Конфигурация хранится в сжатом, зашифрованном виде.
# Если путь не указан, будет выбрана папка по-умолчанию:
# - для Windows:
# C:\Program Files\Echelon\komrad\<name>-collector\.wal
# - для Linux:
# /var/lib/echelon/komrad/<name>-collector/.wal
# В случае установки нескольких одинаковых коллекторов на один хост необходимо устанавливать
# раздельные пути до хранилища каждого коллектора, путь к хранилищу одного коллектора не должен
# быть вложенным в путь до хранилища другого коллектора.
path: /var/lib/echelon/komrad/komrad-snmp-collector/.wal
# no-copy -- когда равен true включается режим оптимизации работы с памятью,
# изменять значение стоит лишь при рекомендации Службы Поддержки.
no-copy: true
# segment-size -- размер одного сегмента WAL, по умолчанию 4 Кб,
# изменять значение стоит лишь при рекомендации Службы Поддержки.
segment-size: 4MB
# max-length - максимальная длина WAL, если равно 0 длина не ограничена.
max-length: 0
# Настройки вывода логов приложения.
# Сервис может отправлять логи сразу в несколько целей -- файл, системный журнал ОС, консоль, syslog.
# Включить вывод логов в консоль для режима отладки приложения
# - filename: stdout
# format: color
# filter: ""
# levels: [all]
# Включить вывод логов в файл с ротацией.
# ВАЖНО: старые файлы с логами не удаляются, необходимо производить мониторинг использования диска.
# - filename: "/var/log/echelon/komrad/service.log"
# format: json
# возможно задать выражение для фильтрации выводимых логов
# filter: ""
# levels: [info, error, warn, panic, fatal]
# Отправлять критические сообщения в Журнал Windows.
# ВНИМАНИЕ: не стоит включать levels (info, warn, debug, error) в windowseventlog , это может
# крайне негативно сказаться на быстродействии и доступности узла.
# - filename: windowseventlog
# format: json
# levels: [panic, fatal]
log:
- filename: systemd/journal
format: json
filter: ""
levels:
- info
- error
- panic
- fatal
- warn
# Настройки дискового хранилища конфигурационной информации коллектора/агента
storage:
# Путь до папки в которой будет храниться конфигурационная информация коллектора/агента.
# Конфигурация хранится в сжатом, зашифрованном виде.
# Если путь не указан, будет выбрана папка по-умолчанию:
# - для Windows:
# C:\Program Files\Echelon\komrad\<name>-collector\.storage
# - для Linux:
# /var/lib/echelon/komrad/<name>-collector/.storage
# В случае установки нескольких одинаковых коллекторов на один хост необходимо устанавливать
# раздельные пути до хранилища каждого коллектора, путь к хранилищу одного коллектора не должен
# быть вложенным в путь до хранилища другого коллектора.
path: /var/lib/echelon/komrad/komrad-snmp-collector/.storage
compress: false
# Включить режим синхронной записи каждого результата на диск, по-умолчанию отключено
sync-writes: false
# Путь к базе данных GeoIP
geo-ip:
path: /var/lib/echelon/komrad/komrad-snmp-collector/geoip/db.mmdb
# Проверка на корректность базы данных geoIP при инициализации geodata.
# Полезная опция, чтобы удостоверится, что база mmdb не содержит ошибок.
# Однако верификация длится от 20 секунд до 2х минут в зависимости от ресурсов
# и размера базы геоданных. По умолчанию опция отключена.
verify-on-start: false
# Отключить запись исходного текста события в поле Raw.
# Большинство требований регулятора требуют сохранять текст исходного события.
# Сохранение исходного текста события влияет на размер БД для хранения событий,
# возможно повышение требований в 2-10 раз.
# Коллекторы WMI, SQL, SNMP, xFLOW всё, что получают от протоколов источников
# сбора сохраняют в нормализованные поля события. Поле Raw заполняется
# синтетическими данными -- нормализованные поля в формате JSON.
# Рекомендуется установить `disable-raw-field: true` для коллекторов типа WMI, SQL, SNMP, xFLOW
# для сохранения затрат на хранение избыточных данных.
# Коллекторы Syslog и File имеют доступ к исходному тексту события, отключать запись в Raw
# для этих коллекторов невозможно.
disable-raw-field: false
# Использовать при работе только в локальном автономном режиме
offline: false
plugins: []
events_file: ""

Полезная информация

SNMP основан на модели менеджера (центральный сборщик информации), в нашем случае это Сервер

SNMP Trap, и агентов, расположенных в разных удаленных местах.

Работа агентов состоит в том, чтобы собирать различные фрагменты информации из их местоположения. Они также могут сообщать информацию, которую они только что получили внутри себя, например, небольшие системные сигналы тревоги. Их задача состоит в том, чтобы сообщить об этом менеджеру и, в конечном итоге, собрать всю информацию в одном месте.

Далее необходимо понять по какому принципу осуществить взаимодействие этих компонентов между собой.

Способ, при котором SNMP-менеджер и агенты общаются друг с другом, традиционно осуществляется через асинхронные сообщения, но некоторые системы вместо этого могут использовать обмен сообщениями с запросом, или, иначе говоря, синхронными сообщениями.

В KOMRAD реализовано сразу 2 этих подхода:

  • Traps (асинхронное взаимодействие)
  • Polling (синхронное взаимодействие)

SNMP Traps

Обычно SNMP является асинхронным, это означает, что ваши агенты будут отправлять сообщения всякий раз, когда происходит что-то критическое, это называется SNMP-trap (SNMP-ловушки). Но менеджер не будет запрашивать информацию по какому-либо расписанию, поэтому если вы ничего не получаете от агента, то вы не знаете: означает ли это, что все в порядке, или, что один из агентов находится не в сети. При этом у вас нет способов проверить это.

SNMP Poll

В последнее время некоторые SNMP-устройства стали использовать метод запроса вместо отправки SNMP-trap.

Можно настроить свою SNMP-систему так, чтобы ваши агенты не отправляли к менеджеру сообщение (SNMP-trap) всякий раз, когда что-то происходит, а вместо этого бы ожидали запроса от менеджера, который поступает через равные промежутки времени. Это называется циклом запроса и означает то, что менеджер отправляет запросы вашему агенту, например, каждые 30 секунд.

Как можно заметить, этот метод заменяет некоторую срочность на периодичность. А именно: если агент находится не в сети, то он не сможет ответить на следующий запрос, поэтому вы будете знать, что что-то пошло не так.

Итог

SNMP Poll позволяет узнать, когда агент находится в автономном режиме, но некоторые тревоги могут ждать до нового цикла запроса прежде, чем станет о них известно. Лучший вариант - это использовать гибридную схему и за счет этого получать лучшее из обоих методов.

Подключение нового SNMP-коллектора

Предварительные условия:

Для установки SNMP-коллектора на определенный узел, необходимо:

  1. На узле создать директорию, в которую необходимо переместить deb-пакет komrad-snmp-collector*.deb из дистрибутива KOMRAD

  2. Установить из папки komrad-snmp-collector командой:

    sudo apt install ./komrad-snmp-collector*.deb
  3. Открыть файл komrad-snmp-collector.yaml командой:

    sudo nano /etc/echelon/komrad/komrad-snmp-collector.yaml
  4. Отредактировать параметр bus-url, задав IP-адрес сервера KOMRAD:

    bus:
    servers:
    - nats://IP_ KOMRAD:3490
  5. Сохранить файл и перезагрузить snmp-collector командой:

    sudo systemctl restart komrad-snmp-collector.service
  6. Новый SNMP-коллектор отобразится в списке коллекторов в веб-интерфейсе

Подключение новых источников событий

Расположение: manage ⇒ Настройки коллекторов ⇒ Коллекторы ⇒ SNMP

Требования для SNMPv1 и SNMPv2c

SNMPv1 и SNMPv2c очень похожи по своей конфигурации. Администратор настраивает поле, известное как строка сообщества (community string), которая является строкой аутентификации (т.е. паролем), необходимой Серверу SNMP для получения данных от агентов.

Стандартные строки сообщества

Использование широко известных паролей, таких как private и public, в качестве строки сообщества SNMP позволяет злоумышленнику легко получить неавторизованный доступ к устройству. Вам нужно исключить использование таких паролей.

Требования для SNMPv3

SNMPv3 более безопасен, поскольку он позволяет администратору устанавливать имя пользователя, пароль проверки подлинности, алгоритм проверки подлинности, алгоритм конфиденциальности и пароль конфиденциальности. Все это необходимо правильно ввести в настройках SNMP-коллектора в KOMRAD, чтобы получить доступ к информации о маршрутизаторе/устройствах.

Устаревшие версии SNMP

Протоколы SNMPv1 и SNMPv2c передают данные в открытом виде. Вам нужно отключить устаревшие версии SNMP там, где это возможно.

Защита соединения

Более высокая безопасность SNMPv3 по сравнению с предыдущими версиями обеспечивается возможностями аутентификации и защиту соединения. Для SNMPv3 вам нужно установить защиту соединения и осуществить настройку пользователя.

Подключение с использованием SNMP Traps

Действия:

  1. Кликнуть на нужный коллектор.

  2. Нажать кнопку «Редактировать»:

    • При необходимости можно задать название коллектора
    • Порт, куда будут приходить ловушки, иначе говоря, порт на котором запускать сервер SNMP Traps
    • Протокол - tcp или udp
    • Версия - версия протокола SNMP
    • Community (для протоколов v1 и v2c) – строка имени сообщества источника SNMP
    • Настройки пользователя (для протокола v3) - параметр, при котором SNMPv3 проверяет, что события пришли из надежного источника, а также будут защищаться MD5 или SHA:
      • Имя пользователя - имя пользователя для входящих SNMPv3-соединений
      • Пароль - пароль для входящих SNMPv3-соединений
      • Протокол настроек пользователя - протокол пользовательских настроек для входящих SNMPv3-соединений. Может принимать значения: SHA, SHA224, SHA256, SHA384, SHA512, MD5
      • Защита соединения - параметр, включить защиту для входящих SNMPv3-соединений:
        • Протокол защиты соединения - протокол защиты для входящих SNMPv3-соединений. Может принимать значения: DES, AES, AES192, AES192C, AES256, AES256C
        • Пароль для защиты соединения - пароль защиты трафика для входящих SNMPv3-соединений
    • Имя пользователя (для протокола v3) - имя пользователя для входящих SNMPv3-соединений
    • Маппинг OID для сервера SNMP Traps - указать правила именования для OID из SNMP Traps в формате OID:EventFieldName, разделитель - запятые. Например, '.1.2.3:Foo.Bar,.1.2.3.4:ECS.Network.Bytes'
    • Фильтрация входящих соединений по IP - включить фильтрацию входящих соединений по списку IP-адресов
    • Способ фильтрации по IP - либо разрешить, либо запретить
  3. Сохранить

Подключение с использованием SNMP Poll

Действия:

  1. Кликнуть на коллектор, на вкладке «Источники» нажать на кнопку «Добавить». Справа появится форма создания нового источника для SNMP-коллектора

  2. Задайте параметры подключения к источнику:

    • Актив - адрес IP устройства SNMP. Может быть выбран из списков активов Сканер-ВС.
    • Протокол - tcp или udp
    • Порт – порт, на котором функционирует устройство SNMP
    • Версия протокола - версия протокола SNMP, поддерживаемая агентом
    • Community (для протоколов v1 и v2c) – строка имени сообщества источника SNMP
    • Настройки пользователя (для протокола v3) - параметр, при котором SNMPv3 проверяет, что события пришли из надежного источника, а также будут защищаться MD5 или SHA:
      • Пользователь - имя пользователя SNMP-устройства
      • Пароль - пароль SNMP-устройства
      • Протокол настроек пользователя - протокол пользовательских настроек для подключения к SNMP-устройству. Может принимать значения: SHA, SHA224, SHA256, SHA384, SHA512, MD5
      • Защита соединения - включить или отключить защиту соединения при передаче данных с SNMP-устройства:
        • Протокол защиты соединения - протокол защиты для SNMPv3 соединений. Может принимать значения: DES, AES, AES192, AES192C, AES256, AES256C
        • Кодовое слово - парольная фраза для защиты передачи данных
    • Пользователь (для протокола v3) - значение SNMP Context Name согласно документации на устройство SNMP
    • Имя контекста (для протокола v3) - имя пользователя для входящих SNMPv3-соединений
    • Идентификатор контекста (для протокола v3) - значение SNMP Context Engine ID согласно документации на устройство SNMP
    • Расписание запросов – интервал, с которым будут собираться события с источника
    • Маппинг OID для сервера SNMP Traps - правила маппинга OID в поля события. Можно опционально указывать в формате OID:ПолеСобытия через запятую. Например: .1.2.3:User.Data
    • Сохранять информацию об устройстве в каждом событии - сохранять в каждом событии ИБ системную информацию об агенте. Если true работа в данном режиме существенно увеличивает потребление дискового пространства в SIEM
    • Get - список OID через запятую, по которым будут собираться данные
    • Walk - список OID для которых будет проводится попытка SNMP Walk, сканирования всех нижележащих узлов OID
    • Максимальное число повторений при SNMP Walk - ограничивает число извлекаемых значений для всех повторяющихся OID. Если равно нулю - безлимитное
    • Число повторений при ошибках сбора - максимальное число повторений сканирования значения. Если равно 0 - безлимитное
    • Таймаут запроса - максимальный интервал ожидания ответа от устройства. Если равен нулю - агент не будет разрывать соединение в случае зависания запроса
    • Запретить SNMP Bulk (для протоколов v2c и v3) - отключить пакетный обход (метод GETBULK) устройств SNMP v2 и v3.
  3. Сохранить

Удаление

Удалить snmp-коллектор можно с помощью команды:

sudo dpkg -P komrad-snmp-collector