Скачиваний:
4
Добавлен:
28.12.2024
Размер:
99.44 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ

УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПБГУТ)

Факультет: Кибербезопасности

Кафедра: Защищенных систем связи

Дисциплина: Основы построения сертифицированных защищенных БД РФ

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №3

МЕТОДЫ НАСТРОЙКИ ЖУРНАЛА СОБЫТИЙ

(тема отчета)

Направление/специальность подготовки

10.03.01 Информационная безопасность

(код и наименование направления/специальности)

Студент:

Травкина Е.А., ИКБ-14

(Ф.И.О., № группы) (подпись)

Федченко А.С., ИКБ-14

(Ф.И.О., № группы) (подпись)

Ящук А.А., ИКБ-14

(Ф.И.О., № группы) (подпись)

Преподаватель:

к.т.н., доцент, Пестов И.Е.

(должность, Ф.И.О.) (подпись)

Оглавление

Цель лабораторной работы 3

Задачи 3

Используемое программное обеспечение 3

Ход выполнения лабораторной работы 3

Создание ролей пользователей 3

Настройка регистрации событий через файл конфигурации 4

Написание bash-скрипта для создания файла журнала событий. 7

Вывод 8

Приложение 1 10

Цель лабораторной работы

Изучить и проанализировать процесс настройки регистрации событий СУБД при помощи встроенных средств и скриптов bash.

Задачи

Для достижения поставленной цели были разработаны следующие задачи:

  1. создание ролей пользователей;

  2. настройка журналирования СУБД через конфигурационный файл;

  3. написание bash-скрипта для создания файла журнала событий.

Используемое программное обеспечение

Для выполнения лабораторной работы используется установленный дистрибутив ОС Astra Linux.

Ход выполнения лабораторной работы

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

Создание ролей пользователей

Добавим три новые роли, соответствующие именам членов бригады, а именно, sasha, liza, nastya. Чтобы создать роль с возможностью входа в систему, использовали команду CREATE ROLE role_name WITH LOGIN PASSWORD 'password'. И также создадим роль db_user_role, которой будем предоставлять права на базу данных (см. Рис. 1).

Рис. 1. Создание ролей пользователей со входом

Теперь присвоим пользователям роль db_user_role, чтобы они получили доступ через нее и создадим базу данных dblab3 (см. Рис. 2).

Рис. 2. Создание роли и назначение прав

Настройка регистрации событий через файл конфигурации

В PostgreSQL доступны несколько методов логирования: через стандартный вывод (stderr), системный журнал (syslog), и csvlog, в котором логи записываются в формате CSV (Comma-Separated Values). Логирование через stderr обычно используется по умолчанию и выводит сообщения в стандартный поток ошибок, что удобно для дальнейшей обработки логов внешними инструментами или для перенаправления их в файлы. Метод syslog отправляет логи напрямую в системный журнал, что может быть полезно в корпоративных системах для централизованного управления логами.

В нашей настройке мы будем использовать метод логирования через stderr с включенным параметром `logging_collector`, что позволит собирать логи в отдельные файлы и управлять их ротацией (перемещением и созданием новых лог-файлов по расписанию или по размеру). Для этого необходимо зайти в файл конфигурации и отредактировать его по нескольким параметрам:

  1. Включить `logging_collector` (см. Рис. 3), что позволит записывать сообщения из stderr в журнальный файл.

Рис. 3. Включение параметра "logging_collector"

  1. Далее указываем `log_directory` и `log_filename`, место хранения журнального файла и имя создаваемого лога (см. Рис. 4).

Рис. 4. Отображение пути к файлу логов и его название

  1. Меняем значение параметра `log_min_messages` на log. Этот параметр задает минимальный уровень сообщений, записываемых в журнал (см. Рис.5).

Рис. 5. Установка параметра минимального уровня сообщений

  1. Включаем параметры `log_connections` и `log_disconnections`, что позволяет записывать в журнал информацию о подключениях и завершениях сеансов пользователей. Для включения доп. параметров логирования используется параметр `log_line_prefix` (см. Рис.6).

