Прием сообщений системного журнала и CEF в Microsoft Sentinel с помощью агента Azure Monitor

В этой статье описывается, как использовать системный журнал с помощью AMA и общего формата событий (CEF) через соединители AMA для быстрого фильтрации и приема сообщений системного журнала, в том числе с компьютеров Linux и устройств безопасности сети и (модуль).

Эти соединители устанавливают агент Azure Monitor (AMA) на любом компьютере Linux, с которого требуется собирать сообщения системного журнала и (или) CEF. Этот компьютер может быть источником сообщений, или это может быть средство пересылки, которое собирает сообщения с других компьютеров, таких как сетевые устройства или устройства безопасности и (модуль). Соединитель отправляет инструкции агентов на основе определяемого вами правила сбора данных (DCR ). Контроллеры домена указывают системы для отслеживания и типов журналов или сообщений для сбора, и они определяют фильтры, применяемые к сообщениям перед приемом, для повышения производительности и повышения эффективности запросов и анализа.

Внимание

28 февраля 2023 года мы внесли изменения в схему таблицы CommonSecurityLog. После этих изменений может потребоваться просмотреть и обновить пользовательские запросы. Дополнительные сведения см. в разделе "Рекомендуемые действия" в этой записи блога. Содержимое вне поля (обнаружения, запросы охоты, книги, синтаксический анализ и т. д.) обновлено Microsoft Sentinel.

Обзор

Системный журнал и CEF — это два распространенных формата для ведения журнала данных с разных устройств и приложений. Они помогают системным администраторам и аналитикам безопасности отслеживать и устранять неполадки сети и выявлять потенциальные угрозы или инциденты.

Что такое Системный журнал?

Системный журнал — это стандартный протокол для отправки и получения сообщений между различными устройствами или приложениями по сети. Изначально она была разработана для систем Unix, но в настоящее время она широко поддерживается различными платформами и поставщиками. Сообщения системного журнала имеют предопределенную структуру, состоящую из приоритета, метки времени, имени узла, имени приложения, идентификатора процесса и текста сообщения. Сообщения системного журнала можно отправлять по протоколу UDP, TCP или TLS в зависимости от конфигурации и требований к безопасности.

Что такое общий формат событий (CEF)?

CEF или Общий формат событий — это нейтральный от поставщика формат для ведения журнала данных с сетевых и (модуль) устройств и (модуль), таких как брандмауэры, маршрутизаторы, решения обнаружения и реагирования, а также системы обнаружения вторжений, а также другие виды систем, таких как веб-серверы. Расширение Системного журнала было разработано специально для решений для управления сведениями о безопасности и событиями (SIEM). Сообщения CEF имеют стандартный заголовок, содержащий такие сведения, как поставщик устройства, продукт устройства, версия устройства, класс событий, серьезность события и идентификатор события. Сообщения CEF также имеют переменное число расширений, которые предоставляют дополнительные сведения о событии, такие как исходные и конечные IP-адреса, имя пользователя, имя файла или действие, выполняемое.

Как Microsoft Sentinel собирает сообщения системного журнала и CEF с помощью агента Azure Monitor

На следующих схемах показана архитектура сбора сообщений Syslog и CEF в Microsoft Sentinel с помощью системного журнала с помощью AMA и общего формата событий (CEF) через соединители AMA .

На этой схеме показаны сообщения системного журнала, собираемые с одной отдельной виртуальной машины Linux, на которой установлен агент Azure Monitor (AMA).

Diagram of Syslog collection from single source.

