Microsoft SQL Server: настройка источника

Данное руководство описывает процесс настройки сбора и отправки событий Microsoft SQL Server (MS SQL) в R-Vision SIEM.

Предварительные требования

  • Сетевая доступность сервера СУБД (Microsoft SQL Server) источника по целевому порту и протоколу для каждой ноды кластера SIEM.

  • Учетная запись в СУБД с правами на чтение базы данных.

Настройка MS SQL

Описание подсистемы журналирования MS SQL

Журналирование событий источника может осуществляться двумя путями:

  1. Запись в журнал событий. Например, события журналов сервера Microsoft SQL Server записываются в журнал Application.

    Настройка сбора событий журнала Windows SQL Server с помощью агента платформы R-Vision EVO включает в себя установку агента на хост и настройку политики.
  2. Отдельная настройка журналирования событий. Например, отдельно настраиваются события аудита команд SQL Server.

Создание учетной записи в СУБД MS SQL

Для отправки событий аудита команд создайте сервисную учетную запись в СУБД MS SQL и предоставьте ей права на просмотр всех сеансов на сервере:

GRANT VIEW SERVER STATE TO [имя пользователя];

Настройка аудита MS SQL

Если нет необходимости анализировать запросы к продуктовым базам, аудит действий с ними можно не настраивать. При этом для работы правил корреляции следует обязательно контролировать запросы к базе master.

Для настройки аудита на уровне сервера выполните следующие шаги:

  1. Откройте SQL Server Management Studio.

  2. В боковом меню перейдите в раздел Security.

  3. Откройте контекстное меню Audits и выберите вариант New Audit…​. Будет создан новый объект аудита SQL Server.

  4. Выберите действие, которое будет запущено при сбое журнала аудита:

    • продолжить;

    • остановить операции с базой данных, которые проверяются;

    • завершить работу сервера.

  5. В качестве назначения аудита выберите из выпадающего списка вариант Application Log.

    microsoft sql server audit

  6. Нажмите на кнопку OK.

  7. Откройте контекстное меню созданного аудита и выберите вариант Enable Audit.

  8. Откройте контекстное меню Server Audit Specifications и выберите вариант New Server Audit Specification…​. Откроется окно настроек нового объекта спецификации аудита SQL Server.

  9. Введите название аудита.

  10. Выберите аудит, созданный на уровне сервера.

  11. Укажите в таблице типы событий, которые необходимо логировать.

    microsoft sql server audit spec

  12. Нажмите на кнопку ОК.

Для настройки аудита на уровне базы данных выполните следующие шаги:

  1. Откройте SQL Server Management Studio.

  2. Подключитесь к базе данных, для которой необходимо включить аудит.

  3. В боковом меню перейдите в раздел Security выбранной базы данных.

  4. Откройте контекстное меню папки Database Audit Specifications и выберите вариант New Database Audit Specification…​. Откроется окно настроек нового объекта аудита SQL Server.

    microsoft sql server db audit

  5. Введите имя аудита.

  6. Выберите аудит, созданный на уровне сервера.

  7. Укажите типы событий, которые необходимо логировать.

    microsoft sql server db audit spec

  8. Нажмите на кнопку OK.

Настройка аудита выгрузки ключей и сертификатов MS SQL

