Безопасность СУБД Средства и методы обеспечения конфиденциальности и целостности данных в СУБД Подготовили: Редишев М.В. Трефилов В.В. Содержание • • • • • • • • • • • • • • • Введение Схема защиты СУБД Пользователи СУБД Авторизация и аутентификация Хранение ключей Дискреционная защита Привилегии Мандатная защита Ролевая защита Защита от внедрения в SQL Шифрование Аудит Резервное копирование и восстановление Распределенные СУБД Заключение Виды СУБД Корпоративные Специализированные Встраиваемые Защищенные Комплекс средств защиты СУБД Защита доступа Шифрование данных Подсистема защиты базы данных Подсистема аудита Разграничение доступа Важные аспекты Конфиденциальность Доступность Целостность Пользователи СУБД Администраторы Программисты Конечные пользователи Авторизация/Аутентификация • При соединении пользователя с базой данных, он обязан пройти процесс авторизации и аутентификации. • Если же процесс аутентификации пользователь пройти не смог, то он не присоединяется к БД. Соединение с БД • CONNECT [[user/password[@база_данных] [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 — все возможные действия над таблицей. Мандатная защита Все пользователи делятся на уровни и группы в соответствии с уровнем доверия к ним, а так же в соответствии с принадлежностью их к той или иной группе субъектов. Совершенно секретно Секретно Для служебного пользования Общедоступная информация ГРУППЫ Информация отдела №28 … … Информация отдела №21 Информация отдела №7 УРОВНИ … Строка (снабжена меткой) Мандатный принцип состоит в сопоставлении меток доступа субъектов и объектов БД – вплоть до отдельных полей записи Столбец (снабжен меткой) Поле (снабжено меткой) Ролевая модель ограничения доступа • Внутри организации создаются безличные роли, соответствующие разным выполняемым функциям. Доступ к выполнению операции предоставляется конкретным полям. • Управление привилегиями каждого пользователя сводится к представлению пользователю необходимого набора ролей Шифрование • База данных в целях защиты целиком подвергается математическому преобразованию при помощи современных алгоритмов • Применение оптимизированных алгоритмов преобразования и управления буферным кэшем обеспечивают минимальное падение производительности • Поддерживаются алгоритмы ГОСТ, AES (Advanced Encryption Standard), DES (Data Encryption Standard) Криптографические функции № 1 Функция AES_ENCRYPT() Назначение Зашифрование данных алгоритмом AES 2 3 AES_DECRYPT() DES_ENCRYPT() Расшифрование данных алгоритмом AES Зашифрование данных алгоритмом DES 4 DES_DECRYPT() Расшифрование данных алгоритмом DES 5 ENCRYPT() Зашифрование данных функцией crypt() 6 MD5() Хэширование данных алгоритмом MD5 7 SHA() Хэширование данных алгоритмом 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 для обнаружения попыток перебора паролей • Установить последние обновления безопасности • Защитить локальные конфигурационные файлы Подключение к СУБД • Для подключения к СУБД Oracle необходимо знать: 1.IP – адрес сервера 2.Порт TNS Listener 3.Имя базы данных(SID) 4.Имя пользователя 5.Пароль Подбор SID • Поиск информации в сторонних приложениях • Имя базы данных является стандартным, например, “ORCL” • Имя базы данных является словарным словом • Имя базы данных состоит из малого количества символов • Имя базы данных можно узнать по ссылке из другой СУБД SIDGUESS Программа для подбора SID. Работает либо с готовой базой либо как брутфорс. Рекомендации по защите 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 на сервере Спасибо за внимание!