BackupZit

変更不可コピーによる 3-2-1 バックアップ:ランサムウェア対策を順を追って

3-2-1 ルールを実際に機能する構成にする方法です。オンサイトの高速なバックアップ、オフサイトのコピー、そして削除も上書きもできないコピーを少なくとも 1 つ(S3 Object Lock または Linux の強化リポジトリ)用意し、暗号化、保持、復元テスト、コピー失敗時のアラートを加えます。

このガイドで設定する内容

ネットワークに侵入した攻撃者は、サーバーを暗号化する前にまずバックアップを削除または暗号化しようとするのが一般的です。そのため、盗まれた管理者アカウントで削除できるバックアップだけでは不十分です。このガイドでは BackupZit で多層的な保護を構築します。ローカル ストレージ上のプライマリ バックアップ、別の場所へのコピー、そしてストレージの認証情報があっても設定期間が終わるまでバックアップを破壊できないストレージです。BackupZit は無料のオープンソース(AGPLv3)で、ここで説明する内容はすべて無料の製品に含まれます。

3-2-1 ルールと 3-2-1-1-0

3-2-1 ルール:データのコピーを 3 つ、2 種類の異なるメディアに保存し、そのうち 1 つはオフサイトに置きます。拡張版の 3-2-1-1-0 では、変更不可またはオフラインのコピーを 1 つ追加し、バックアップの検証で 0 エラーであることを求めます。BackupZit では次のとおりです。

要素BackupZit での実現
3 つのコピー本番データ、バックアップ ジョブ、バックアップ コピー ジョブ。
2 種類のメディア2 つのストレージ ターゲット。例:SMB または SFTP の NAS と S3 バケット。
1 つはオフサイトコピーをクラウド(S3、Azure Blob Storage)または別の建物の強化リポジトリに送ります。
1 つは変更不可またはオフラインObject Lock 付きの S3、強化リポジトリ、またはローテーションする USB ディスク。
0 エラー自動復元テストと保存データ全体のチェック。失敗するとアラートが届きます。

保護するマシンにエージェントを入れた BackupZit コンソールが必要です。最初の手順は Proxmox VE、Hyper-V、Windows ディスク イメージの各ガイドで説明しています。

ステップ 1 — 高速な復元のためのプライマリ ストレージ

コンソールで ストレージ → ストレージ ターゲットを追加 を開きます。最初のコピーには、バックアップと復元がフルスピードで動くようローカル ネットワーク上のストレージを選びます。ファイル サーバーや NAS の SMB 共有、または SFTP で接続する Linux サーバーや NAS(ホスト キーは固定されます)です。ターゲットにはバックアップ フォルダーにだけ書き込める専用アカウントを使い、バックアップ ストレージは Windows ドメインに参加させないでください。

保存するとコンソールがすぐにターゲットをテストするため、パスワード、ホスト キー、共有の誤りは最初のバックアップではなくその場でわかります。ストレージ一覧の 接続をテスト でテストを繰り返せます。

ステップ 2 — 変更不可のストレージを追加する

BackupZit には、期間が終わるまでバックアップを削除も上書きもできないストレージが 2 種類あります。オフサイトにも置けば、1 つのターゲットで両方の条件を満たせます。

方法 A:Object Lock 付きの S3

  1. Object Lock を有効にしてバケットを作成します。AWS、Wasabi、Backblaze B2 ではバケット作成時のオプション、MinIO では mc mb --with-lock です。
  2. 最新でないバージョンを 1 日後に削除するライフサイクル ルールを追加します(MinIO:mc ilm rule add --noncurrent-expire-days 1 --expire-delete-marker)。ロックされたバックアップを削除しても削除マーカーが付くだけで、ロックの期限が切れるとこのルールが領域を解放します。
  3. コンソールで種類 S3 互換(AWS、Wasabi、Backblaze B2、MinIO など) のターゲットを追加し、エンドポイント、バケット、そのバケットのアクセス キーを入力します。
  4. 変更不可のバックアップ(S3 Object Lock、コンプライアンス モード)期間: … 日 にチェックを入れ(既定は 30)、保護したい保持期間以上の長さを選びます。

するとエージェントが書き込むすべてのファイルが、その期間に 1 日を加えた間 コンプライアンス モードでロックされます。キーを持つ攻撃者もバケットの所有者も、それまでは削除や上書きができません。新しいバックアップが古いバックアップから再利用するデータはロックが延長されるため、どの復元ポイントも期間全体にわたって保護されます。変更不可のストレージでは、接続テストはサインインと一覧取得だけを行い、バケットに本当に Object Lock があるかも確認します。