Процесс приема данных с помощью агента Azure Monitor использует следующие компоненты и потоки данных:

  • Источники журналов: это различные виртуальные машины Linux в вашей среде, которые создают сообщения системного журнала. Эти сообщения собираются локальной управляющей программой системного журнала на TCP или UDP-порте 514 (или другом порту на ваш выбор).

  • Локальная управляющая программа системного журнала ( rsyslog либо syslog-ng) собирает сообщения журнала на TCP или UDP-порте 514 (или другом порту на ваш выбор). Затем управляющая программа отправляет эти журналы агенту Azure Monitor (см. примечание ниже).

  • Агент Azure Monitor, установленный на каждой виртуальной машине Linux, из которой требуется собирать сообщения системного журнала, настраивая соединитель данных в соответствии с приведенными ниже инструкциями. Агент анализирует журналы и отправляет их в рабочую область Microsoft Sentinel (Log Analytics).

  • Рабочая область Microsoft Sentinel (Log Analytics): сообщения системного журнала, отправленные здесь, отображаются в таблице Системного журнала, где можно запрашивать журналы и выполнять аналитику для их обнаружения и реагирования на угрозы безопасности.

Примечание.

  • Агент Azure Monitor поддерживает syslog RFCs 3164 и 5424.

  • Если вы хотите использовать порт, отличный от 514 для получения сообщений Syslog/CEF, убедитесь, что конфигурация порта в управляющей программе Системного журнала соответствует тому, что приложение создает сообщения.

  • Управляющая программа Системного журнала отправляет журналы агенту Azure Monitor двумя способами в зависимости от версии AMA:

    • AMA версии 1.28.11 и более поздних версий получают журналы на TCP-порте 28330.
    • Более ранние версии AMA получают журналы через сокет домена Unix.

Настройка соединителей данных

Настройка системного журнала с помощью соединителя AMA

Процесс установки системного журнала через соединитель AMA состоит из двух частей:

  1. Установите агент Azure Monitor и создайте правило сбора данных (DCR).

  2. Если вы собираете журналы с других компьютеров с помощью средства пересылки журналов, запустите сценарий установки в средстве пересылки журналов, чтобы настроить управляющая программа Syslog для прослушивания сообщений с других компьютеров и открыть необходимые локальные порты.