Для настройки аудита выгрузки ключей и сертификатов MS SQL выполните следующие шаги:

  1. Откройте SQL Server Management Studio.

  2. Создайте Extended Events-сессию с логированием в файл:

    DROP EVENT SESSION IF EXISTS TrackBackupCryptoFile ON SERVER;
    GO
    
    CREATE EVENT SESSION TrackBackupCryptoFile
    ON SERVER
    ADD EVENT sqlserver.sql_statement_completed
    (
        ACTION (
            sqlserver.sql_text,
            sqlserver.username,
            sqlserver.client_hostname,
            sqlserver.nt_username
        )
        WHERE
            sqlserver.sql_statement_completed.statement LIKE '%BACKUP%CERTIFICATE%' OR
            sqlserver.sql_statement_completed.statement LIKE '%BACKUP%SERVICE%MASTER%KEY%' OR
            sqlserver.sql_statement_completed.statement LIKE '%BACKUP%MASTER%KEY%' OR
            sqlserver.sql_statement_completed.statement LIKE '%BACKUP%SYMMETRIC%KEY%'
    )
    ADD TARGET package0.event_file
    (
        SET filename = 'C:\AuditLogs\TrackBackupCrypto.xel',
            max_file_size = 10,
            max_rollover_files = 5
    );
    GO
    
    ALTER EVENT SESSION TrackBackupCryptoFile ON SERVER STATE = START;
  3. Создайте представление для просмотра событий из файла:

    CREATE VIEW dbo.BackupCryptoAuditLogView AS
    SELECT
        event_xml.value('(event/@timestamp)[1]', 'datetime') AS EventTime,
        ISNULL(event_xml.value('(event/action[@name="username"]/value)[1]', 'nvarchar(100)'), 'N/A') AS SqlLogin,
        ISNULL(event_xml.value('(event/action[@name="client_hostname"]/value)[1]', 'nvarchar(100)'), 'N/A') AS HostName,
        ISNULL(event_xml.value('(event/action[@name="nt_username"]/value)[1]', 'nvarchar(100)'), 'N/A') AS WindowsUser,
        ISNULL(event_xml.value('(event/data[@name="statement"]/value)[1]', 'nvarchar(max)'), 'N/A') AS Statement,
        ISNULL(event_xml.value('(event/action[@name="sql_text"]/value)[1]', 'nvarchar(max)'), 'N/A') AS FullSQL
    FROM sys.fn_xe_file_target_read_file('C:\AuditLogs\TrackBackupCrypto*.xel', NULL, NULL, NULL) AS xelog
    CROSS APPLY (SELECT CAST(xelog.event_data AS XML) AS event_xml) AS evt;
    GO
  4. Настройте автозапуск при старте SQL Server:

    -- Создаем процедуру автозапуска
    CREATE PROCEDURE StartTrackBackupCrypto
    AS
    BEGIN
        IF NOT EXISTS (
            SELECT * FROM sys.dm_xe_sessions WHERE name = 'TrackBackupCryptoFile'
        )
        BEGIN
            ALTER EVENT SESSION TrackBackupCryptoFile ON SERVER STATE = START;
        END
    END;
    GO
    
    -- Включаем запуск при старте SQL Server
    EXEC sp_procoption 'StartTrackBackupCrypto', 'startup', 'on';
  5. Предоставьте необходимые права для просмотра представления сервисной учетной записи, созданной ранее:

    GRANT SELECT ON dbo.BackupCryptoAuditLogView TO [имя пользователя];
    EXEC sp_addrolemember 'db_datareader', [имя пользователя];
    EXEC sp_addsrvrolemember 'VIEW SERVER STATE', [имя пользователя];

Установка агента

Для установки агента обратитесь к документации продукта R-Vision SIEM.

Установите агент R-Vision EVO на станцию и настройте его связь с R-Vision SIEM. После этого в веб-интерфейсе R-Vision SIEM в разделе Агенты появится информация о подключенном хосте.

Добавьте хост в группу, в которой настроен сбор журнала Application.

Настройка в R-Vision SIEM

Настройка отправки событий в R-Vision SIEM

  1. В веб-интерфейсе R-Vision SIEM перейдите в раздел Агенты → Группы агентов.

  2. Создайте группу и добавьте в нее узел, на котором установлен агент.

  3. В созданной группе узлов в секции Чтение файлов нажмите на кнопку Добавить настройку (plus).

  4. В выпадающем списке Тип журнала выберите вариант eventchannel.

  5. В поле Имя журнала введите значение Application.

  6. Если необходимо выбирать события по определенным критериям, введите в поле Фильтр (формат XPATH) выражение XPath. Если фильтр не нужен, введите символ *.

  7. Нажмите на кнопку Сохранить.

  8. Дождитесь применения политики группы на узле. Сбор событий настроен.

Настройка обработки событий в R-Vision SIEM

