Системы управления базами данных
Microsoft SQL Server Audit Windows Event Log
Получение событий с Microsoft SQL Server возможно реализовать двумя способами:
- через события Windows events;
- через ODBC коллектор.
Настройка получения событий через windows events.
Включение аудита MS SQL Server:
- Запустите Microsoft SQL Server Management Studio.
-
В окне подключения к базе данных укажите название экземпляра и введите учетные данные (см. рисунок 1).
Рисунок 1 -- Подключение к базе данных
-
В панели Object explorer перейдите во вкладку Security → Audits. По правому щелчку мыши выберите опцию New Audit... (см. рисунок 2).
Рисунок 2 -- Создание аудита
-
В открывшейся вкладке Create Audit укажите название аудита в поле Audit name. В качестве Audit destination выберите Application Log, нажмите ОК (см. рисунок 3).
Рисунок 3 -- Настройка аудита
-
В панели Object explorer перейдите во вкладку Security → Server Audit Specification. По правому щелчку мыши выберите опцию New Server Audit Specification... (см. рисунок 4).
Рисунок 4 -- Создание спецификации аудита
-
В открывшейся вкладке Create Server Audit Specification укажите название спецификации аудита в поле Name. В поле Audit выберите ранее созданный аудит из выпадающего списка. В поле Actions выберите типы событий для отслеживания, нажмите ОК (см. рисунок 5).
Рисунок 5 -- Настройка спецификации аудита
Создание учетной записи windows:
- В панели управления Windows откройте консоль Computer Management (Управление компьютером).
- В консоли откройте раздел System Tools (Служебные программы) → Local Users and Groups (Локальные пользователи и группы) → Users (Пользователи).
-
В контекстном меню раздела Users (Пользователи) выберите функцию New User (Новый пользователь) для создания нового пользователя (см. рисунок 6).
Рисунок 6 -- Создание пользователя
-
В открывшемся окне New User (Новый пользователь) введите следующие денные (см. рисунок 7):
- В поле Name (Имя) ввести имя нового пользователя.
- В поле Password (Пароль) установить пароль и подтвердить его в поле Confirm Password (Подтвердить).
При необходимости выставить настройки в пунктах:
- User cannot change password (Запретить смену пароля пользователем).
- Password never expires (Срок действия пароля неограничен).
- Для создания пользователя с заданными параметрами нажать кнопку Create.
Рисунок 7 -- Настройка параметров пользователя
Предоставление пользователю прав доступа к журналу событий:
- В консоли Computer Management (Управление компьютером) откройте раздел System Tools (Служебные программы) → Local Users and Groups (Локальные пользователи и группы) → Groups (Группы).
- Выберите в списке группу Event Log Readers (Читатели журнала событий).
- Откройте правой кнопкой мыши контекстное меню группы Event Log Readers (Читатели журнала событий) и выберите пункт Add To Group (Добавить в группу). Откроется окно Event Log Readers Properties (Свойства: Читатели журнала событий).
-
Для добавления пользователя в группу:
- Нажать кнопку Add (Добавить).
- В открывшемся окне Select Users (Выбор: Пользователи) выбрать в списке ранее созданного пользователя и добавить его в группу, нажав кнопку ОК.
-
Для сохранения введенных настроек в окне Event Log Readers Properties (Свойства: Читатели журнала событий) нажмите кнопку OK.
Добавление новой конфигурации в коллектор:
Передача событий на платформу осуществляется через eventlog_collector. Ниже приведены настройки с описанием для добавления в config.yaml:
eventlog_collector: &eventlog_collector
id: "eventlog_collector"
channel: ['Application']
query: "*[System[Provider[@Name='Имя экземпляра СУБД>']]]"
batch_size: 31
timeout: 3
poll_interval: 1
read_from_last: false
resolve_sid: false
log_level: "INFO"
worker_count: 1
remote:
enabled: true
user: "<user_name>"
password: "<password>"
domain: "."
remote_servers: ["<IP-адрес сервера с СУБД>"]
auth_method: "Negotiate"
encoding:
change_to_utf8: true
original_encoding: "cp1251"
В качестве данных для подключения необходимо использовать созданную ранее учетную запись. В поле query мы указываем запрос для получения событий только от настраиваемого источника.
Настройка получения событий через odbc коллектор.
Включение аудита MS SQL Server:
- Запустите Microsoft SQL Server Management Studio.
-
В окне подключения к базе данных укажите название экземпляра и введите учетные данные (см. рисунок 8).
Рисунок 8 -- Подключение к базе данных
-
В панели Object explorer перейдите во вкладку Security → Audits. По правому щелчку мыши выберите опцию New Audit... (см. рисунок 9).
Рисунок 9 -- Создание аудита
-
В открывшейся вкладке Create Audit укажите название аудита в поле Audit name. В качестве Audit destination выберите Application Log, нажмите ОК (см. рисунок 10).
Рисунок 10 -- Настройка аудита
-
В панели Object explorer перейдите во вкладку Security → Server Audit Specification. По правому щелчку мыши выберите опцию New Server Audit Specification... (см. рисунок 11).
Рисунок 11 -- Создание спецификации аудита
-
В открывшейся вкладке Create Server Audit Specification укажите название спецификации аудита в поле Name. В поле Audit выберите ранее созданный аудит из выпадающего списка. В поле Actions выберите типы событий для отслеживания, нажмите ОК (см. рисунок 12).
Рисунок 12 -- Настройка спецификации аудита
Установка ODBC драйвера:
- С официального сайта скачайте ODBC Driver for SQL Server.
- Установите скачанный драйвер на сервер с коллектором.
Добавление новой конфигурации в коллектор:
Передача событий на платформу осуществляется через odbc_collector. Ниже приведены настройки с описанием для добавления в config.yaml:
odbc_collector: &odbc_collector
id: "odbc_collector"
poll_interval: 5
read_from_last: true
connection_string: "server=IP-адрес сервера с СУБД;port=1433;driver={ODBC Driver 18 for SQL Server};database=master;Encrypt=Optional;UID=<user_name>;PWD=<Password>"
sql: >
SELECT
CAST(DATEDIFF_BIG(ns, '1970-01-01 00:00:00.0000000', event_time) AS BIGINT) as epoch,
event_time,
action_id,
succeeded,
session_id,
class_type,
session_server_principal_name,
server_principal_name,
server_principal_sid,
database_principal_name,
target_server_principal_name,
target_server_principal_sid,
target_database_principal_name,
server_instance_name,
database_name,
schema_name,
object_name,
statement,
additional_information,
transaction_id
FROM fn_get_audit_file ('C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\*.sqlaudit', default, default)
WHERE CAST(DATEDIFF_BIG(ns, '1970-01-01 00:00:00.0000000', event_time) AS BIGINT) > ?;
bookmark_field: "epoch"
В поле connection_string укажите:
- IP-адрес сервера с СУБД
- Порт для подключения к базе данных
-
Название драйвера
Примечание: Название драйвера можно узнать, запустив Administrative Tools → ODBC Data Sources (64-bit) во вкладке Drivers (поле Name)
-
Название базы данных
- Учетные данные для подключения к БД
В разделе с SQL запросом необходимо указать путь к файлам с событиями аудита.
Пример:
C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\*.sqlaudit
В данном случае коллектор будет читать все найденные файлы аудита по адресу C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA\
PostgreSQL
Для настройки логирования событий из БД PostrgreSQL выполните шаги:
-
В командной строке сервера выполните команду
psql -U <username> -c 'SHOW config_file'
На выходе будет указан путь к конфигурационному файлу:
/var/app/data/postgresql.conf
-
В конфигурационный файл postgresql.conf (по пути из предыдущей команды) добавьте строки:
log_destination = 'syslog' logging_collector = off syslog_facility = 'LOCAL0' syslog_ident = 'postgres' syslog_sequence_numbers = on syslog_split_messages = off client_min_messages = log log_min_messages = info log_min_error_statement = info log_checkpoints = off log_connections = on log_disconnections = on log_duration = off log_error_verbosity = default log_hostname = on log_line_prefix = 'pgmessage: %m %a %u %d %r %i %e ' log_statement = 'mod' lc_messages = 'en_US.UTF-8'
Перезапустите службу
postgresql
-
Настройте Rsyslog для отправки сообщений на коллектор:
Перезапустите rsyslognano /etc/rsyslog.d/10-pgsql.conf if $programname == 'postgres' then @@rsyslog:4000
Настройка ODBC PostgreSQL
-
В конфигурационном файле
/var/app/data/postgresql.conf
настройте тип логирования (csvlog) и включитеlogging_collector
.log\_destination = 'csvlog' logging\_collector = on client\_min\_messages = log log\_min\_messages = info log\_min\_error\_statement = info log\_checkpoints = off log\_connections = on log\_disconnections = on log\_duration = off log\_error\_verbosity = default log\_hostname = on log\_line\_prefix = 'pgmessage: %m %a %u %d %r %i %e ' log\_statement = 'mod' lc\_messages = 'en\_US.UTF-8'
Перезапустите службу
postgresql
-
Создайте в нужной БД таблицу для хранения логов.
CREATE TABLE postgres_log ( log_time timestamp(3) with time zone, user_name text, database_name text, process_id integer, connection_from text, session_id text, session_line_num bigint, command_tag text, session_start_time timestamp with time zone, virtual_transaction_id text, transaction_id bigint, error_severity text, sql_state_code text, message text, detail text, hint text, internal_query text, internal_query_pos integer, context text, query text, query_pos integer, location text, application_name text, PRIMARY KEY (session_id, session_line_num) );
-
Пример команды для переноса данных из лог-файла в таблицу:
COPY postgres_log FROM '/var/app/data/pg_log/postgresql-2020-09-01_000000.csv' WITH csv;
Подробнее о переносе описано в Руководстве PostgreSQL
-
Скачайте и установите драйвер ODBC для PostgreSQL на сервер NXLog.
Проверьте наличие драйвера и его название, оно пригодится при настройке ConnectionString в ODBC-модуле NXLogРисунок 13 -- Настройка ODBC
Настройка ODBC-модуля NXLog
Строка для ODBC-подключения:
<Input postgres>
Module im\_odbc
ConnectionString Driver={PostgreSQL UNICODE(x64)};Server=<IP or hostname>;Port=<PostgreSQL port num>;Database=Database\_name;UID=Username;PWD=password;
Driver - имя драйвера ODBC из п.5 — PostgreSQL ODBC Driver(UNICODE) или PostgreSQL ODBC Driver(ANSI).
Server - имя сервера PostgreSQL.
Port - порт, используемый для подключения к серверу PostgreSQL (default 5432).
Database - имя базы данных PostgreSQL.
Uid и Pwd - Uid (идентификатор пользователя) и Pwd (пароль) для подключения.
Oracle Database
Настройка источника Oracle Database на отправку событий с помощью Oracle Audit.
Настройку источника нужно выполнять от имени учетной записи root, поддерживающей в настраиваемом экземпляре СУБД роль sysadmin с привилегиями sysdba и sysoper:
-
Подключитесь с помощью
sqlplus
локально, выполнив команду:sqlplus / as sysdba
-
Выполните команду:
alter session set "_ORACLE_SCRIPT"=true;
-
Проверьте параметры аудита командой:
show parameter audit
-
Выполните команду установки журнала аудита OS:
ALTER SYSTEM SET audit_trail=OS SCOPE=SPFILE;
-
Выключите СУБД командой:
Shutdown
-
Включите СУБД командой:
Startup
-
Проверьте параметры аудита командой:
show parameter audit
Убедитесь, что audit_trail принял значение OS.
Запишите значениеaudit_file_dest
, оно понадобится при настройке отправки сообщений для параметраFile
. -
Выполните команду:
ALTER SYSTEM SET audit_sys_operations=true SCOPE=SPFILE;
-
Установите важность событий командой:
alter system set audit_syslog_level='local5.info' scope=spfile sid='*';
-
Выполните команду
ALTER SYSTEM SET audit_trail=DB, EXTENDED SCOPE=SPFILE;
-
Выполните последовательно команды:
Shutdown Startup show parameter audit
На выходе должны появиться сообщения (см. рисунок 14).
Рисунок 14 -- Вывод сообщений
-
Донастройте параметры аудита:
AUDIT ALTER SYSTEM BY ACCESS; AUDIT DELETE ON SYS.AUD$ BY ACCESS; AUDIT DELETE ON SYS.FGA_LOG$ BY ACCESS; AUDIT EXECUTE ON SYS.DBMS_FGA BY ACCESS; AUDIT INSERT ON SYS.AUD$ BY ACCESS; AUDIT INSERT ON SYS.FGA_LOG$ BY ACCESS; AUDIT SELECT ON SYS.DBA_USERS BY ACCESS; AUDIT SELECT ON SYS.LINK$ BY ACCESS; AUDIT SELECT ON SYS.USER_DB_LINKS BY ACCESS; AUDIT SELECT ON SYS.USER_HISTORY$ BY ACCESS; AUDIT SYSTEM AUDIT BY ACCESS; AUDIT TABLE BY ACCESS; AUDIT UPDATE ON SYS.AUD$ BY ACCESS; AUDIT UPDATE ON SYS.FGA_LOG$ BY ACCESS;
-
Для отправки событий через Rsyslog:
-
создайте файл с конфигурацией для rsyslog:
nano /etc/rsyslog.d/oracle_audit.conf
-
настройте чтение из файла:
input(type="imfile" File="<значение audit_file_dest из п.7>.xml" PersistStateInterval="100" Tag="oracle_audit_trail:" Severity="info" Facility="local5" startmsg.regex="<AuditRecord>" ) local5.* @@<ip-address лог-коллектора>:2770
-
перезапустите сервис rsyslog
sudo service rsyslog restart
-
Oracle MySQL
Для настройки источника Oracle MySQL выполните следующие шаги:
-
Установите модуль аудита MariaDB, последовательно выполнив команды:
wget http://mirror.mephi.ru/mariadb/mariadb-10.1.45/bintar-linux-x86_64/mariadb-10.1.45-linux-x86_64.tar.gz sudo tar -xzf mariadb-10.5.5-linux-x86_64.tar.gz sudo install mariadb-10.1.45-linux-x86_64/lib/plugin/server_audit.so /usr/lib/mysql/plugin sudo install mariadb-10.5.5-linux-x86_64/lib/plugin/server_audit.so /usr/lib/mysql/plugin Sudo mysql INSTALL PLUGIN server_audit SONAME 'server_audit.so'; SHOW PLUGINS; Set Global server_audit_logging=on; EXIT;
-
Настройте аудит, последовательно выполнив команды:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf Добавляем настройки plugin-load=server_audit=server_audit.so server_audit_logging=on server_audit_events=connect,query,table,query_ddl,query_dml,query_dcl server_audit_output_type = SYSLOG server_audit_syslog_facility = LOG_SYSLOG server_audit_file_path = /var/log/mysql/audit.log
-
Перезапустите сервис MySQL:
service mysql restart
-
Запустите консоль MySQL с правами суперпользователя:
# mysql -u root -p
Вы можете просмотреть значения параметров модуля аудита, выполнив команду
``` SHOW VARIABLES LIKE '%audit%'; EXIT; ```
Результат: Модуль аудита настроен.
Далее необходимо настроить rsyslogd. Для этого:
-
Создайте файл с конфигурацией для rsyslog:
sudo nano /etc/rsyslog.d/20-mysql.conf
-
Запишите в созданный файл следующие значения:
template (name="radar" type="string" string="<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%$.suffix%%msg:::sp-if-no-1st-sp%%msg%") :syslogtag, contains, "mysql" @@<ip-adsress Лог-коллектора>:4005;radar
-
Перезапустите службу rsyslog:
sudo service rsyslog restart
Orcale NetListener
Для настройки источника Oracle NetListener выполните следующие шаги:
-
Запустите LSNRCTL командой:
LSNRCTL
-
Определите экземпляр используемой службы Oracle NetListener командой:
show current_listener
-
После выполнения команды отобразится имя экземпляра СУБД.
-
Для смены используемого экземпляра используется команда:
set current_listener.
-
Проверьте статус журналирования:
show log_status
-
Если для параметра log_status указано OFF, включите журналирование:
set log_status on save_config reload
-
Для отправки событий через rsyslog, узнайте путь к лог-файлам командой:
show log_directory
Он понадобится для следующего этапа настройки в параметре File.
-
Создайте конфигурационный файл для rsyslog:
sudo nano /etc/rsyslog.d/oracle_netlistener.conf
-
Настройте чтение из файла:
module(load="imfile" mode="inotify") #PollingInterval="10") #mode="inotify") input(type="imfile" File="/<параметр File из п.4 >/log.xml" PersistStateInterval="100" Tag="oracle_netlistener:" Severity="info" Facility="local3" readMode="2" )local3.* @@<Ip-address лог-коллектора>:2771
-
Перезапустите сервис rsyslog:
sudo service rsyslog restart