Эта страница переведена машинным переводом. Читайте английский оригинал. English

Библиотека IBSurgeon

Как защитить базы данных Firebird от программ-вымогателей?

06-December-2016, автор Алексей Ковязин

Атаки программ-вымогателей стали серьезной проблемой для многих компаний: за последнюю неделю у нас было 3 инцидента от разных клиентов, чьи базы данных Firebird были зашифрованы вирусами-вымогателями. К счастью, нам удалось помочь всем им, но масштаб проблемы определенно растет.

В этой статье мы рассмотрим, как эти проблемы были решены.

В целом, программы-вымогатели не предназначены для шифрования именно баз данных Firebird; они просто шифруют все файлы на компьютере, а затем требуют выкуп за предоставление пароля для их расшифровки, и даже если вы заплатите, вы можете не получить никакого пароля для расшифровки или ответа вообще (также необходимо проверять сайты антивирусных компаний: они часто публикуют пин-коды или даже инструменты для расшифровки для таких вымогателей. Например, один из них: noransom.kaspersky.com/)

Конечно, необходимо иметь надежный (и подходящий для серверов) антивирус, но можем ли мы сделать что-то конкретное для защиты базы данных Firebird?

Существуют разные типы программ-вымогателей, давайте рассмотрим их влияние на базы данных Firebird.

Две компании пострадали от программ-вымогателей, которые частично зашифровали их базы данных Firebird.

Как вы знаете, файл базы данных Firebird представляет собой набор страниц одинакового размера. Страницы базы данных в Firebird содержат информацию разных типов: метаданные, пользовательские данные, индексы, генераторы и т.д.

Обычно такие программы-вымогатели шифруют не весь файл базы данных, а лишь небольшую его часть - страницу заголовка и некоторый процент страниц базы данных внутри самой базы.

Поскольку все страницы имеют тесные взаимосвязи, даже несколько зашифрованных страниц делают всю базу данных нечитаемой для движка Firebird. Например, в базе данных объемом 10 ГБ было зашифровано менее 1% данных, а остальные 99% были в порядке.

В этом случае такую зашифрованную базу данных можно рассматривать как сильно поврежденный файл базы данных, и IBSurgeon FirstAID - это инструмент, который может выполнить экспорт данных из зашифрованного файла базы данных Firebird. Тот же подход используется для восстановления баз данных с поврежденных жестких дисков.

Экспорт данных из зашифрованной базы данных Firebird

IBSurgeon FirstAID может восстанавливать базы данных с помощью прямого исправления или с помощью извлечения данных. Прямое исправление быстрое, оно может быстро исправить повреждения непосредственно в файле базы данных. Однако в случае программы-вымогателя это не поможет, поскольку страница заголовка и основные метаданные утеряны, поэтому извлечение - единственный выбор.

FirstAID читает файл базы данных напрямую - он не использует Firebird для доступа к файлу базы данных, он читает файл базы данных напрямую, байт за байтом. Поскольку он фокусируется только на извлечении поврежденных данных и жертвует производительностью, FirstAID может экспортировать данные даже из сильно поврежденных баз данных Firebird. Конечно, FirstAID пропускает зашифрованные данные как поврежденные и экспортирует только хорошие данные.

Если программа-вымогатель не зашифровала критически важные метаданные, можно открыть зашифрованный файл базы данных с помощью FirstAID и просмотреть записи: выберите таблицу в списке слева и откройте вкладку Preview, затем просмотрите страницы данных.

Записи, которые вы видите, можно экспортировать в новую базу данных с той же структурой:

Примерный объем потерь можно оценить по проценту Bad pages на вкладке Pages Summary для базы данных:

Процент поврежденных страниц показывает, сколько страниц базы данных было зашифровано и их данные утеряны.

Таким образом, в 2 случаях базы данных были сохранены с помощью FirstAID Extractor, который экспортировал данные из зашифрованных баз данных.

Программа-вымогатель со 100% шифрованием

К сожалению, программы-вымогатели часто шифруют 100% файлов, и шифруют их полностью, без исключений.

Обычно такие программы-вымогатели внедряют вредоносный код в загрузчик операционной системы, затем перезагружают компьютер и имитируют выполнение CHKDSK, но вместо проверки дисков они шифруют все.

Единственный способ защититься от такого вируса - иметь резервную копию важной базы данных в стороннем месте: в облаке или в другом офисе.

Существует 4 возможных подхода к резервному копированию баз данных Firebird:

  1. Полная проверенная резервная копия с помощью gbak
  2. Инкрементальная непроверенная резервная копия с помощью nbackup
  3. Резервное копирование на уровне виртуальной машины (для виртуальной среды)
  4. Warm Standby (зеркалирование базы данных), основанное на репликации

Какой метод резервного копирования лучше всего подходит для защиты от программ-вымогателей? Давайте рассмотрим их плюсы и минусы на живом примере базы данных Firebird размером 50 ГБ.

Характеристика Полная проверенная резервная копия (gbak) Инкрементальная резервная копия (nbackup) Резервное копирование на уровне ВМ Warm-standby (репликация)
Размер для загрузки ~30 ГБ каждый день 50 ГБ изначально, затем измененные части
Максимальная частота резервного копирования Каждый день Каждый час Зависит от настроек инструмента резервного копирования ВМ Каждую минуту
Деградация производительности базы данных Высокая Умеренная Низкая Очень низкая
Надежность метода резервного копирования Высокая Низкая Низкая Высокая
Время, необходимое для выполнения резервного копирования 2-3 часа (зависит от скорости ввода-вывода) Первоначально 15-20 минут для создания уровня 0, затем 3-4 минуты Требуется полный снимок диска (зависит от ввода-вывода и размера диска) Первоначально 15-20 минут, всегда онлайн

