Linuxでイミュータブル(変更不可能)なストレージを作成・管理する

Linuxでイミュータブル(変更不可能)なストレージを作成・管理するには、目的(単一ファイル保護か、バックアップ全体保護か)に応じて複数の方法があります。

主な手法は、ファイル属性の変更(chattr)、ファイルシステム単位での読み取り専用マウント、そしてVeeamなどのバックアップソフトウェアによるハードニング(Linux強化リポジトリ)です。

1. chattr コマンドによるファイル/ディレクトリのロック

ext3ext4xfs などのファイルシステム上で、ファイルやディレクトリに「イミュータブル属性(+i)」を付与します。この属性を持つファイルは、rootユーザーであっても修正、削除、名前の変更、リンクの作成ができません。 

  • 属性を付与する (不変にする):
    bash
    sudo chattr +i /path/to/file_or_directory
  • 属性を確認する:
    bash
    lsattr /path/to/file_or_directory
  • 属性を解除する (戻す):
    bash
    sudo chattr -i /path/to/file_or_directory
  • 用途: 設定ファイル、システムバイナリ、アーカイブデータなど、絶対に変更されたくない単一ファイルやディレクトリの保護。

2. ファイルシステムの読み取り専用(Read-Only)マウント

ストレージをOS全体として読み取り専用でマウントします。

  • 一時的に読み取り専用で再マウントする:
    bash
    sudo mount -o remount,ro /mnt/data
  • fstabで永続的に設定する:
    /etc/fstab のオプションに ro を追加します。text/dev/sdb1 /mnt/data ext4 defaults,ro 0 2
  • 用途: データウェアハウス、監査ログなど、書き込みが完了したデータを保護する。 

3. Linux強化リポジトリ(Veeam式)

バックアップソフト「Veeam」が推奨する手法で、バックアップデータを数日間~数週間、rootユーザーでも消せない「真のイミュータブル」にします。これは以下の要素の組み合わせで実現されます。 

  1. 専用のLinuxサーバー: Veeamがsshで専用ユーザーでアクセス。
  2. XFSファイルシステムreflink 機能を利用して高速かつ保護されたデータ保持。
  3. 一時的なイミュータビリティ設定: バックアップデータに一定期間(例: 7日間)の不変フラグを適用。
  • メリット: ランサムウェアがroot権限を持っても、指定期間内はバックアップを削除・暗号化できない。 

4. 追記専用(Append-only)ストレージ

ファイルに「追記」のみ許可する属性(+a)を付与します。既存データは変更できませんが、新しいログを追記し続けることができます。 

  • 属性を付与する:
    bash
    sudo chattr +a /var/log/app.log

注意事項

  • rootの権限chattr +i でロックされたファイルは、rootであっても -i を外さなければ削除できません。
  • バックアップ保護の注意点: イミュータブル設定した期間は、たとえ正当な業務であっても、データの削除や上書きが不可能になるため、運用の設計が必要です。

Linuxでストレージ(ファイルやディレクトリ)をイミュータブル(不変)にするアプローチ


Linuxでストレージ(ファイルやディレクトリ)をイミュータブル(不変)にするアプローチとして、「バックアップをとってから chattr で属性を変更する」という流れは、個別のファイル保護としては非常に理にかなっています。

ただし、システムの運用目的によっては「ファイル単位」ではなく「ファイルシステム全体」を保護する方が安全な場合もあります。

現状の手順の確認と、より堅牢にするためのポイントを整理しました。


1. ご提示の手順の確認と詳細

chattr コマンドを使用する方法は、Linuxの拡張属性(Ext4やXFSなど)を利用した標準的な保護手法です。

手順の詳細

  1. バックアップ: 万が一設定を間違えたり、後で元の状態に戻せなくなったりするのを防ぐため、コピーを取っておくのは非常に良い習慣です。
  2. 属性の設定: 以下のコマンドで「不変(Immutable)」属性を付与します。
    Bash
    sudo chattr +i [ファイル名またはディレクトリ名]
    • 効果: rootユーザーであっても、この属性を外さない限り、削除、名前変更、書き込み、リンク作成ができなくなります。
    • ディレクトリに適用する場合: 中にあるファイルも再帰的にロックするには -R オプションを使います。
      Bash
      sudo chattr -R +i /path/to/directory

2. さらに堅牢にするためのステップ

「イミュータブルなストレージ」という目的が、セキュリティ向上や誤操作防止であれば、以下の点も考慮するとより確実です。

属性の確認方法

設定した後は、正しく適用されているか確認しましょう。

Bash

lsattr [ファイル名]

----i--------- のように i が表示されていれば成功です。

リードオンリー・マウント(より強力な方法)

特定のディレクトリやパーティション全体を「読み取り専用」にしたい場合は、マウント時に制限をかけるのが一般的です。

  • 一時的な変更:
    Bash
    sudo mount -o remount,ro /target/path
  • 恒久的な変更: /etc/fstab にて、該当のパーティションのオプションに ro (read-only) を追記します。

注意点:物理的な破壊やフォーマットには無力

chattr +i はOSの論理的なレベルでの保護です。

OSを介さずにストレージを直接操作された場合(別のPCに接続して操作するなど)は、この属性が無視されることがあります。

ディスク自体の物理的な故障や、ディスク全体のフォーマット(初期化)は防げません。


