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

Принимая во внимание, о каком количестве разных информационных систем может идти речь, невольно задумываешься о возможных вариантах и подходах подключения возможных информационных систем к SIEM и моим желанием поделиться этими знаниями с коллегами, кто тесно связан и работает с системами данного класса. В качестве примера возьмём наиболее популярную систему Arcsight и рассмотрим возможные варианты подключения к информационным системам компании с помощью FlexConnector.

image

В данной статье хочу представить пошаговую инструкцию взаимодействия FlexСonnector по варианту подключения LOG-FILE тремя возможными способами.

В начале, давайте представим, что есть внутреннее приложение, которое пишет все события в отдельный файл под названием «mytest_log.txt». Эти события необходимо отправить в Arcsight ESM для дальнейшей корреляции, но проблема состоит в том, что необходимого коннектора типа SmartConnector «из коробки» нет. В данном вопросе всегда может выручить коннектор типа FlexConnector, который позволяет корректно передавать события в Arcsight ESM/Logger.

Приведем наглядный пример поступаемых событий от источника в наш файл «mytest_log.txt»:

2017-08-01 01:18:00.579 INFO AUTH: LOGIN SUCCESS. USER: Ivanov. IP: 192.168.0.1
2017-08-01 01:19:13.246 INFO AUTH: LOGIN FAILED. USER: Petrov. IP: 192.168.3.13
2017-08-01 01:20:17.589 INFO AUTH: LOGIN FAILED. USER: Petrov. IP: 192.168.3.13
2017-08-01 01:21:14.646 INFO AUTH: LOGIN FAILED. USER: Petrov. IP: 192.168.3.13
2017-08-01 01:22:09.179 INFO AUTH: LOGIN SUCCESS. USER: Ivanov. IP: 192.168.0.1
2017-08-01 01:23:02.116 INFO AUTH: LOGIN SUCCESS. USER: Petrov. IP: 192.168.3.13

Следующим шагом необходимо установить Arcsight SmartConnector и написать FlexConnector к текущему log-файлу.

Установка и настройка Arcsight SmartConnector
  1. После запуска указываем путь установки коннектора.
    Рекомендация: изменить название стандартного каталога, на тип коннектора.
  2. Выбираем куда сохранить иконки и нажимаем Next.
  3. Проверяем параметры установки и нажимаем Install.
  4. В процессе установки выбираем «Add a Connector», нажимаем Next.
  5. Выбираем тип коннектора «Arcsight FlexConnector Regex File», нажимаем Next.
  6. На данном этапе мы указываем только путь к Log-файлу, нажимаем Next.
  7. Указываем тип получателя. В моём случае это «Arcsight Manager (encrypted)», нажимаем Next.
  8. Указываем необходимые параметры получателя, нажимаем Next.
  9. Указываем информацию о нашем коннекторе, нажимаем Next.
  10. Импортируем сертификат от Arcsight ESM, нажимаем Next.
  11. Проверяем параметры коннектора, нажимаем Next.
  12. Теперь необходимо выбрать способ запуска коннектора. При разработке я выбирают ручной запуск «Leave as a standalone application», так удобнее отлавливать ошибки при старте коннектора. Нажимаем Next.
  13. Настройка коннектора завершена. Подтверждаем завершение установки.

Убедимся что наш коннектор успешно добавлен в Arcsight ESM.



После написания FlexConnector, необходимо указать путь к конфигурационному файлу.

  • Запускаем C:\$ARCSIGHT_HOME\current\bin> .\runagentsetup.bat
    Выбираем “Modify Connector”, нажимаем Next.
  • Выбираем “Modify connector parameters”, нажимаем Next.
  • В поле “Configuration File” указываем только имя конфигурационного файла.


