Microsoft SQL Server
Данное руководство описывает процесс настройки сбора и отправки событий Microsoft SQL Server (MS SQL) в R-Vision SIEM.
Предварительные требования
-
Сетевая доступность сервера СУБД источника по целевому порту и протоколу для каждой ноды кластера SIEM.
-
Учетная запись в СУБД с правами на чтение базы данных.
Настройка MS SQL
Описание подсистемы журналирования MS SQL
Журналирование событий источника может осуществляться двумя путями:
-
Запись в журнал событий. Например, события журналов сервера Microsoft SQL Server записываются в журнал Application.
Настройка сбора событий журнала Windows SQL Server с помощью R-Vision Endpoint включает в себя установку агента R-Vision Endpoint на конечной точке и настройку политики. -
Отдельная настройка журналирования событий. Например, отдельно настраиваются события аудита команд SQL Server.
Создание учетной записи в СУБД MS SQL
Для отправки событий аудита команд создайте сервисную учетную запись в СУБД MS SQL и предоставьте ей права на просмотр всех сеансов на сервере:
GRANT VIEW SERVER STATE TO [имя пользователя];
Настройка аудита MS SQL
Для настройки аудита на уровне сервера выполните следующие шаги:
-
Откройте SQL Server Management Studio.
-
В боковом меню перейдите в раздел Security.
-
Откройте контекстное меню Audits и выберите вариант New Audit…. Будет создан новый объект аудита SQL Server.
-
Выберите действие, которое будет запущено при сбое журнала аудита:
-
продолжить;
-
остановить операции с базой данных, которые проверяются;
-
завершить работу сервера.
-
-
В качестве назначения аудита выберите из выпадающего списка вариант Application Log.
-
Нажмите на кнопку OK.
-
Откройте контекстное меню созданного аудита и выберите вариант Enable Audit.
-
Откройте контекстное меню Server Audit Specifications и выберите вариант New Server Audit Specification…. Откроется окно настроек нового объекта спецификации аудита SQL Server.
-
Введите название аудита.
-
Выберите аудит, созданный на уровне сервера.
-
Укажите в таблице типы событий, которые необходимо логировать.
-
Нажмите на кнопку ОК.
Для настройки аудита на уровне базы данных выполните следующие шаги:
-
Откройте SQL Server Management Studio.
-
Подключитесь к базе данных, для которой необходимо включить аудит.
-
В боковом меню перейдите в раздел Security выбранной базы данных.
-
Откройте контекстное меню папки Database Audit Specifications и выберите вариант New Database Audit Specification…. Откроется окно настроек нового объекта аудита SQL Server.
-
Введите имя аудита.
-
Выберите аудит, созданный на уровне сервера.
-
Укажите типы событий, которые необходимо логировать.
-
Нажмите на кнопку OK.
Настройка аудита выгрузки ключей и сертификатов MS SQL
Для настройки аудита выгрузки ключей и сертификатов MS SQL выполните следующие шаги:
-
Откройте SQL Server Management Studio.
-
Создайте 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;
-
Создайте представление для просмотра событий из файла:
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
-
Настройте автозапуск при старте 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';
-
Предоставьте необходимые права для просмотра представления сервисной учетной записи, созданной ранее:
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 выполните следующие шаги:
-
В интерфейсе R-Vision SIEM создайте секрет со строкой подключения. Для этого:
-
Перейдите в разделы Ресурсы → Секреты → Создать:
-
В раскрывшемся окне создания секрета заполните поля:
-
Название: введите название секрета.
-
Описание (опционально): опишите, для чего будет использоваться секрет.
-
Тип секрета: выберите вариант Строка подключения.
-
Строка подключения — введите строку вида:
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
-
-
-
Нажмите на кнопку Создать.
-
-
В интерфейсе R-Vision SIEM создайте новый конвейер в коллекторе.
-
Добавьте на конвейер элемент Точка входа для событий аудита команд 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
.
-
-
Добавьте на конвейер дополнительный элемент Точка входа для событий выгрузки ключей и сертификатов со следующими параметрами:
-
Название: введите название точки входа.
-
Тип точки входа: выберите вариант 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
.
-
-
Добавьте на конвейер элемент Нормализатор с правилом Microsoft SQL Server (идентификатор правила: RV-N-69).
-
Соедините нормализатор с точками входа.
-
Добавьте на конвейер элемент Конечная точка типа Хранилище событий.
-
Соедините конечную точку с нормализатором.
-
Сохраните и установите конфигурацию конвейера.
Пример конфигурации конвейера:
-
Нормализацию событий из других журналов, которые собираются через Endpoint, настройте на конвейере, отвечающем за нормализацию событий Endpoint. Для этого:
-
В интерфейсе R-Vision SIEM создайте новый конвейер в коллекторе.
-
Добавьте на конвейер элемент Точка входа со следующими параметрами:
-
Название: введите название точки входа.
-
Тип точки входа: выберите вариант R-Vision Endpoint.
-
Порт точки входа: введите значение в соответствии с настройками на стороне Microsoft SQL Server.
-
-
Добавьте на конвейер элемент Нормализатор с правилом Microsoft SQL Server (идентификатор правила: RV-N-70).
-
Соедините нормализатор с точкой входа.
-
Добавьте на конвейер элемент Конечная точка типа Хранилище событий.
-
Соедините конечную точку с нормализатором.
-
Сохраните и установите конфигурацию конвейера.
Пример конфигурации конвейера:
После настройки передачи событий, если настройка выполнена корректно, в хранилище начнут поступать события из журналов SQL Server.
Найти события источника в хранилище можно по фильтру:
|
Таблица маппинга
Таблица соответствия полей события для всех рассмотренных типов событий представлена по ссылке.