それ以来、いくつかのことを読み、次の設計を思いつきました。実際にはまだテストされていませんが、おそらく私が望んでいることを実行するでしょう。
バックグラウンド
このセットアップの背後にある「有効化テクノロジー」は Btrfs であり、そのうち3つの機能を利用します。
- コピーオンライト(COW):ファイルがコピーされるとき、Btrfsは最初にペイロードを複製しません。両方のファイルがディスク上の同じ領域を指し、2つのファイルのいずれかが変更された場合にのみ、真のコピーが作成されます。これにより、ファイルの複製が非常に簡単で軽量になります。
- サブボリューム:これらはボリューム内のボリュームです。サブボリュームは、その親ボリューム(通常のディレクトリとして表示される)で本質的にマウントされるか、または独自にマウントされます。
- スナップショット:スナップショットはサブボリュームのコピーであり、それ自体がサブボリュームです。 BtrfsのCOWの性質により、オーバーヘッドは最小限です。スナップショットされるサブボリュームに子サブボリュームがある場合、これらは含まれません(必要な場合は、個別にスナップショットを作成してください)。スナップショットは、読み取り/書き込みまたは読み取り専用にすることができます。後者の場合、読み取り/書き込みマウントの一部であっても不変です。
セットアップ
- すべてのファイル共有を保持するbtrfsボリュームを作成します。 ( [〜#〜] fhs [〜#〜] は
/srv
をサービス固有のユーザーデータのルートとして指定するため、マウントポイントは/srv/samba
または/srv/file
。)noatime
オプションを使用してマウントします(これにより、単純な読み取りでファイルのメタデータが変更されず、スナップショットのオーバーヘッドがさらに最小限に抑えられます)。 - ファイル共有ごとに、Btrfsサブボリュームを作成します。それらは親と同じマウント属性を持つことができるため、個別にマウントする必要はありません。
- サブボリュームの読み取り専用(重要!)スナップショットをサブボリュームのサブボリュームとして作成する、定期的(毎晩、毎時、ニーズに応じて)cronjobを実行します。たとえば、
/srv/file/joe
の今日の毎日のスナップショットは/srv/file/joe/snapshot/daily-20180317
に入ります。オプションで、スクリプトは特定の期間を過ぎたスナップショットを削除できます。サンプルは here にあります。 - 可能であれば、次の追加アクションを実行します。
- 特権アカウント(
Sudo
権限を持つアカウントなど)を、ネットワーク共有へのアクセスに使用されるアカウントから分離する - 通常のユーザーがシステムでコマンドを実行する機能を制限します(シェルログインを許可しないか、コマンドを最小限に制限します)。
- Rootアカウントをロックします(Sudoの使用を強制します)。
- 特権操作にはユーザーのパスワードが必要です。
作用機序
ランサムウェアツールが手の届くところにあるすべてのものを暗号化しても、スナップショットを単純に暗号化することはできません。次のことが必要です。
- ネットワーク共有に対して実行されていることに注意してください(クラウドストレージを暗号化する既知の暗号化トロイの木馬もあるので、これは実際の障害ではありません)。
- ファイルはBtrfsディスクから提供されていることに注意してください。また、そのサブボリューム構造を検出できます。
- サーバー上の権限をエスカレートして、Btrfsサブボリュームを台無しにします(たとえば、スナップショットを削除したり、読み書き可能なスナップショットに置き換えたりします)。これが、ファイル共有のユーザーアカウントを特権のあるユーザーアカウントから分離する主な理由です。
正しく実行された場合(つまり、3つの前提条件の少なくとも1つは攻撃者にとって十分に高価です)、それは大幅にレベルを上げます。
マルウェアが攻撃されると、次のことが起こります。
- ファイルは暗号化されますが、スナップショットは影響を受けません。目標復旧時点は、スナップショット間の時間と同じです。つまり、最後のスナップショット以降に行われた変更が最大で失われます。これは、スナップショットの頻度を増やすことで対処できます(例:毎日から1日に複数回、1時間に1回、または1時間に複数回)。
- BtrfsのCOWの性質上、ファイルの暗号化には余分なスペースが必要になります。ディスクの容量がほとんどない場合は、暗号化が完了する前に領域が不足する可能性があります。これにより、残りのファイルの暗号化が妨げられる可能性があります(正確な動作はトロイの木馬に依存するため、それを当てにしないでください)。
エクストラ
システムを定期的にバックアップします。スナップショットはこれを補完するだけです。スナップショットは、欠陥のあるソフトウェア、ユーザーエラー、または特定の悪意のあるアクションによって引き起こされるデータの破損から回復する必要がある場合に役立ちますが、ディスクが故障した場合は役に立ちません。
このセットアップは、不審なアクティビティを検出して対策をトリガーすることでさらに補完できます。
不審な活動の兆候は次のとおりです。
- 大規模に上書きされているように見えるファイル、系統的に見える(一部のトロイの木馬は特定のファイルタイプの後にしか実行されない)
- 上書きされたファイルのコンテンツの高いエントロピー(簡単なテスト:圧縮で節約されるスペースはゼロに近い—一部のトロイの木馬はファイルの一部のみを暗号化しますが、この方法では検出が難しくなります)
- 通常は変更しないと予想されるファイルへの変更(数年前の休日の写真、またはこの目的のためにのみ作成されたhoneyfileなど)—トロイの木馬がほとんどのファイルを暗号化した後でのみこれらのファイルを暗号化した場合、効果は低くなります。残り)
可能なアクションは次のとおりです。
- アラートをトリガーして、管理者が調査できるようにします。
- ユーザー、不審なIP、サーバー全体、サーバーのグループ、すべてのサーバーの共有への書き込みアクセスを、必要に応じてブロックします。これにより、ブロックを犠牲にしてトロイの木馬が作業を続行できなくなります。いくつかの正当な用途。
- 書き込みアクセスのブロックが実用的でない場合は、サーバーへの帯域幅を(おそらく選択的にも)スロットルします。これにより、パフォーマンスは低下しますが、暗号化プロセスが遅くなり、合法的な使用を継続できます。
- スナップショットローテーションを無効にします。これが攻撃であり、しばらくの間継続している場合、最新のスナップショットからすべてを回復することはできませんが、時間を遡る必要がある場合があります。
- フォレンジック手順を実施している場合は、必要に応じてそれらをトリガーします。ほとんどの場合、ログローテーションの無効化やより詳細なログ記録の有効化など、証拠を保存する手順が含まれます。