Azure と Google Cloud:Azure Blob Storage では、Azure 側でコンテナーに時間ベースの保持ポリシー付きのバージョン レベルの不変性を有効にします。Google Cloud Storage は S3 ターゲットとして使えますが、Object Lock オプションはありません。代わりに Google Cloud でバケットの保持ポリシーを設定(してロック)してください。

方法 B:自前の Linux サーバー上の強化リポジトリ

専用の 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)、アクセス キー、フィンガープリントを入力します。

  • エージェントとコンソールはファイルを追加することしかできず、既存のファイルが上書きされることはありません。
  • 各ファイルには、そのサーバーで設定した期間に 1 日を加えた間、変更不可属性(chattr +i)が付きます。root でも、先に属性を外さない限り削除できません。
  • クライアントからの削除(保持ルールによるもの、またはアクセス キーを持つ攻撃者によるもの)は、期間が終わるまでファイルを隠すだけです。
  • 期間はリポジトリ サーバーでしか設定できず、コンソールやエージェントからは変更できません。

設定が終わったら、そのサーバーの SSH やその他のリモート アクセスを無効にし、ローカル コンソール、iDRAC/iLO、ハイパーバイザーからのアクセスを保護してください。保護の強さはそのマシンの root アカウント次第です。

ステップ 3 — 暗号化とリカバリーキー

バックアップを暗号化(AES-256) はオンのままにします(既定)。ファイルの内容、名前、フォルダー構造、スナップショット一覧はエージェントを出る前に AES-256-GCM で暗号化され、データへの変更はすべて検出されます。変更不可は削除を防ぎ、暗号化は読み取りを防ぎます。両方が必要です。

暗号化した各ターゲットについて、コンソールは リカバリーキー を表示し、リカバリー シートを提供します。オフラインで、バックアップとは別の場所に保管してください。キー、ストレージの場所、その認証情報があればコンソールなしでも復元できます。キーがなければ、BackupZit のサポートを含め誰もバックアップを読めません。

ステップ 4 — バックアップ ジョブと保持

バックアップ ジョブ で、ステップ 1 のプライマリ ストレージを使うジョブを作成します。バックアップの保持 で、最新 N 個に加えて日次・週次・月次の復元ポイントを設定します。たとえば最新 3、日次 7、週次 4、月次 6 なら、約 20 の復元ポイントで半年ほどの履歴が残ります。重複排除により、変更のないデータは一度しか保存されません。

目標復旧時点(RPO)、時間 は、最新の正常なバックアップがどこまで古くなってよいかを決めます(日次ジョブなら 26 など)。これを満たさないジョブはダッシュボードに表示されて通知されるため、何日もオフラインのエージェントや誤って削除されたスケジュールにも気付けます。

ステップ 5 — バックアップ コピー ジョブでオフサイト コピー

2 つ目のジョブを作成して バックアップ コピー を選びます。次のジョブのバックアップをコピー でステップ 4 のジョブを選び、ストレージ先 にはステップ 2 の変更不可またはオフサイトのターゲットを指定します。

  • コピーするのはソース ジョブのエージェントで、保護対象のマシンを再び読み取ることはありません。
  • 送信されるのはコピー先にまだないデータだけで、コピー先のキーで暗号化し直されます。
  • ソース ジョブの各バックアップ後(既定)でコピーを最新に保てます。通常のスケジュールも使えます(回線が遅ければ毎晩 1 回など)。
  • コピーには独自の保持設定があります。たとえば NAS に日次 7、クラウドに月次 12 です。各復元ポイントは作成から N 日間ロックされるため、30 日のロックでは、それより古い月次ポイントはもう保護されません。ロックを長くすれば保護されるポイントは増えますが、保存されるデータも増えます。

ファイルと VM(Proxmox VE、Hyper-V、VMware)のバックアップは、オリジナルと同じようにコピーから復元できます。ディスク イメージのコピーはコマンドライン エージェントで復元します。今すぐコピー ですぐにコピーを開始できます。

小規模オフィス向けのオフライン コピー:ターゲットの種類 ローテーションする USB / リムーバブルディスク(オフラインコピー) は、ボリューム ラベル(BZBACKUP1、BZBACKUP2 …)でディスクを見つけます。コピー ジョブをこのターゲットに向け、ディスクを定期的に(たとえば毎週)交換し、取り外したディスクは安全な場所に保管してください。ディスクが 1 台も接続されていないと、実行はアラート付きで失敗します。

ステップ 6 — 復元テストとデータ チェック