Для настройки сбора и нормализации событий источника в R-Vision SIEM выполните следующие шаги:

  1. В интерфейсе R-Vision SIEM создайте секрет со строкой подключения. Для этого:

    1. Перейдите в разделы Ресурсы → Секреты → Создать:

    2. В раскрывшемся окне создания секрета заполните поля:

      • Название: введите название секрета.

      • Описание (опционально): опишите, для чего будет использоваться секрет.

      • Тип секрета: выберите вариант Строка подключения.

      • Строка подключения: введите строку вида:

        jdbc:sqlserver://<address>\<instance>:<port>;encrypt=false;databaseName=<database>;user=<user>;password=<password>;applicationName=SIEM_MONITOR

        где:

        • <address> — адрес сервера базы данных.

        • <instance> — опциональная сущность сервера СУБД. Для использования сущность должна быть заранее создана с помощью SQL Server Management Studio.

        • <port> — порт подключения.

        • <database> — имя базы событий аудита.

        • <user> — логин пользователя базы данных.

        • <password> — пароль пользователя базы данных.

          Пример 1. Пример строки подключения:
          jdbc:sqlserver://10.150.15.34\MSSQLSERVER1:1433;encrypt=false;databaseName=master;user=user;password=P@ssw0rd;applicationName=SIEM_MONITOR

          microsoft sql server secrets

    3. Нажмите на кнопку Создать.

  2. В интерфейсе R-Vision SIEM создайте новый конвейер в коллекторе.

  3. Добавьте на конвейер элемент Точка входа для событий аудита команд MS SQL со следующими параметрами:

    • Название: введите название точки входа.

    • Тип точки входа: выберите вариант Database.

    • Драйвер базы данных: выберите вариант MS SQL.

    • Адрес подключения: выберите секрет, созданный ранее.

    • SQL-запрос: введите SQL-запрос.

      Пример 2. Пример запроса:
      DECLARE @appname NVARCHAR(15) = N'MSSQL';
      
      ;WITH RecentSessions AS (
          SELECT
              c.session_id,
              c.most_recent_sql_handle,
              c.client_net_address AS src,
              c.client_tcp_port AS spt,
              c.local_net_address AS dst,
              c.local_tcp_port AS dpt,
              c.auth_scheme,
              s.login_name,
              s.status,
              s.login_time,
              s.program_name,
              s.last_request_start_time AS rt,
              s.host_process_id,
              s.nt_domain,
              s.nt_user_name,
              s.host_name AS shost
          FROM sys.dm_exec_connections AS c
          INNER JOIN sys.dm_exec_sessions AS s
              ON c.session_id = s.session_id
          WHERE s.last_request_start_time >= DATEADD(SECOND, -15, GETDATE())
            AND s.program_name <> 'SIEM_MONITOR'
      	  AND s.program_name <> 'SQLServerCEIP'
            AND c.most_recent_sql_handle IS NOT NULL
      )
      SELECT
          rs.session_id,
          @@SERVERNAME AS dvchost,
          rs.login_name,
          rs.status,
          st.text AS query,
          rs.login_time,
          rs.program_name,
          rs.rt,
          rs.auth_scheme,
          rs.host_process_id,
          rs.nt_domain,
          rs.nt_user_name,
          rs.shost,
          rs.src,
          rs.spt,
          rs.dst,
          rs.dpt,
          @appname AS appname
      FROM RecentSessions AS rs
      CROSS APPLY sys.dm_exec_sql_text(rs.most_recent_sql_handle) AS st
      ORDER BY rs.rt DESC;
    • Интервал запроса, секунд: введите значение 15.

  4. Добавьте на конвейер дополнительный элемент Точка входа для событий выгрузки ключей и сертификатов со следующими параметрами:

    • Название: введите название точки входа.

    • Тип точки входа: выберите вариант Database.

    • Драйвер базы данных: выберите вариант MS SQL.

    • Адрес подключения: выберите секрет, созданный ранее.

    • SQL-запрос: введите SQL-запрос.

      Пример 3. Пример запроса:
      DECLARE @dproduct NVARCHAR(50);
      DECLARE @appname NVARCHAR(15);
      
      SET @dproduct = N'SQL Server Crypto';
      SET @appname = N'MSSQL';
      
      SELECT
          bcalv.*,
          @dproduct AS device_product,
          @appname AS appname,
          @@SERVERNAME AS dvchost
      FROM dbo.BackupCryptoAuditLogView bcalv
      WHERE EventTime > DATEADD(S, CONVERT(INT, ?)+1, '1970-01-01') ORDER BY bcalv.EventTime ASC;
    • Поле идентификатора: введите ключ EventTime со значением текущего времени в формате UNIX-time.

    • Интервал запроса, секунд: введите значение 15.

  5. Добавьте на конвейер элемент Нормализатор с правилом Microsoft SQL Server (идентификатор правила: RV-N-212).

  6. Соедините нормализатор с точками входа.

  7. Добавьте на конвейер элемент Конечная точка типа Хранилище событий.

  8. Соедините конечную точку с нормализатором.

  9. Сохраните и установите конфигурацию конвейера.

    Пример конфигурации конвейера:

    microsoft sql server pipeline

Нормализацию событий из других журналов, которые собираются с помощью агента R-Vision EVO, настройте на отдельном конвейере. Для этого:

  1. В интерфейсе R-Vision SIEM создайте новый конвейер в коллекторе.

  2. Добавьте на конвейер элемент Точка входа со следующими параметрами:

    • Название: введите название точки входа.

    • Тип точки входа: выберите вариант R-Vision Endpoint.

    • Домен: введите значение в формате gw-<your_gateway_id>, где <your_gateway_id> — ID шлюза.

  3. Добавьте на конвейер элемент Нормализатор с правилом Microsoft SQL Server (идентификатор правила: RV-N-192).

  4. Соедините нормализатор с точкой входа.

  5. Добавьте на конвейер элемент Конечная точка типа Хранилище событий.

  6. Соедините конечную точку с нормализатором.

  7. Сохраните и установите конфигурацию конвейера.

    Пример конфигурации конвейера:

    microsoft sql server endpoint pipeline

После настройки передачи событий если настройка выполнена корректно, в хранилище начнут поступать события из журналов SQL Server.

Найти события источника в хранилище можно по фильтру:

device_product = "sql_server"

microsoft sql server events search

Была ли полезна эта страница?

Обратная связь