第 1 步 — 用于快速还原的主存储
在控制台中打开存储 → 添加存储目标。第一份副本请选择本地网络中的存储,使备份和还原全速运行:文件服务器或 NAS 上的 SMB 共享,或通过 SFTP 访问的 Linux 服务器或 NAS(其主机密钥会被固定)。为该目标使用只能写入备份文件夹的专用账户,并且不要把备份存储加入 Windows 域。
保存时控制台会立即测试该目标——密码、主机密钥或共享填错会当场显示,而不是等到第一次备份。存储列表中的测试连接可再次测试。
如何把 3-2-1 规则变成真正可用的方案:本地的快速备份、一份异地副本,以及至少一份无法删除或覆盖的副本(使用 S3 Object Lock 或加固 Linux 存储库),再加上加密、保留、还原测试,以及副本失败时的告警。
攻击者进入网络后,通常会先删除或加密备份,然后再加密服务器。因此,一份被盗管理员账户就能删除的备份是不够的。本指南用 BackupZit 搭建分层防护:本地存储上的主备份、另一处的副本,以及一个在设定期限结束前无法销毁备份的存储——即使掌握存储凭据也不行。BackupZit 免费且开源(AGPLv3);下面介绍的一切都属于免费产品。
3-2-1 规则:数据保留 3 份,存放在 2 种不同介质上,其中 1 份在异地。扩展规则 3-2-1-1-0 再增加 1 份不可变或离线副本,以及验证备份时 0 错误。在 BackupZit 中:
| 部分 | 在 BackupZit 中 |
|---|---|
| 3 份 | 生产数据、一个备份作业和一个备份副本作业。 |
| 2 种介质 | 两个存储目标,例如通过 SMB 或 SFTP 访问的 NAS 和一个 S3 存储桶。 |
| 1 份异地 | 副本存到云端(S3、Azure Blob Storage)或另一栋楼里的加固存储库。 |
| 1 份不可变或离线 | 启用 Object Lock 的 S3、加固存储库或轮换 USB 磁盘。 |
| 0 错误 | 自动还原测试和对全部已存储数据的检查,失败时发出告警。 |
您需要一台 BackupZit 控制台,并在要保护的机器上安装代理;Proxmox VE、Hyper-V 和 Windows 磁盘映像指南介绍了这些前期步骤。
在控制台中打开存储 → 添加存储目标。第一份副本请选择本地网络中的存储,使备份和还原全速运行:文件服务器或 NAS 上的 SMB 共享,或通过 SFTP 访问的 Linux 服务器或 NAS(其主机密钥会被固定)。为该目标使用只能写入备份文件夹的专用账户,并且不要把备份存储加入 Windows 域。
保存时控制台会立即测试该目标——密码、主机密钥或共享填错会当场显示,而不是等到第一次备份。存储列表中的测试连接可再次测试。
BackupZit 有两种存储,在期限结束前其中的备份无法删除或覆盖。理想情况下它同时位于异地,这样一个目标即可满足两项要求。
mc mb --with-lock。mc ilm rule add --noncurrent-expire-days 1 --expire-delete-marker)。删除已锁定的备份只会添加删除标记;锁定到期后,该规则会释放空间。此后代理写入的每个文件都会以合规模式锁定该期限再加一天:在此之前,任何人——无论是持有密钥的攻击者还是存储桶所有者——都无法删除或覆盖它。新备份从旧备份复用的数据会延长锁定,因此每个还原点都在整个期限内受到保护。在不可变存储上,连接测试只登录并列出内容,并检查存储桶是否确实启用了 Object Lock。
Azure 与 Google Cloud:对于 Azure Blob Storage,请在 Azure 中为容器启用版本级不可变性,并设置基于时间的保留策略。Google Cloud Storage 可作为 S3 目标使用,但没有 Object Lock 选项;请改为在 Google Cloud 中设置存储桶保留策略(并将其锁定)。
在一台专用 Linux 服务器上运行 backupzit-repo(deb 和 rpm 软件包附在每个 GitHub 版本中):
apt install ./backupzit-repo_*.deb # 或:dnf install ./backupzit-repo-*.rpm
vi /etc/backupzit-repo/repo.env # BACKUPZIT_REPO_LOCK_DAYS=30
systemctl start backupzit-repo
backupzit-repo add-key office-console # 访问密钥只显示一次
backupzit-repo fingerprint # 证书指纹
在控制台中添加类型为 加固存储库(Linux 上的 backupzit-repo,不可变)的目标,填写服务器地址(默认端口 8500)、访问密钥和指纹。
chattr +i),期限为该服务器上设置的时间再加一天。即使是 root,也必须先移除该属性才能删除文件。配置完成后,请关闭该服务器的 SSH 和其他远程访问,并保护其本地控制台、iDRAC/iLO 或虚拟化管理程序访问:防护强度取决于它的 root 账户。
保持加密备份(AES-256)开启(默认)。文件内容、文件名、文件夹结构和快照列表在离开代理之前就用 AES-256-GCM 加密,对数据的任何改动都会被发现。不可变性防止删除,加密防止读取——两者都需要。
对每个加密目标,控制台都会显示恢复密钥并提供恢复单。请离线保存,并与备份分开存放:有了密钥、存储位置及其凭据,即使没有控制台也能还原;没有密钥,任何人都无法读取备份——包括 BackupZit 支持人员。
在备份作业下使用第 1 步的主存储创建作业。在保留备份中设置最新的 N 个以及每日、每周和每月的还原点——例如最近 3 个、每日 7 个、每周 4 个、每月 6 个,可保留约半年、大约 20 个还原点。重复数据删除让未变化的数据只存储一次。
恢复点目标(RPO),小时规定最新成功备份最多可以有多旧,例如每日作业设为 26。未达标的作业会显示在仪表板上并发送通知,这也能发现离线多日的代理或被误删的计划。
创建第二个作业并选择备份副本。在复制以下作业的备份中选择第 4 步的作业,并将第 2 步的不可变或异地目标选为存储目标。
文件和虚拟机备份(Proxmox VE、Hyper-V、VMware)可以像从原始备份一样从副本还原;磁盘映像的副本使用命令行代理还原。立即复制会马上开始复制。
小型办公室的离线副本:目标类型轮换 USB / 可移动磁盘(离线副本)按卷标(BZBACKUP1、BZBACKUP2 …)识别磁盘。将一个副本作业指向它,定期(例如每周)更换磁盘,并把断开的那块存放在安全的地方。如果没有连接任何磁盘,运行会失败并发出告警。
备份只有在被还原过后才算得到证明。在设置 → 还原测试中:
作业页面上的测试还原和检查数据可立即启动。结果显示在活动和报告中;测试失败会像其他失败一样发送告警。
连续几周都失败的异地副本等于没有副本。配置设置 → 电子邮件通知(用发送测试邮件检查),并保持失败开启:每次运行失败都会发送一封附带原因的邮件——备份、副本、还原和还原测试——还可以选择每日报告。设置 → 聊天和 Webhook 会把同样的内容发送到 Slack、Microsoft Teams 或任意 HTTP 端点。仪表板上的需要关注列出失败的作业、错过的计划和 RPO、离线代理,以及已满 90 % 或将在 30 天内装满的存储。
此外,每个备份都会与其作业的近期历史进行比较。若更改的文件远多于平常、新数据不再能压缩(加密文件看起来是随机数据)、文件数量骤降三分之一或更多,或新数据量突然激增,该备份就会被标记为可疑。随后 BackupZit 会发送告警,将其列入待检查的可疑备份,并暂停该作业的保留(保留已暂停),这样即使损坏的备份不断到来,最后的干净备份也不会被删除。检查机器后,点击已检查 — 恢复保留。
不可变存储保护的是备份;决定备份什么、保留什么的仍是控制台。在设置 → 登录与安全中,要求管理员使用双因素认证,并开启四眼审批:之后删除作业或存储目标、缩短保留、在可疑备份后恢复保留以及关闭审批,都需要第二位用户批准。请把控制台放在内部网络中,不要把 8443 端口暴露到互联网,远程管理请使用 VPN。启用设置 → 控制台备份后,控制台还会每天把自身备份到网络存储目标。
如果备份被删除或覆盖,可以读取攻击之前的存储状态——只读,适用于启用 Object Lock 的 S3 和加固存储库:
backupzit-agent snapshots --repo <存储库> --as-of 2026-10-01T14:30
backupzit-agent restore --repo <存储库> --as-of 2026-10-01T14:30 --target D:\Restore latest
在加固存储库上,管理员还可以找回被隐藏的文件,让备份恢复正常:
backupzit-repo status
backupzit-repo undelete --since 2026-10-01T14:00
下载 BackupZit,查看勒索软件防护和所有存储目标,或阅读控制台内置指南中关于存储目标和勒索软件防护的章节。BackupZit 本身如何构建和发布,请见安全页面。作业的配置在 Proxmox VE、Hyper-V、Microsoft 365 和 Windows 裸机还原指南中介绍。欢迎在 GitHub Discussions 提问。企业可以从 MaxZit 获得商业支持(仅提供英文服务)。