Полная проверенная резервная копия с помощью gbak

Инструмент резервного копирования (gbak) читает всю базу данных и сохраняет ее в специальном формате (fbk). Этот метод резервного копирования называется проверенным из-за того, что он читает каждую запись в базе данных и гарантирует, что база данных в порядке. Это очень надежный метод резервного копирования.

Однако полная проверенная резервная копия неудобна для облачного резервного копирования достаточно больших баз данных (например, 50 ГБ в нашем примере), поскольку требует загрузки полной резервной копии каждый раз, и требует много времени для выполнения (это самый медленный тип резервного копирования в Firebird). Во время выполнения gbak производительность базы данных низкая из-за интенсивного случайного чтения и записи на диск.

Инкрементальная резервная копия с помощью nbackup

Инкрементальное резервное копирование выполняется с помощью nbackup - еще одного инструмента резервного копирования от Firebird. Nbackup создает резервные копии как приращения изменений: сначала он создает резервную копию уровня 0, которая является точной копией базы данных, а затем при следующей итерации сканирует базу данных и сохраняет только измененные страницы как уровень 1, уровень 2 и т.д. Можно настроить полное резервное копирование (уровень 0) раз в квартал, приращения уровня 1 каждый месяц, уровня 2 каждую неделю, уровня 3 каждый день и уровня 4 каждый час.

Это довольно быстро, резервные копии создаются почти со скоростью линейного копирования файлов.

Основным недостатком nbackup является отсутствие проверки - если страница базы данных повреждена, nbackup скопирует ее в файл резервной копии, который также будет поврежден (в отличие от gbak, который в этом случае выдаст ошибку). Кроме того, поскольку создание каждого уровня заставляет Firebird сканировать всю базу данных (в Firebird 2.5, в v3 есть улучшения), невозможно запускать nbackup слишком часто на большой базе данных.

Как вы можете понять, nbackup требует довольно сложного расписания, но с правильными инструментами это простая задача.

Правильный способ - использовать nbackup в сочетании с gbak: gbak проверяет базу данных каждый день или каждую неделю, а nbackup обеспечивает быстрый способ резервного копирования базы данных довольно часто.

Итак, nbackup выглядит хорошим выбором для хранения базы данных в облаке.

Резервные копии виртуальных машин

А как насчет резервных копий виртуальных машин? Поставщики инструментов для виртуальных машин и резервного копирования утверждают, что они поддерживают резервное копирование баз данных, однако они часто не уточняют, какие базы данных поддерживаются. Резервное копирование виртуальных машин требует, чтобы для конкретной базы данных был установлен провайдер Volume Shadow Service (VSS) для корректного выполнения онлайн-резервного копирования. Для Firebird провайдер VSS доступен как часть расширенной версии HQbird.

Конечно, в резервном копировании виртуальной машины с провайдером VSS нет никакой магии - за кулисами он использует nbackup для перевода базы данных в режим, подходящий для копирования. Без провайдера VSS результат резервного копирования на уровне виртуальной машины будет похож на копию базы данных в состоянии, аналогичном аппаратному сбросу: Firebird интенсивно использует кэширование данных в оперативной памяти, и возможно, что резервная копия будет повреждена из-за несброшенных изменений.

Тёплый резерв (Warm-standby)

Некоторые компании не хотят терять ни одной записи из базы данных. Недавние счета-фактуры до сбоя могут быть критически важными, а последняя отгрузка может отправить десятки грузовиков в дорогу. В этом случае даже почасовые резервные копии недостаточны; единственным возможным решением является тёплый резерв (зеркало только для чтения) базы данных, основанный на асинхронной нативной репликации.

Нативная означает, что репликация не требует триггеров или изменения метаданных (единственное требование - наличие первичных или уникальных ключей для всех реплицируемых таблиц), и она работает очень быстро.

Тёплый резерв требует создания первоначальной копии базы данных, её инициализации в качестве реплики и загрузки на резервный сервер. После этого изменения данных будут отправляться с главного сервера с минимальной задержкой (от 1 минуты). Отправляются только изменения, поэтому это не снижает производительность чтения базы данных.

Этот вариант резервного копирования очень надёжен - он гарантирует наличие живой копии базы данных на другом сервере.

Что IBSurgeon может сделать для вас?

Мы предлагаем сервис поддержки по подписке для Firebird, который включает облачное резервное копирование и опции тёплого резерва. Это просто и доступно ($99/месяц), и включает следующие возможности:

  • Мониторинг базы данных Firebird и автоматизация резервного копирования
  • Удалённый рабочий стол и поддержка через мессенджеры
  • Решение Failover для Firebird (тёплый резерв) и облачное резервное копирование

Пожалуйста, прочитайте больше подробностей о сервисе поддержки Firebird здесь.

Другой вариант - использовать HQbird, нашу расширенную версию Firebird, и реализовать облачное резервное копирование или тёплый резерв самостоятельно. Вы можете найти больше подробностей о HQbird здесь.

И, конечно, как последний шанс, FirstAID Extractor.

Пожалуйста, не стесняйтесь связаться с нами с любыми вопросами!