Написать FlexConnector под LOG File можно 3 способами:

  1. Написание конфигурационного файла в текстовом редакторе
    Самым популярным способом в настоящее время остается написание коннекторов используя текстовый редактор.

    В каталоге $ARCSIGHT_HOME\current\user\agent\flexagent создаем конфигурационный файл MyTest_MyParser_1.sdkrfilereader.properties.

    Образец готового файла:

    #MyTest MyParser Configuration File
    replace.defaults=true
    trim.tokens=true
    comments.start.with=#

    #2017-08-01 01:18:00.579 INFO AUTH: LOGIN SUCCESS. USER: Ivanov. IP: 192.168.0.1

    regex=(.*)\\sINFO\\sAUTH\\D\\s(.*)\\D\\sUSER\\D\\s(.*)\\D\\sIP\\D\\s(.*)

    token.count=4

    token[0].name=Date
    token[0].type=TimeStamp
    token[0].format=yyyy-MM-dd HH:mm:ss.SSS
    token[1].name=Name1
    token[1].type=String
    token[2].name=Username
    token[2].type=String
    token[3].name=UserAddress
    token[3].type=IPAddress

    additionaldata.enabled=false

    event.deviceVendor=__stringConstant(MyTest)
    event.deviceProduct=__stringConstant(MyParser)
    event.endTime=Date
    event.name=Name1
    event.sourceUserName=Username
    event.sourceAddress=UserAddress

    Структура файла очень проста.

    • Пишем входные параметры для коннектора

      #MyTest MyParser Configuration File
      replace.defaults=true
      trim.tokens=true
      comments.start.with=#

    • Пишем регулярное выражение для нашего лога

      #2017-08-01 01:18:00.579 INFO AUTH: LOGIN SUCCESS. USER: Ivanov. IP: 192.168.0.1
      regex=(.*)\\sINFO\\sAUTH\\D\\s(.*)\\D\\sUSER\\D\\s(.*)\\D\\sIP\\D\\s(.*)

    • Указываем количество ключей (отсчёт начинается с “0” )

      token.count=4
    • Описываем ключи (имя, тип, формат)

      token[0].name=Date
      token[0].type=TimeStamp
      token[0].format=yyyy-MM-dd HH:mm:ss.SSS
      token[1].name=Name1
      token[1].type=String
      token[2].name=Username
      token[2].type=String
      token[3].name=UserAddress
      token[3].type=IPAddress

    • Указываем maping полей и submessage

      event.deviceVendor=__stringConstant(MyTest)
      event.deviceProduct=__stringConstant(MyParser)
      event.endTime=Date
      event.name=Name1
      event.sourceUserName=Username
      event.sourceAddress=UserAddress


    Данный способ является простым в написании и самым популярным по использованию среди специалистов Arcsight.

    Из минусов могу отметить только поиск ошибок, но данная проблема решается запуском коннектора в состоянии “Leave as a standalone application” где мы увидем всю техническую информацию.
  2. Использование встроенной утилиты REGEX
    У Arcsight SmartConnector есть встроенная утилита regex которая запускает графическую оболочку для создания, либо проверки FlexConnector.

    1. Запускаем консоль от имени администратора и переходим в каталог установки нашего FlexConnector.
      Запускаем утилиту regex: C:\$ARCSIGHT_HOME\current\bin> .\arcsight.bat regex



      Данная утилита позволяет создать конфигурационный файл для нашего коннектора.
    2. Создаем новый файл: File — New FlexAgent Regex File. Конфигурационный файл должен храниться в каталоге $ARCSIGHT_HOME\current\user\agent\flexagent с расширением файла FILE_NAME.sdkrfilereader.properties.
    3. Подключаем наш источник событий: File — Load Log File. Можно указать путь к реальным логам или тестовым.
    4. Необходимо написать регулярное выражение для нашего лога. Сделать это можно в поле Regex (для удобства есть кнопка Generate).
      Моя регулярка: (.*)\sINFO\sAUTH\D\s(.*)\D\sUSER\D\s(.*)\D\sIP\D\s(.*)
      Нажимаем Test.
    5. Необходимо дать названия нашим группам.

    6. Все группы по умолчанию имеют тип String, поэтому для групп Date и UserAddress необходимо указать тип TimeStamp и IPAddress.
      Так же опишем временной формат для группы Date (подробная информация в FlexConnector Guide).

    7. Далее делаем мапинг полей путём перетаскивания групп и выбора полей для отображения в Arcsight ESM.



      Утилита regex не позволяет выбрать для формата IPAddress поле event.sourceAddress, поэтому его необходимо дописать руками:

      event.sourceAddress=UserAddress

      Так же обязательными полями являются Device Product и Device Vendor. Добавим в конфигурационный файл следующие строки:

      event.deviceVendor=__stringConstant(MyTest)
      event.deviceProduct=__stringConstant(MyParser)

    8. Нажимаем Test и проверяем, что все события распарсились. Сохраняем нашу конфигурацию: File — Save FlexAgent Regex File.

    Запускаем коннектор, генерируем новые события в log-файл и проверяем поступление событий в Arcsight ESM.


  3. Использование Arcsight Quick Flex
    Во время написания данной статьи я впервые воспользовался Arcsight Quick Flex и был приятно удивлён. Данный софт позволяет писать быстро и без ошибок конфигурационный файл, а написание submessage превращается в одно удовольствие.

    1. Создадим новый проект:
      Vendor: MyTest
      Product: MyParser
      Version: 1
      Log File Path: указываем директорию с логами
      Project Directory: указываем каталог проекта (не конфигурационного файла!!!)

    2. После загрузки логов события имеют статус “Base Unparsed”. Запускаем вкладку “Base Regex Editor”.

    3. В поле “Base Regex” указываем наше регулярное выражение.



      Можно проверить корректность регулярного выражения нажав кнопку “Matching details”.

    4. Нажимаем Tokenize и сохраняем настройки.

      Далее для каждого ключа указываем тип, формат, описание и поле для мапинга

    5. Сохраняем и возвращаемся на главную страницу нажав Log View. Далее нажимаем Refresh и все наши события переходят в статус “Base Parsed”

    6. Теперь нажимаем Generate Parser и получаем готовый конфигурационный файл для FlexConnector. Экспортируем файл в папку с коннектором:

      $ARCSIGHT_HOME\current\user\agent\flexagent


    Запускаем коннектор, генерируем новые события в log-file и проверяем поступление событий в Arcsight ESM.


Итог: В статье были указаны базовые навыки для написания FlexConnector, но если вам интересны такие фишки как категоризация, submessage, mapping и т.д., то буду готов описать их в следующих статьях.

Комментарии (0)