バックアップ全体をイミュータブル化をする

バックアップデータそのものをイミュータブル(不変)化するのは、ランサムウェア対策や誤削除防止として非常に強力な手段です。

「バックアップ全体」を対象にする場合、ファイル単位の chattr よりも、ストレージ層やファイルシステム層でロックをかける手法が一般的です。主な3つのアプローチを解説します。


1. ファイルシステム・レベル(論理ロック)

OS上のファイルシステム機能を使い、書き込み権限を物理的に遮断する方法です。

手順:読み取り専用(Read-Only)マウント

バックアップが完了した直後に、そのパーティションを「読み取り専用」に切り替えます。

  1. バックアップ実行(通常通り書き込み)
  2. 読み取り専用に再マウント:Bashsudo mount -o remount,ro /dev/sdb1 /mnt/backup /dev/sdb1 はバックアップ用ディスクのデバイス名です。
  3. 確認: mount | grep /mnt/backup(ro,...) と表示されれば、rootユーザーでも書き込み・削除ができません。

2. オブジェクトストレージ・レベル(S3 Object Lock)

もしクラウド(AWS S3や互換性のあるMinIOなど)をバックアップ先にしている場合、「Object Lock」という機能が使えます。

  • 仕組み: 指定した期間(例:30日間)、削除や上書きをAPIレベルで拒否します。
  • メリット: 管理者アカウントが乗っ取られても、保持期間が過ぎるまでデータは絶対に消せません。

3. バックアップ専用ツールによる「不変バックアップ」

最近のバックアップツール(Veeam, Restic, BorgBackupなど)には、標準でイミュータブル機能が備わっているものが多いです。

Restic + REST Server の例

Linuxサーバーをバックアップ用リポジトリにする場合、rest-server--append-only モードで起動すると、**「データの追加はできるが、既存データの削除・変更は一切受け付けない」**状態にできます。

Bash

# サーバー側で追記専用モードで起動
./rest-server --path /path/to/backups --append-only

4. 物理的な保護(究極のイミュータブル)

最も原始的ですが、最も確実な方法です。

  • LTOテープ: 書き込み後に「ツメ」を折る、またはWORM(Write Once Read Many)メディアを使用する。
  • SDカード/USBメモリ: 物理的な書き込み禁止スイッチを「Lock」側にする。

運用上のアドバイス:保持期間の設定

「一生消せない」設定にしてしまうと、ストレージがいっぱいになった時に困ります。実運用では以下の2段階で考えるのがベストです。

  1. バックアップ時: 書き込み可能モードで実行。
  2. 完了後: ツールまたはOS側で「30日間ロック」などの期限付きイミュータブル設定を入れる。


バックアップツール(Veeam, Restic, BorgBackupなど)で無料のツール

挙げられた3つのツールは、いずれも無料で利用できる「Community Edition」や「オープンソース版」が存在しますが、**「Linuxでの使いやすさ」「イミュータブル(不変)化のしやすさ」**で選ぶなら、以下の順序で検討するのがおすすめです。


1. Restic (完全無料・オープンソース)

「シンプルさ」と「不変バックアップ」を両立したい場合に最適です。

  • 特徴: シングルバイナリで動作し、インストールが非常に簡単です。
  • イミュータブル化: rest-server という公式のサーバーソフトを併用し、--append-only オプションを付けて起動するだけで、**「バックアップの追加はできるが、過去のデータ削除は一切受け付けない」**という不変ストレージを簡単に構築できます。
  • 向いている人: Linuxのコマンドライン操作に慣れており、手軽にセキュアなバックアップ環境を作りたい方。

2. BorgBackup (完全無料・オープンソース)

「保存容量の節約(圧縮率)」を重視する場合に最適です。

  • 特徴: 重複排除と圧縮機能が非常に強力で、バックアップデータが驚くほど小さくなります。
  • イミュータブル化: Restic同様に append-only モードがありますが、設定には少し手間がかかります。また、基本的には「サーバー・クライアント」構成で真価を発揮します。
  • 向いている人: 大容量のデータを扱っており、ストレージ費用や容量を節約したい方。

3. Veeam Backup & Replication (Community Edition)

「GUI(画面)で操作したい」「Windowsも含めて一括管理したい」場合に最適です。

  • 無料版の制限: 「Community Edition」として、最大10インスタンス(VMや物理サーバー)まで無料で利用可能です。
  • イミュータブル化: Linuxサーバーを「Hardened Repository(強化されたリポジトリ)」として設定することで、ファイルシステムレベルで不変属性を自動管理してくれます。
  • 向いている人: コマンド操作よりもマウスでのGUI管理を好み、エンタープライズ級の機能を無料で試したい方。

ツールの比較まとめ

ツール名ライセンス操作性イミュータブル化の難易度特徴
Restic完全無料CLI低 (専用サーバーで簡単)爆速・シンプル・クラウド対応
BorgBackup完全無料CLI中 (設定が必要)高圧縮・高機能・実績豊富
Veeam10台まで無料GUI中 (Linuxの知識が必要)高機能・商用クオリティ

個人的な推奨

Linuxに詳しく、すでにサーバーを管理されているのであれば、まずは Restic を試してみるのが最も近道です。特に、ご自身でWebシステムを開発されている技術力があれば、Resticのシンプルさは非常に扱いやすく感じるはずです。

カテゴリー: 未分類 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です