Microsoft SQL Server

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

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

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

Настройка MS SQL

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

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

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

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

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

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

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

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

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

  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 Endpoint.

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

По умолчанию добавленный хост находится в группе default. Добавьте его в группу, в которой настроен сбор журнала Application.

Настройка в 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>

        где:

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

        • <instance> — сущность сервера СУБД.

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

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

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

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

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

          microsoft sql server secrets

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

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

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

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

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

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

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

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

      DECLARE @appname NVARCHAR(15);
      
      SET @appname = N'MSSQL';
      
      SELECT c.session_id,
      @@SERVERNAME as dvchost,
      s.login_name,
      s.status,
      st.text as query,
      s.login_time,
      s.program_name,
      s.last_request_start_time as rt,
      c.auth_scheme,
      s.host_process_id,
      s.nt_domain,
      s.nt_user_name,
       s.host_name as shost,
      c.client_net_address as src,
      c.client_tcp_port as spt,
      c.local_net_address as dst,
      c.local_tcp_port as dpt,
      @appname as appname
      FROM sys.dm_exec_connections c
      INNER JOIN sys.dm_exec_sessions s
      ON c.session_id = s.session_id
      CROSS APPLY sys.dm_exec_sql_text(most_recent_sql_handle) AS st
      WHERE (DATEDIFF(second,{d '1970-01-01'},
      s.last_request_start_time) >= DATEDIFF(second,{d '1970-01-01'}, DATEADD(SECOND, -15, GetDate())));
    • Интервал запроса, секунд: введите значение 15.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    microsoft sql server pipeline

  10. Нормализацию событий из других журналов, которые собираются через Endpoint, настройте на конвейере, отвечающем за нормализацию событий Endpoint. Для этого:

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

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

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

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

    • Порт точки входа: введите значение в соответствии с настройками на стороне Microsoft SQL Server.

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

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

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

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

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

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

    microsoft sql server endpoint pipeline

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

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

dproduct = "SQL Server"

microsoft sql server events table

Таблица маппинга

Таблица соответствия полей события для всех рассмотренных типов событий представлена по ссылке.