Задача защиты базы данных MySQL является одной из важнейших для ИТ-подразделений компании. С одной стороны, под управлением СУБД находится наиболее ценная информация, с другой – уязвимости программы, распространяемой с открытым кодом, хорошо известны специалистам по взломам чужих информационных сетей. Изучение слабых мест системы они часто начинают именно с MySQL.
Задачей специалистов по информационной безопасности в отношении баз данных MySQL становится сохранение всех значимых свойств информации:
Прежде всего необходимо решить задачу конфиденциальности. Чаще всего для этого используется шифрование. Вопрос доступности решается не только организационными и программными, но и техническими средствами. Нужны определенные параметры сервера, чтобы канал связи с БД нельзя было заблокировать простой DDoS-атакой.
Исходя из практики последних лет, можно выявить следующие типы угроз, специфичных именно для MySQL:
Привести к хищению данных могут и неверные настройки конфигурации, и злонамеренные действия уволенного сотрудника, чью учетку с привилегиями забыли удалить. Поэтому необходимо использовать все методы защиты баз данных MySQL от несанкционированного доступа.
Никогда не стоит отказываться от самых простых средств защиты, на практике они могут отразить до 80 % попыток внешних вторжений.
Среди них:
Но если существует вероятность, что на базу данных MySQL могут совершаться целевые атаки, подходить к решению задачи нужно с профессиональных позиций. Чаще всего БД пытаются взломать методом брутфорса (с помощью программ для перебора паролей). Это побуждает не только ставить максимально сложные пароли и регулярно их менять, но и применять шифрование. Если речь идет не о защите персональных данных или государственной тайны, то приобретать для этих целей СКЗИ, сертифицированные ФСБ, необязательно.
Все процедуры, совершаемые с базой данных, протоколируются. В истории сохраняются команды, операции, пароли. Эту информацию следует прятать от посторонних. Получив доступ к файлу истории, злоумышленник сможет найти хранимые ключи и преобразовать хаотичный набор знаков в текст.
Для снижения уровня этого риска требуется шифровать не только текст, но и сами процедуры и функции. Решить эту задачу поможет программа SQL Shield. Она легко устанавливается, не создает нагрузку на вычислительные мощности ПК. После использования функции требуется проверить ее успешность. В этом поможет утилита SQL Server Syscomments Decryptor, созданная для аудита файлов в базе. Она покажет, в каком виде хранятся зашифрованные команды.
Файлы истории и журналы учета действий пользователей требуется своевременно очищать. В этом помогут бесплатные программы, например, Glary Tracks Eraser.
Любая база данных, СУБД которой работает по принципам MySQL, имеет встроенные алгоритмы шифрования.
Среди них:
Для активации функций необходимо модифицировать штатные SQL-запросы. Например, добавить к ним опцию AES_ENCRYPT. Эта опция работает по принципу симметричного шифрования, когда кодирование и декодирование текста производится при помощи одинаковых ключей. Для более надежной защиты лучше применять асимметричное шифрование. В этом случае для шифрования информации применяется доступный многим пользователям открытый ключ, для дешифрования – закрытый, секретный.
Такая модель защиты информации в базе данных реализована, например, в Microsoft SQL Server. Для шифрования применяются функции T-SQL, одно из дополнений языка SQL. Оно поддерживает управляющие операторы, локальные переменные и ряд сервисных функций. Открытым ключом будет сертификат, генерируемый специальной утилитой. Секретный ключ, помимо сертификата, содержит индивидуальный пароль. Его необходимо применять с оговоркой, что пользователи с доступом к истории операций могут его найти и использовать для входа в базу. Асимметричное шифрование всегда дороже симметричного, поэтому его не применяют для баз MySQL большого объема, содержащих информацию невысокой ценности.
Системные администраторы, решая задачу криптографической защиты информации в базах данных MySQL, вынуждены вводить большинство команд вручную. Это отнимает время и создает возможность для ошибки. При таком формате работы с базой что-то важное может быть упущено.
Существуют специальные утилиты, которые полностью автоматизируют процесс шифрования, среди них XP_CRYPT. Программа легко устанавливается, ей можно управлять через графический интерфейс. XP_CRYPT справится с задачей постоянного автоматического шифрования данных о клиентах интернет-магазина, их персональных данных и номеров кредитных карточек.
Однако программа работает только в среде Windows, а многие решения для MySQL актуальны только для Unix. Еще один минус в том, что в бесплатной версии утилиты доступно только 256-битное шифрование. Это ограничивает ее применение. Например, для скрытия сведений о номерах банковских карт клиентов рекомендуется использовать 768-битные ключи.
Шифрование, однако, не спасает от риска подмены или модификации данных. Если злоумышленник не сможет расшифровать нужные ему сведения, он может изменить зашифрованный текст: переставить его части из одного поля в другое или ввести дополнительные значения, что затруднит дешифрование. По этой причине необходимо применять комплексные решения, полностью исключающие несанкционированный доступ к базам данных MySQL изнутри и снаружи.
Для баз данных MySQL и MariaDB, работающих в операционных системах Unix или Linux и локализованных на сервере Ubuntu, требуется дополнительная настройка. Она производится еще на этапе установки программы. В ней много опций по умолчанию, о чем хорошо знают хакеры, поэтому эту прореху в безопасности необходимо ликвидировать первым делом.
Рассмотрим настройку на примере MySQL. После загрузки СУБД предложит установить root-пароль. Это можно отложить на потом, но лучше сделать сразу, чтобы полностью обезопасить учетную запись администратора от риска подбора имени. Во время первой загрузки для запуска базы потребуется установить несколько дополнительных скриптов, их можно найти в руководстве пользователя. Оптимизированные версии следует искать на тематических форумах специалистов по MySQL.
Скрипты нужны для:
После установки программы и запуска скриптов необходимо настроить дифференцированный доступ. Тут действует принцип «никто не должен иметь больше привилегий, чем ему нужно для выполнения рабочих задач.
Прежде всего требуется заблокировать доступ пользователей и неуполномоченных системных администраторов к главному конфигурационному файлу MySQL. Для этого поменять настройки, размещенные в самом файле. Потом заблокировать сетевые порты и все возможности для подключения базы данных, за исключением тех, которые производятся с локального сервера. Решения такого уровня диктуются действующей в компании политикой безопасности. Если требуется сохранить возможность удаленного доступа, следует принять меры к защите этого канала связи, установить межсетевые экраны, использовать протоколы связи VPN.
Также для настройки удаленного доступа для управления базой или обмена информацией потребуется применять подключения SSH. Они решают задачу отправки запросов и управления базой данных, при этом команды и результаты передаются через SSH-туннель.
Следующий шаг – отключение опции, которая дает возможность подключаться к файловой системе через СУБД MySQL. Добавление команды, исключающей такие возможности, снизит риски удаления, переименования или перемещения файлов неуполномоченными пользователями. Произойдет и еще одно изменение обычного режима пользования базой данных MySQL – пользователь без соответствующих прав доступа не сможет загрузить локальный файл в систему.
Если в компании есть резерв памяти и достаточно вычислительных мощностей, а базы данных небольшие, желательно внедрить систему аудита, которая будет сохранять логи всех действий пользователей MySQL. Это одновременно решит две задачи – поиск виновника инцидента и сбор доказательств его злонамеренной деятельности. Но большое количество логируемой информации не только снизит производительность системы, но и затруднит поиск по файлу истории, поэтому к применению этой меры следует относиться осторожно. Установка SIEM-системы, которая фиксирует не все действия пользователей, а реагирует только на те, которые можно отнести к категории инцидентов информационной безопасности, станет компромиссным решением.
Для отслеживания пользовательских операций в БД на профессиональном уровне рекомендуем использовать Database Monitor. Узнать больше.
Существуют дополнительные меры, применение которых позволит довести степень защиты базы данных MySQL до оптимальной:
Реализация простых рекомендаций увеличит степень защиты баз данных MySQL на порядок. При этом не стоит забывать об обычных методах обеспечения безопасности информационной системы – антивирусах, файрволах, контроле за съемными носителями. Практически все программные решения, используемые для защиты БД, распространяются с открытым кодом, поэтому создать безопасную систему будет несложно.
04.08.2020
Подпишитесь на нашу рассылку и получите
свод правил информационной безопасности
для сотрудников в шуточных