Безопасность СУБД Средства и методы обеспечения конфиденциальности и

advertisement
Безопасность СУБД
Средства и методы
обеспечения
конфиденциальности и
целостности данных в СУБД
Подготовили:
Редишев М.В.
Трефилов В.В.
Содержание
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Введение
Схема защиты СУБД
Пользователи СУБД
Авторизация и аутентификация
Хранение ключей
Дискреционная защита
Привилегии
Мандатная защита
Ролевая защита
Защита от внедрения в 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 на
сервере
Спасибо
за
внимание!
Download