Рис. 6. Подключение параметра для фиксации сессий пользователей

Чтобы проверить правильность настройки, зашли под каждым созданным пользователем из пункта 1 в БД, а затем прочитали файл журнала с фильтрацией grep по именам пользователей (см. Рис.7).

Рис. 7. Просмотр файла журнала

Написание bash-скрипта для создания файла журнала событий.

В этой части лабораторной работы был написан скрипт, который периодически выполняет SQL-запрос к базе данных PostgreSQL для отслеживания активных сессий пользователей, для удобства отслеживания были исключены сессии пользователя `postgres`. Он записывает информацию о подключениях (имя базы данных, имя пользователя, IP-адрес, состояние подключения, время начала сессии и длительность) в лог-файл. Скрипт работает в цикле с заданным интервалом и фильтрует сессии, показывая только те, которые находятся в состоянии `active`, то есть выполняют запросы в текущий момент времени, что позволяет вести более точный и удобочитаемый лог активности базы данных (Приложение 1). Результаты проверки работы скрипта изображены на Рис. 8.

Рис. 8. Вывод файла с журналом событий

Вывод

В данной лабораторной работе мы изучили процесс настройки регистрации событий в СУБД PostgreSQL, а также разработали скрипт для мониторинга сессий пользователей. Вначале мы создали роли пользователей и предоставили им доступ к базе данных, что позволило осуществлять подключение под разными пользователями, включая `sasha`, `liza` и `nastya`. Затем мы настроили систему логирования в PostgreSQL через конфигурационный файл, выбрав метод записи логов через `stderr` и настроив сбор логов в отдельные файлы с параметрами `log_directory`, `log_filename` и включением уровня логирования `log_min_messages`. Это дало нам возможность отслеживать подключения и отключения пользователей в реальном времени.

Следующим шагом стало создание bash-скрипта, который регулярно выполняет SQL-запросы к базе данных для мониторинга активных сессий. Мы добавили фильтрацию, чтобы исключить из логов пользователя `postgres` и записывать только активные сессии других пользователей. Скрипт работает в цикле с указанным интервалом и обновляет лог-файл, добавляя новые записи в начало файла, что позволяет эффективно отслеживать изменения в реальном времени. Для проверки правильности работы скрипта мы подключались под различными пользователями и анализировали полученные логи, которые успешно фиксировали информацию о сессиях. В итоге мы разработали функциональный инструмент для мониторинга активности базы данных с возможностью гибкой настройки фильтров и параметров логирования.

Приложение 1

#!/bin/bash

exec 3>>psql_log1

DB="dblab3"

USER="postgres"

CHECK_INT=5

LOG_FILE="psql_log1"

TEMP_LOG_FILE="temp_log1"

while true

do

TIME=$(date '+%Y-%m-%d %H:%M:%S')

QUERY="SELECT datname AS database_name, usename AS user_name, client_addr AS client_address, state AS connection_state, backend_start AS connection_start, now() - backend_start AS duration FROM pg_stat_activity WHERE usename != 'postgres' AND state = 'active' ;"

NEW_CONNECTIONS=$(psql --dbname "$DB" --username "$USER" -t -c "$QUERY")

if [ -n "$NEW_CONNECTIONS" ]; then

echo "$TIME" > "$TEMP_LOG_FILE"

echo "$NEW_CONNECTIONS" >> "$TEMP_LOG_FILE"

cat "$LOG_FILE" >> "$TEMP_LOG_FILE

mv "$TEMP_LOG_FILE" "$LOG_FILE"

else

echo "$TIME: Нет активных подключений" > "$TEMP_LOG_FILE"

cat "$LOG_FILE" >> "$TEMP_LOG_FILE"

mv "$TEMP_LOG_FILE" "$LOG_FILE"

fi

sleep $CHECK_INT

done

Санкт-Петербург

2024

Соседние файлы в предмете Основы построения сертифицированных защищенных баз данных РФ