Безопасность СУБД Средства и методы обеспечения конфиденциальности и целостности данных в СУБД Подготовили: Редишев М.В. Трефилов В.В. Подготовили: Редишев М.В. Трефилов В.В.
Содержание Введение Схема защиты СУБД Пользователи СУБД Авторизация и аутентификация Хранение ключей Дискреционная защита Привилегии Мандатная защита Ролевая защита Защита от внедрения в SQL Шифрование Аудит Резервное копирование и восстановление Распределенные СУБД Заключение
Виды СУБД Корпоративные СпециализированныеВстраиваемые Защищенные
Комплекс средств защиты СУБД Подсистема дискреционной защиты Подсистема Подсистема мандатной защиты Подсистема Подсистемааутентификации Подсистемааутентификации Подсистемааудита Подсистемааудита Подсистема защиты базы данных Подсистема Подсистемарегистрации Подсистемарегистрации
Конфиденциальность Целостность Доступность Важные аспекты
Пользователи СУБД Администраторы ПрограммистыПользователи
Аутентификация При соединении пользователя с базой данных, он обязан пройти процесс авторизации и аутентификации. Если же процесс аутентификации пользователь пройти не смог, то он не присоединяется к БД.
Соединение с БД CONNECT [AS {SYSOPER|SYSDBA}]] CONNECT TO база_данных USER пользователь USING пароль
Наборы правил Базовый набор дискреционных правил (идентификация,аутентификация, привилегии и роли...) Расширенный набор (мандатная защита, расписание,аудит...) При попытке доступа метки субъекта сравниваются с метками доступа объекта, таким образом, обеспечивается максимальная гарантия того, что каждый пользователь сможет работать только с теми данными, которые ему доступны.
Привилегии пользователей DBA RESOURCE CONNECT В СУБД присутствуют три главные категории пользователей : простые пользователи; пользователи с возможностью изменения структуры базы данных администраторы
Управление привилегиями GRANT привилегия [ON объект] TO субъект [WITH GRANT OPTION] REVOKE привилегия [ON объект] FROM субъект GRANT привилегия [ON объект] TO PUBLIC REVOKE привилегия [ON объект] FROM PUBLIC SELECT привилегия на выборку данных; INSERT привилегия на добавление данных; DELETE привилегия на удаление данных; UPDATE привилегия на обновление данных; ALTER изменение физической/логической структуры базовой таблицы INDEX создание/удаление индексов на столбцы базовой таблицы; ALL все возможные действия над таблицей.
Мандатная защита Все пользователи делятся на уровни и группы в соответствии с уровнем доверия к ним, а так же в соответствии с принадлежностью их к той или иной группе субъектов. ГРУППЫ УРОВНИ Информация отдела 7 Информация отдела 21 … Информация отдела 28 Совершенно секретно Совершенно секретно Секретно Для служебного пользования … Общедоступная информация
Мандатный принцип состоит в сопоставлении меток доступа субъектов и объектов БД – вплоть до отдельных полей записи Поле (снабжено меткой) Столбец (снабжен меткой) Строка (снабжена меткой)
Ролевая модель ограничения доступа Внутри организации создаются безличные роли, соответствующие разным выполняемым функциям. Доступ к выполнению операции предоставляется конкретным полям. Управление привилегиями каждого пользователя сводится к представлению пользователю необходимого набора ролей
Шифрование База данных в целях защиты целиком подвергается математическому преобразованию при помощи современных алгоритмов Применение оптимизированных алгоритмов преобразования и управления буферным кэшем обеспечивают минимальное падение производительности Поддерживаются алгоритмы ГОСТ, AES (Advanced Encryption Standard), DES (Data Encryption Standard)
Криптографические функции Функция Назначение 1AES_ENCRYPT()Зашифрование данных алгоритмом AES 2AES_DECRYPT()Расшифрование данных алгоритмом AES 3DES_ENCRYPT()Зашифрование данных алгоритмом DES 4DES_DECRYPT()Расшифрование данных алгоритмом DES 5ENCRYPT()Зашифрование данных функцией crypt() 6MD5()Хэширование данных алгоритмом MD5 7SHA()Хэширование данных алгоритмом SHA-1 INSERT INTO table VALUES ( 1, AES_ENCRYPT( 'text', 'password' ) ).
Пример реализации шифрования Подключимся к СУБД. Покажем на простом примере, как работает функция шифрования
Пример реализации шифрования 1. Создадим таблицу CUSTOMERS и заполним ее данными
Пример реализации шифрования 2. Чтобы зашифровать данные, воспользуемся следующей функцией
Пример реализации шифрования 3. Чтобы расшифровать данные, воспользуемся следующей функцией
Пример хэширования паролей Создадим нового пользователя MTUCI, и обновим о нем данные, добавив пароль в таблицу USER, где хранятся логины и хэши паролей пользователей:
Пример хэширования паролей Теперь поменяем записанный пароль в таблице USER на его хэш с помощью комманды PASSWORD
Хранение ключевого материала
Полный аудит действий в системе Входы в систему AUDIT-подсистема (система протоколирования) Запрос к конкретнойтаблице ВремязапросаАдресстанции Изменение схемы БД Попыткипонижениясекретности ИзменениеподсистемыдоступаНовыйпользователь
Резервное копирование и восстановление Восстановление БД это процесс возвращения БД в состояние, утраченное в результате сбоя или отказа. Восстановление БД это защита от потерь методом создания резервных копий и восстановления данных по ним.
Версии СУБД Oracle
ОС для работы с Oracle
Варианты атак на СУБД Oracle Атака через TNS Listener Подключение к СУБД Парольная политика
Атака через TNS Listener Listener Oracle – компонент сетевого доступа к системам Oracle Принимает клиентские запросы и направляет их для обработки в соответствующий серверный процесс Рассматривается как первый этап на пути вторжения в базы данных, т.к. плохо сконфигурированный незащищенный Listener предоставляет нарушителю различные способы осуществления атак
Атака через TNS Listener Получить детальную информацию об атакуемой системе: – Имена баз данных (SIDs) – Версия СУБД – Пути к log-файлам – Версию ОС, на которой установлена СУБД Произвести атаку отказа в обслуживании Выполнять SQL – команды от имени DBA Получить удаленный доступ к системе
Команды утилиты lsnrctl status version start stop set –Password –Log_file –Current_listener –Trc_status
Параметры для защиты TNS Listener PASSWORD – этот параметр отвечает за установку пароля на подключение к TNS Listenerу. В том случае, если пароль установлен, то выполняются только команды status и version, что дает информацию о версии Listener a, установочной директории и операционной системе (по умолчанию не установлен) ADMIN_RESTRICTIONS – этот параметр во включенном состоянии запрещает любые изменения конфигурационного файла удаленно (по умолчанию установлен в OFF) LOCAL_OS_AUTHENTICATION – этот параметр во включенном состоянии позволяет управлять TNS Listenerом только локально (по умолчанию установлен в OFF до версии 10g)
Рекомендации по защите TNS Listener Установить пароль на доступ к Listener Включить протоколирование всех попыток подключения к Listener для обнаружения попыток перебора паролей Установить последние обновления безопасности (CPU) Защитить локальные конфигурационные файлы
Подключение к СУБД Для подключения к СУБД Oracle необходимо знать: 1. IP – адрес сервера 2. Порт TNS Listener 3. Имя базы данных(SID) 4. Имя пользователя 5.Пароль
Подбор SID Поиск информации в сторонних приложениях Имя базы данных является стандартным, например, ORCL Имя базы данных является словарным словом Имя базы данных состоит из малого количества символов Имя базы данных можно узнать по ссылке из другой СУБД
SIDGUESS
Рекомендации по защите SID Сменить SID баз данных на случайный набор из не менее 8 символов Максимально ограничить доступ к файлам tnsnames.ora, оставив права на чтение лишь пользователю, от имени которого запускается СУБД Ограничить доступ к системам через которые можно узнать SID, или модифицировать информацию, выводимую этими системами
Пароли Множество системных учетных записей со стандартными паролями > 600 Некоторые не блокируются после установки Множество приложений, которые интегрируются с СУБД, имеют свои стандартные системные учетные записи По умолчанию не установлено ограничений на длину и сложность пароля Перебор паролей к учетным записям в большинстве случаев не блокируется Базы данных обычно содержат большое количество учетных записей
OScanner
Рекомендации по повышению безопасности Провести аудит учетных записей на наличие стандартных паролей Периодически просматривать учетные записи на предмет использования и периодически отключать устаревшие Ввести как административные, так и программные ограничения на длину и сложность пароля
Атаки на повышение привилегий SQL injection Evil View Dll Patching
SQL injection Самый распространённый и опасный тип уязвимостей
Evil View Возможно изменение/добавление/удаление данных, не имея привилегий на эти действия
Dll Patching После успешного подключения к СУБД клиент устанавливает языковые настройки командойALTER SESSION SET NLS …, которая выполняется от имени пользователя SYS на сервере
Спасибо за внимание!