バックアップは復元して初めて実証されます。設定 → 復元テスト で次を設定します。

  • 各ジョブの最新バックアップを自動でテスト(既定は毎週):最新のバックアップから無作為に選んだファイルを一時フォルダーに復元し、保存されたチェックサムと 1 バイトずつ照合してから削除します。ディスク イメージでは無作為なブロックを検証します。これでストレージへのアクセス、認証情報、キー、データそのものを確認できます。
  • 保存データを確認(既定は毎月):各リポジトリのすべてのデータを読み取って検証するため、NAS の故障しかけたディスクやサイレントなデータ劣化を早期に発見できます。S3 と Azure では クラウド ストレージ(S3、Azure)でも をオンにした場合のみ実行されます。すべてをダウンロードするため、ダウンロード料金に注意してください。
  • Proxmox の VM ジョブでは、ネットワークを切断した状態で各 VM をバックアップから起動するブート テストを追加できます。

ジョブのページの 復元をテスト と データを確認 で、すぐに実行できます。結果は アクティビティ と レポート に表示され、失敗したテストは他の失敗と同じくアラートを送ります。

ステップ 7 — アラートとランサムウェア検知

何週間も失敗し続けているオフサイト コピーは、コピーとは言えません。設定 → メール通知 を設定し(テストメールを送信 で確認)、失敗 をオンのままにします。失敗した実行ごとに理由付きのメールが届きます(バックアップ、コピー、復元、復元テスト)。必要なら日次レポートも送れます。設定 → チャットと Webhook は同じ内容を Slack、Microsoft Teams、任意の HTTP エンドポイントに送ります。ダッシュボードの 要対応 には、失敗したジョブ、守られなかったスケジュールと RPO、オフラインのエージェント、90 % まで埋まったか 30 日以内に満杯になるストレージが表示されます。

さらに、各バックアップはそのジョブの最近の履歴と比較されます。普段よりはるかに多くのファイルが変更された、新しいデータが圧縮できなくなった(暗号化されたファイルはランダムに見える)、ファイル数が 3 分の 1 以上急減した、新しいデータ量が急増した、といった場合に不審としてマークされます。BackupZit はアラートを送り、確認が必要な不審なバックアップ に表示し、ジョブの保持を一時停止します(保持は一時停止中です)。そのため、損傷したバックアップが届き続けても、最後の正常なバックアップは削除されません。マシンを確認したら 確認済み — 保持を再開 をクリックします。

ステップ 8 — コンソールを保護する

変更不可のストレージが守るのはバックアップです。何をバックアップし何を残すかを決めるのは引き続きコンソールです。設定 → サインインとセキュリティ で管理者に 2 要素認証を必須にし、4 つの目による承認 をオンにします。するとジョブやストレージ ターゲットの削除、保持の短縮、不審なバックアップ後の保持の再開、承認機能の無効化には 2 人目のユーザーが必要になります。コンソールは内部ネットワークに置き、ポート 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

知っておくべき制限

  • 変更不可が有効なのはロック期間中だけです。削除されたバックアップは期間が終わると本当に消えるため、攻撃が気付かれないままでいる可能性のある期間を考えて期間を選んでください。
  • 強化リポジトリの安全性は、その root アカウントと、コンソール、iDRAC/iLO、ハイパーバイザーへのアクセスの保護次第です。
  • SMB、SFTP、ローカル ディスクには独自の変更不可機能がありません。変更不可またはオフラインのコピーと組み合わせてください。
  • ロックされたデータは、削除後もロックが切れるまで領域を使います。ライフサイクル ルールがないと S3 の領域は解放されません。
  • 変更不可はデータをきれいにはしません。バックアップ前に暗号化されたファイルは、暗号化されたままバックアップされます。攻撃前の復元ポイントから復元してください。検知機能は保持を一時停止してそうしたポイントを残します。
  • リカバリーキーがなければ、暗号化されたバックアップは誰にも読めません。
  • 4 つの目による承認が対象とするのはコンソールです。Active Directory や Entra ID の管理者グループは、そちら側で保護する必要があります。

次のステップ

BackupZit をダウンロードして、ランサムウェア対策とすべてのストレージ ターゲットを確認するか、コンソール内蔵のガイドでストレージ ターゲットとランサムウェア対策の章をお読みください。BackupZit 自体の開発とリリースの方法はセキュリティのページにあります。ジョブの設定は Proxmox VE、Hyper-V、Microsoft 365、Windows のベアメタル復元の各ガイドで説明しています。ご質問は GitHub Discussions へどうぞ。企業向けには MaxZit が有償サポートを提供しています(英語のみ)。