Необходимые компоненты

  • Необходимо включить соответствующее решение Microsoft Sentinel — системный журнал и (или) общий формат событий.

  • У вашей учетной записи Azure должны быть следующие роли и разрешения:

    Встроенная роль Область Причина
    - Участник виртуальной машины
    - Компьютер с Подключение Azure
       Ресурс Администратор istrator
  • Виртуальные машины
  • Масштабируемые наборы виртуальных машин
  • Серверы с поддержкой Azure Arc
  • Развертывание агента
    Любая роль, которая включает действие
    Microsoft.Resources/deployments/*
  • Подписка
  • Группа ресурсов
  • Существующее правило сбора данных
  • Развертывание шаблонов Azure Resource Manager
    Monitoring Contributor (Участник мониторинга)
  • Подписка
  • Группа ресурсов
  • Существующее правило сбора данных
  • Создание или изменение правил сбора данных

Предварительные требования для пересылки журналов

Если вы собираете сообщения из средства пересылки журналов, применяются следующие дополнительные предварительные требования:

  • Для сбора журналов требуется назначенная виртуальная машина Linux ( сервер пересылки журналов).

  • Если средство пересылки журналов не является виртуальной машиной Azure, на ней должен быть установлен агент azure Arc Подключение ed Machine.

  • Виртуальная машина пересылки журналов Linux должна быть установлена на Python 2.7 или 3. Для проверки используйте команду python --version или python3 --version. Если вы используете Python 3, убедитесь, что он задан в качестве команды по умолчанию на компьютере или выполните приведенные ниже скрипты с помощью команды Python3 вместо python.

  • Средство пересылки журналов должно включать syslog-ng управляющая программа или rsyslog управляющая программа.

  • Сведения о требованиях к пространству для сервера пересылки журналов см. в справочнике по производительности агента Azure Monitor. Вы также можете просмотреть эту запись блога, включающую проекты для масштабируемого приема.

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

Избегайте дублирования данных

Использование одного и того же средства для сообщений Системного журнала и CEF может привести к дублированию данных между таблицами CommonSecurityLog и Syslog.

Чтобы избежать этого сценария, используйте один из следующих методов:

  • Если исходное устройство включает настройку целевого объекта: на каждом исходном компьютере, который отправляет журналы в средство пересылки журналов в формате CEF, измените файл конфигурации системного журнала, чтобы удалить средства, используемые для отправки сообщений CEF. Таким образом, объекты, отправленные в CEF, также не будут отправлены в Системном журнале. Убедитесь, что каждый DCR, настроенный в следующих шагах, использует соответствующий объект для CEF или Syslog соответственно.

    Чтобы просмотреть пример того, как упорядочить DCR для приема сообщений syslog и CEF из одного агента, перейдите к потокам Syslog и CEF в одном DCR далее в этой статье.

  • Если изменение объекта для исходного (модуль) неприменимо: используйте преобразование времени приема для фильтрации сообщений CEF из потока системного журнала, чтобы избежать дублирования, как показано в приведенном ниже примере запроса. Данные будут отправляться дважды с компьютера сборщика в рабочую область.

    source |
    where ProcessName !contains "CEF"
    

Рекомендации по безопасности пересылки журналов

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

Если устройства отправляют журналы Syslog и CEF через TLS (например, сервер пересылки журналов находится в облаке), необходимо настроить управляющая программа Системного журнала (rsyslog или syslog-ng) для обмена данными в TLS:

Установите AMA и создайте правило сбора данных (DCR)

Этот шаг можно выполнить одним из двух способов.

  • Разверните и настройте системный журнал с помощью соединителя данных AMA на портале Microsoft Sentinel. С помощью этой установки вы можете создавать, управлять и удалять контроллеры домена для каждой рабочей области. AMA будет автоматически установлен на виртуальных машинах, которые выбраны в конфигурации соединителя.
    —ИЛИ—
  • Отправьте HTTP-запросы в API приема журналов. С помощью этой установки можно создавать, управлять и удалять контроллеры домена. Этот параметр является более гибким, чем портал. Например, с помощью API можно фильтровать по определенным уровням журналов, где с пользовательским интерфейсом можно выбрать только минимальный уровень журнала. Недостатком является то, что перед созданием DCR необходимо вручную установить агент Azure Monitor в средство пересылки журналов.

Выберите соответствующую вкладку ниже, чтобы просмотреть инструкции по каждому способу.

Откройте страницу соединителя и запустите мастер DCR

  1. Войдите на портал Azure и перейдите к службе Microsoft Sentinel.

  2. Выбор соединителей данных в меню навигации

  3. Введите системный журнал в поле поиска . В результатах выберите системный журнал через соединитель AMA .

  4. На панели сведений выберите страницу "Открыть соединитель".

  5. В области конфигурации выберите пункт +Создать правило сбора данных.

    Screenshot showing the CEF via AMA connector page.

  6. На вкладке "Базовый " :

    • Введите имя DCR.
    • Выберите свою подписку.
    • Выберите группу ресурсов, в которой нужно найти DCR.

    Screenshot showing the DCR details in the Basic tab.

  7. Выберите Далее: Ресурс >.

Определение ресурсов (виртуальные машины)

На вкладке "Ресурсы" выберите компьютеры, на которых требуется установить AMA, в этом случае компьютер пересылки журналов. (Если средство пересылки журналов не отображается в списке, возможно, не установлен агент azure Подключение machine.)

  1. Используйте доступные фильтры или поле поиска, чтобы найти виртуальную машину пересылки журналов. Вы можете развернуть подписку в списке, чтобы просмотреть ее группы ресурсов и группу ресурсов, чтобы просмотреть ее виртуальные машины.

  2. Выберите виртуальную машину пересылки журналов, на которую вы хотите установить AMA. (Поле проверка появится рядом с именем виртуальной машины при наведении на него указателя мыши.)

    Screenshot showing how to select resources when setting up the DCR.

  3. Просмотрите изменения и нажмите кнопку "Далее: Собрать >".

Выбор объектов и серьезности и создание DCR

Примечание.

Использование одного и того же объекта для сообщений Системного журнала и CEF может привести к дублированию данных. Узнайте, как избежать дублирования данных.

  1. На вкладке "Сбор" выберите минимальный уровень журнала для каждого объекта. При выборе уровня журнала Microsoft Sentinel собирает журналы для выбранного уровня и других уровней с более высоким уровнем серьезности. Например, если выбрать LOG_ERR, Microsoft Sentinel собирает журналы для уровней LOG_ERR, LOG_CRIT, LOG_ALERT и LOG_EMERG.

    Screenshot showing how to select log levels when setting up the DCR.

  2. Просмотрите выбранные варианты и нажмите кнопку "Далее: просмотр и создание".

  3. На вкладке "Рецензирование" и "Создать " нажмите кнопку "Создать".

    Screenshot showing how to review the configuration of the DCR and create it.

  • Соединитель установит агент Azure Monitor на компьютерах, выбранных при создании DCR.

  • Вы увидите уведомления из портал Azure при создании DCR и установке агента.

  • Выберите "Обновить" на странице соединителя, чтобы увидеть DCR, отображаемый в списке.

Примеры разделов объектов и уровней журналов

Просмотрите эти примеры параметров объектов и уровней журналов. Поле name содержит имя фильтра.

Для приема сообщений CEF значение "streams" должно быть "Microsoft-CommonSecurityLog" вместо "Microsoft-Syslog".

В этом примере собираются события из cronобъектов , local0daemonlocal3 и uucp объектов с AlertWarningErrorCriticalEmergency уровнями журнала , а также уровнями журналов:

    "dataSources": {
      "syslog": [
        {
        "name": "SyslogStream0",
        "streams": [
          "Microsoft-Syslog"
        ],
        "facilityNames": [ 
          "cron",
          "daemon",
          "local0",
          "local3", 
          "uucp"
        ],
        "logLevels": [ 
          "Warning", 
          "Error", 
          "Critical", 
          "Alert", 
          "Emergency"
        ]
      }
    ]
  }
Потоки системного журнала и CEF в одном DCR

В этом примере показано, как собирать сообщения системного журнала и CEF в одном DCR.

Дополнительные сведения о приеме сообщений Syslog и CEF с помощью одного агента и DCR см . в статье об устранении дублирования данных.

DCR собирает сообщения о событиях CEF для:

  • И authpriv объекты с Infoуровнями журнала , WarningEmergencyNoticeErrorCriticalAlertmark
  • Объект daemon с уровнями журналов, а ErrorEmergencyAlertCriticalтакже уровнями журнала Warning

Он собирает сообщения о событиях системного журнала для:

  • kern, local0local5и news объекты с CriticalAlertуровнями журнала и Emergency
  • Объекты mail и uucp объекты с Emergency уровнем журнала
    "dataSources": {
      "syslog": [
        {
          "name": "CEFStream1",
          "streams": [ 
            "Microsoft-CommonSecurityLog"
          ],
          "facilityNames": [ 
            "authpriv", 
            "mark"
          ],
          "logLevels": [
            "Info",
            "Notice", 
            "Warning", 
            "Error", 
            "Critical", 
            "Alert", 
            "Emergency"
          ]
        },
        {
          "name": "CEFStream2",
          "streams": [ 
            "Microsoft-CommonSecurityLog"
          ],
          "facilityNames": [ 
            "daemon"
          ],
          "logLevels": [ 
            "Warning", 
            "Error", 
            "Critical", 
            "Alert", 
            "Emergency"
          ]
        },
        {
          "name": "SyslogStream3",
          "streams": [ 
            "Microsoft-Syslog"
          ],
          "facilityNames": [ 
            "kern",
            "local0",
            "local5", 
            "news"
          ],
          "logLevels": [ 
            "Critical", 
            "Alert", 
            "Emergency"
          ]
        },
        {
          "name": "SyslogStream4",
          "streams": [ 
            "Microsoft-Syslog"
          ],
          "facilityNames": [ 
            "mail",
            "uucp"
          ],
          "logLevels": [ 
            "Emergency"
          ]
        }
      ]
    }

Запуск скрипта "установка"

Скрипт "install" не устанавливает ничего, но настраивает управляющая программа Syslog в сервере пересылки журналов правильно для сбора журналов.

  1. На странице соединителя скопируйте командную строку, которая отображается в разделе Выполнить следующую команду, чтобы установить и применить сборщик CEF: выбрав значок копирования рядом с ним.

    Screenshot of command line on connector page.

    Вы также можете скопировать его здесь:

    sudo wget -O Forwarder_AMA_installer.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Forwarder_AMA_installer.py&&sudo python Forwarder_AMA_installer.py
    
  2. Войдите на компьютер пересылки журналов, где вы только что установили AMA.

  3. Вставьте команду, скопированную на последнем шаге, чтобы запустить скрипт установки.
    Скрипт настраивает rsyslog управляющая syslog-ng программа для использования требуемого протокола и перезапускает управляющая программа. Скрипт открывает порт 514 для прослушивания входящих сообщений в протоколах UDP и TCP. Чтобы изменить этот параметр, обратитесь к файлу конфигурации управляющей программы Системного журнала в соответствии с типом управляющей программы, запущенным на компьютере:

    • rsyslog: /etc/rsyslog.conf;
    • syslog-ng: /etc/syslog-ng/syslog-ng.conf.

    Примечание.

    Чтобы избежать сценариев полного диска, в которых агент не может функционировать, рекомендуется установить или rsyslog настроить syslog-ng конфигурацию, чтобы не хранить ненужные журналы. Сценарий полного диска нарушает функцию установленной AMA. Дополнительные сведения о RSyslog или Syslog-ng.

Тестирование соединителя

  1. Чтобы проверить, запущена ли управляющая программа системного журнала на порту UDP и прослушивается ли AMA, выполните следующую команду:

    netstat -lnptv
    

    Вы увидите rsyslog управляющую программу, syslog-ng прослушивающую порт 514.

  2. Чтобы записать сообщения, отправленные из средства ведения журнала или подключенного устройства, выполните следующую команду в фоновом режиме:

    tcpdump -i any port 514 -A -vv &
    
  3. После завершения проверки рекомендуется остановить tcpdump: введите fg и нажмите клавиши CTRL+C.

  4. Чтобы отправить демонстрационные сообщения, выполните одно из следующих действий:

    • Используйте служебную программу netcat. В этом примере служебная программа считывает данные, размещенные по команде echo , с отключенным параметром новой строки. Затем программа записывает данные в порт 514 UDP в localhost без времени ожидания. Чтобы выполнить служебную программу netcat, может потребоваться установить дополнительный пакет.

      echo -n "<164>CEF:0|Mock-test|MOCK|common=event-format-test|end|TRAFFIC|1|rt=$common=event-formatted-receive_time" | nc -u -w0 localhost 514
      
    • Используйте средство ведения журнала. В этом примере сообщение записывается в local 4 объект на уровне Warningсерьезности, в порт 514на локальном узле в формате RFC CEF. --rfc3164 Флаги -t используются для соответствия ожидаемому формату RFC.

      logger -p local4.warn -P 514 -n 127.0.0.1 --rfc3164 -t CEF "0|Mock-test|MOCK|common=event-format-test|end|TRAFFIC|1|rt=$common=event-formatted-receive_time"
      
  5. Чтобы убедиться, что соединитель установлен правильно, запустите скрипт устранения неполадок с помощью одной из следующих команд:

    • Для журналов CEF выполните следующую команду:

       sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --cef
      
    • Для журналов адаптивного устройства безопасности Cisco (ASA) выполните следующую команду:

      sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --asa
      
    • Для журналов Cisco Firepower Threat Defense (FTD) выполните следующую команду:

      sudo wget -O Sentinel_AMA_troubleshoot.py https://raw.githubusercontent.com/Azure/Azure-Sentinel/master/DataConnectors/Syslog/Sentinel_AMA_troubleshoot.py&&sudo python Sentinel_AMA_troubleshoot.py --ftd