ランサムウェアからFirebirdデータベースを保護する方法は?
2016年12月6日,作者:Alexey Kovyazin
勒索软件攻击已成为许多公司面临的严重问题:上周,我们有3起来自不同客户的Firebird数据库被勒索病毒加密的事件。幸运的是,我们成功帮助了所有客户,但问题的规模无疑在增加。
在本文中,我们将探讨这些问题是如何解决的。
一般来说,勒索软件并非专门针对Firebird数据库进行加密;它只是加密计算机上的所有文件,然后要求支付赎金以提供解密密码,即使你支付了,也可能根本得不到任何解密密码或回应(此外,有必要查看杀毒软件网站:它们经常发布该勒索软件的解锁码甚至解密工具。例如,其中一个:noransom.kaspersky.com)。
当然,安装可靠(且适合服务器)的杀毒软件是必要的,但我们能否专门针对Firebird数据库做些什么来保护它呢?
勒索软件有不同类型,让我们考虑它们对Firebird数据库的影响。
其中2家公司遭受的勒索软件部分加密了它们的Firebird数据库。
如你所知,Firebird数据库文件是一组大小相同的页面。Firebird数据库中的数据库页面包含不同类型的信息:元数据、用户数据、索引、生成器等。

通常,这类勒索软件并非加密整个数据库文件,而是加密其中的一小部分–头页面和数据库内部一定百分比的数据库页面。
由于所有页面之间都有紧密的关联,即使只有少数几页被加密,也会使整个数据库无法被Firebird引擎读取。例如,在一个10GB的数据库中,被加密的数据不到1%,其余99%都是完好的。
在这种情况下,这种被加密的数据库可以被视为严重损坏的数据库文件,而IBSurgeon FirstAID是能够从被加密的Firebird数据库文件中导出数据的工具。同样的方法也用于从损坏的硬盘中恢复数据库。
从被加密的Firebird数据库中导出数据
IBSurgeon FirstAID可以通过直接修复或数据提取来恢复数据库。直接修复速度很快,可以直接修复数据库文件中的损坏。然而,在勒索软件的情况下,这种方法无济于事,因为头页面和主要元数据已丢失,因此提取是唯一的选择。
FirstAID直接读取数据库文件–它不使用Firebird来访问数据库文件,而是逐字节直接读取数据库文件。由于它只专注于提取损坏的数据,并牺牲了性能,FirstAID甚至可以从严重损坏的Firebird数据库中导出数据。当然,FirstAID会将加密数据视为损坏数据跳过,只导出完好的数据。
如果勒索软件没有加密关键的元数据,则可以使用FirstAID打开被加密的数据库文件并预览记录:在左侧列表中选择表,打开“预览”选项卡,然后浏览数据页面。
您看到的记录可以导出到具有相同结构的新数据库中:

大致的损失量可以通过数据库“页面摘要”选项卡中的“坏页面百分比”来估算:

坏页面的百分比显示了有多少数据库页面被加密,以及这些数据已丢失。
因此,在这2起案例中,数据库通过FirstAID提取器成功保存,该工具从被加密的数据库中导出了数据。
100%加密的勒索软件
不幸的是,勒索软件经常100%加密文件,并且完全加密,无一例外。
通常,这类勒索软件将恶意代码注入操作系统的引导加载程序,然后重启计算机,并模拟CHKDSK执行,但并非检查磁盘,而是加密一切。
防止此类病毒的唯一方法是在第三方位置(云端或另一个办公室)保存重要数据库的备份。
Firebird数据库有4种可能的备份方法:
- 使用gbak进行完整验证备份
- 使用nbackup进行增量未验证备份
- VM级别备份(适用于虚拟环境)
- 基于复制的热备(数据库镜像)
哪种备份方法最适合防范勒索软件?让我们以50GB大小的Firebird数据库的实际示例来考虑它们的优缺点。
| 特性 | 完整验证备份(gbak) | 增量备份(nbackup) | VM级别备份 | 热备(复制) |
|---|---|---|---|---|
| 上传大小 | 每天约30GB | 初始50GB,之后为变更部分 | ||
| 最大备份频率 | 每天 | 每小时 | 取决于VM备份工具设置 | 每分钟 |
| 数据库性能下降 | 高 | 中等 | 低 | 非常低 |
| 备份方法可靠性 | 高 | 低 | 低 | 高 |
| 执行备份所需时间 | 2-3小时(取决于IO速度) | 初始创建级别0需15-20分钟,之后3-4分钟 | 需要对磁盘进行完整快照(取决于IO和磁盘大小) | 初始15-20分钟,始终在线 |
使用gbak进行完整验证备份
备份工具(gbak)读取整个数据库并以特殊格式(fbk)存储。这种备份方法被称为“验证”备份,因为它读取数据库中的每条记录并确保数据库完好。这是一种非常可靠的备份方法。
然而,对于足够大的数据库(如我们示例中的50GB),完整验证备份不适合云备份,因为它每次都需要上传完整备份,并且执行时间较长(这是Firebird中最慢的备份类型)。在gbak执行期间,由于密集的随机磁盘读写,数据库性能较低。
使用nbackup进行增量备份
增量备份使用nbackup完成–这是Firebird的另一个备份工具。Nbackup以变更增量的方式创建备份:首先,它创建级别0备份,即数据库的精确副本,然后在下次迭代中扫描数据库,仅存储已更改的页面作为级别1、级别2等。可以设置每季度一次完整备份(级别0),每月一次级别1增量,每周一次级别2,每天一次级别3,每小时一次级别4。
它相当快,几乎以线性文件复制的速度创建备份。
nbackup的主要缺点是缺乏验证–如果数据库页面损坏,nbackup会将其复制到备份文件中,该文件也将损坏(与gbak不同,gbak在这种情况下会报错)。此外,由于创建每个级别都会使Firebird扫描整个数据库(在Firebird 2.5中,v3有所改进),因此无法在大型数据库上过于频繁地运行nbackup。
如您所知,nbackup需要相当复杂的调度,但使用合适的工具,这是一项简单的任务。
正确的方式是将nbackup与gbak结合使用:gbak每天或每周验证数据库,而nbackup提供频繁备份数据库的快速方式。
因此,nbackup看起来是将数据库存储在云中的不错选择。
VM备份
虚拟机备份呢?VM和备份工具的供应商声称它们支持数据库备份,但通常不指明支持哪些数据库。VM备份需要为特定数据库安装卷影服务(VSS)提供程序,才能正确执行在线备份。对于Firebird,VSS提供程序可作为HQbird高级发行版的一部分获得。
当然,使用VSS提供程序的VM备份并无神奇之处–在幕后,它使用nbackup将数据库切换到适合复制的模式。如果没有VSS提供程序,VM级别备份的结果就像数据库在类似硬重置状态下的副本:Firebird会密集使用RAM中的数据缓存,未刷新的更改可能导致备份损坏。
ウォームスタンバイ
データベースからデータを一切失いたくない企業もあります。クラッシュ直前の請求書が重要になることもあれば、最後の出荷が何十台ものトラックを道路に送り出すこともあります。このような場合、毎時のバックアップでも不十分であり、唯一可能な解決策は、非同期ネイティブレプリケーションに基づくデータベースのウォームスタンバイ(読み取り専用ミラー)です。
ネイティブとは、レプリケーションがトリガーやメタデータの変更を必要としない(唯一の要件は、レプリケートされるすべてのテーブルにプライマリキーまたはユニークキーがあること)ことを意味し、非常に高速に動作します。
ウォームスタンバイには、データベースの初期コピーの作成、レプリカとしての初期化、スタンバイサーバーへのアップロードが必要です。その後、データの変更は最小限の遅延(1分から)でマスターから送信されます。変更のみが送信されるため、データベースの読み取りパフォーマンスを低下させることはありません。
このバックアップオプションは非常に信頼性が高く、別のサーバー上にデータベースのライブコピーが存在することを保証します。
IBSurgeonは何ができますか?
当社はFirebird向けのサブスクリプション制サポートサービスを提供しており、クラウドバックアップとウォームスタンバイオプションが含まれています。これは手軽で手頃な価格(月額$99)であり、以下のオプションが含まれます:
- Firebirdデータベースの監視とバックアップの自動化
- リモートデスクトップおよびインスタントメッセンジャーによるサポート
- フェイルオーバーFirebirdソリューション(ウォームスタンバイ)とクラウドバックアップ
Firebirdサポートサービスの詳細については、こちらをご覧ください。
もう一つのオプションは、当社の高度なFirebirdディストリビューションであるHQbirdを使用して、クラウドバックアップやウォームスタンバイを自分で実装することです。HQbirdの詳細については、こちらをご覧ください。
そしてもちろん、最後の手段として、FirstAID Extractorがあります。
ご質問がございましたら、お気軽にお問い合わせください!