web-dev-qa-db-ja.com

ランサムウェア耐性のあるLinux Sambaファイルサーバー

次のシナリオを想像してみてください:

  • ファイルはLinuxサーバーに保存され、クライアントはSamba経由でファイルにアクセスします。
  • クライアントマシンの1つがランサムウェアに感染し、サーバーの共有上のファイルを含め、ログオンしたユーザーの手の届く範囲にあるすべてのものを暗号化します。

このような攻撃からの完全かつ簡単な回復を可能にする解決策(通常のバックアップ以外)があるかどうか、私は興味があります。

私が考えていた大まかな設計は、ある種のスナップショット/バージョン管理に基づいています。

  • ファイルが変更または削除されたときはいつでも、どこかに古いバージョンのコピーを保管してください。
  • これらの以前のバージョンは通常のユーザーには読み取り専用であり、クライアントマシンで実行されているあらゆる種類のランサムウェアによる改ざんからユーザーを保護します。
  • 以前のバージョンは、特別なパス(例:以前のバージョンの/home/john/path/to/file.odt/home/john/path/to/~snapshot/20161120_163242/file.odt
  • 共有全体を以前の状態に戻すための何らかのメカニズム。
  • 必要に応じて、不審なアクティビティを検出するヒューリスティック(たとえば、多数のファイルが読み取られる、同じサイズの新しいファイルが作成され、元のファイルが削除される、またはファイルが大規模に変更される)をトリガーし、適切なアクション(管理者への通知、書き込みアクセスのブロック)をトリガーする)。
  • 保護は既知のランサムウェアの特定の特性だけに依存するべきではありません。これらは特定のトロイの木馬に対して機能する可能性がありますが、別の方法で実装された将来のランサムウェアに対しては完全に役に立たない可能性があります。

この種のことを行い、Linuxで動作し、FOSSであるソフトウェアはありますか?

6
user149408

それ以来、いくつかのことを読み、次の設計を思いつきました。実際にはまだテストされていませんが、おそらく私が望んでいることを実行するでしょう。

バックグラウンド

このセットアップの背後にある「有効化テクノロジー」は 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、サーバー全体、サーバーのグループ、すべてのサーバーの共有への書き込みアクセスを、必要に応じてブロックします。これにより、ブロックを犠牲にしてトロイの木馬が作業を続行できなくなります。いくつかの正当な用途。
  • 書き込みアクセスのブロックが実用的でない場合は、サーバーへの帯域幅を(おそらく選択的にも)スロットルします。これにより、パフォーマンスは低下しますが、暗号化プロセスが遅くなり、合法的な使用を継続できます。
  • スナップショットローテーションを無効にします。これが攻撃であり、しばらくの間継続している場合、最新のスナップショットからすべてを回復することはできませんが、時間を遡る必要がある場合があります。
  • フォレンジック手順を実施している場合は、必要に応じてそれらをトリガーします。ほとんどの場合、ログローテーションの無効化やより詳細なログ記録の有効化など、証拠を保存する手順が含まれます。
0
user149408

私はバックアップがあなたの唯一の確かな賭けだと思います。ソリューションとして提案するのは、基本的に特別なバックアップを作成することです。いくつか(少なくとも2つ)の完全バックアップを保持することをお勧めします。その後、問題はファイルで動作しているランサムウェアを検出し、最後の適切なバックアップから回復することにまで減少します。重複排除バックアップを使用してスペースを節約できます。バックアップルートに行く利点は、

  1. 複雑さが軽減されます(ランサムウェア専用の追加システムはありません)
  2. バックアップルーチンの品質が向上します。アラートとリカバリを自動化したら、バックアップのリカバリを簡単にするために多くのことを行います。これは、ランサムウェアだけではなく、より広範なカテゴリの障害に適しています。

detectingランサムウェアの場合、それは簡単です。暗号化されたファイルはすべてランダムデータのように見えるため、各ファイルの統計テスト(バイトの等分布、zipを使用して圧縮できないなど)を行い、その数を数えることができます。ランダムに見えるファイルの。

2
Out of Band

現在、あなたの主な敵はロッキーです:

enter image description here

この記事 は、 Fail2Ban を使用して、ロッキーの身代金ノートを検出することで必要なことを行う方法の詳細を示しています。

[Definition]

failregex = smbd * \.. \ IP = <Host> \ | * \ locky $.

. Smbd * \. \ IP = <Host> \ | * _ Locky_recover_instructions \ .txt $
1
J.A.K.