Debian 8(jessie)を実行している10GBのECCメモリを搭載したHP Proliant MicroserverGen7で実行されているホームサーバーがあります。現在、1つの小さなシステムディスク(rsnapshotを使用してバックアップ)と2x 3TBストレージディスクをmdadmを使用してRAID1としてセットアップしています。さらに、さまざまな目的のLVMグループがあります。そのうちの1つはさらにdm-crypt/luksで暗号化されています。プライベートデータを保持します。
ストレージプール用に同じサイズのHDを2つ追加購入し、おそらくサーバーを最初からセットアップすることを計画しています。間違いなくdebianを再度使用しますが、今回はおそらくxenserver仮想化を使用します。したがって、ストレージプールは4x 3TBになり、Raid1は使用可能な6TBを残し、Raid5(またはraidz1)は9TBになります。
Mdadm/lvm/dm-cryptの組み合わせはうまく機能しますが、特に簡単なディザスタリカバリ戦略を計画することは非常に複雑です。各レイヤーについて、メタデータのバックアップと復元に最適なプロセスなどを調査する必要があります。
完璧な世界では、ストレージ全体を暗号化されたraidz1プールにしますが、暗号化はまだLinux上のZfsに組み込まれていません。私の調査では、いつ実装されるかは完全に不明です。
Btrfsにも少し同じ状況があります。少なくとも、本番環境は安定しているように見えますが、残念ながら、暗号化も予測できない将来にしか実現しません。
したがって、私が使用したいファイルシステムから、どちらもLinuxでの暗号化をネイティブにサポートしていません(まだ)。 LUKSで暗号化されたLVMをZFSまたはBtrFSと組み合わせて使用する方法に関するハウツーとチュートリアルがたくさんあります。 ZFS上でLVMを使用するアプローチ、またはLVM上でZFSを使用するアプローチがあります-私には、ひどい混乱のように聞こえます。
私はEncFSの概念がまったく好きではないので、それも選択肢ではありません。
うまくいけば、私が聞いたことがないいくつかのオプションがあるので、ここでの私の質問:これを達成するために他に何がありますか?完全にまたは部分的に暗号化できますか?
2017年12月の更新:暗号化を特徴とするLinux上のZFSが間もなく登場: https://blog.heckel.xyz/2017/01/08/zfs-encryption-openzfs-zfs-on-linux/
zFSセットアップを選択した場合は、次のことをお勧めします。
lVMを使用せず、プールの上にZVOLを作成します
oSの場合-ミラー(またはraidz)を使用した暗号化されていないZFSプールのGPTパーティション
起動後、ssh経由でログインし、暗号化されたパーティションのパスワードを入力し、LUKSの上にあるプールをインポートしてから、仮想マシンを起動します(シェルスクリプトを作成するのが最適です)。
したがって、推奨されるスキーマはGPT/LUKS/ZFS /データまたはVMのZVOL
uEFIブートを使用しない場合は、BIOSパーティション(サイズ1M)を作成することを忘れないでください。また、150MのようにGRUB)のパーティションを作成することも忘れないでください。
重いランダムioの場合、ZFSプリフェッチを無効にすることをお勧めします(エコー1>/sys/module/zfs/parameters/zfs_prefetch_disable)
これは、一部のデータを暗号化する必要があるすべての人へのアドバイスです。Grubパーティション、システムパーティション、ホームパーティション、データパーティション、スワップなどに関係なく、コンピューターに接続されているすべての可能なストレージを常に100%暗号化します。すべてを暗号化します。
どうして?アプリケーション/システムによってデータが保存される場所を制御しないためです。
Disarterサンプルイベントのセキュリティ:
そのようなデバイスにあるもの(動作していない)を削除することはできません、それを読むことはできません、それで、そこに何が保存されましたか?多分何か「プライベート」?何がどこにあるのかさえ分からない。
しかし、他の誰か(おそらくポケットに数百万のお金を持っている)がそれを危険にさらしているので、「プライベート」データがそこにないことを確認するまで、そのデバイスをゴミ箱に入れることはできません...しかし、あなたが与えない限りあなたは知ることができませんデバイスを会社に送ったが、再び「プライベート」が危険にさらされている。おそらく彼らはそれを「コピー」している(そこで働いている悪い人など)。
これを聞いてください:使用するすべてのコード(ブートコード、システムコード、アプリケーションコードなど)の各ソース行、自分でコンパイルするソースコードを知っていますか...そして決して「バイナリ」を使用しないでください。 。だから、あなたは鉛筆と紙でコンパイラをコンパイルしたに違いありません。
それ以外の場合は、それが何をするのかわからないコードを使用します。
補足:「プライベート」データを使用する必要がある場合は、そのコンピューターをインターネットに接続することは二度とありません...使用したアプリの一部で、データを保存し、将来的にはインターネットサーバーに送信します。
極端なサンプル:書き込みアプリを使用してTXT foleを読み取り、どこかに隠して保存するための隠しコードがあります...その後、数年の更新後、そのアプリ(または別のアプリ)にはその隠された保存データを読み取り、インターネットサーバーやサードパーティのコンピューターなどに送信するための隠しコード。
ケースは極端ですか?私はそれらを難しい方法で学びます...私のLinuxでは(使用したいアプリの中に)トロヤンを入力するとどうやら何もしません(sockect接続がないなど)が、それはある種の「書き込み」をログに記録していましたディスクと二重書き込み... 2週間近く後、別のトヤンがその情報を取得してIPに送信しようとしました。インターネット接続の「真ん中」に別のコンピューターがありました(もちろん、私は私は完全に妄想的で、私を救いました)その接続を「発見」して「ブロック」しました...言うまでもなく、制御できないWindowsでは「Linux」のみを使用します。このようなトロイの木馬は、アプリの作成者の知識がなくても存在し、アプリがリポジトリに保存されたときに注入されました。どのアプリが「修正」されたのかは言わないほうがいいと思います...誰がいつから知っているのか!
私はトロヤンや隠されたものなどだけを考えていると思いますか、スワップ、一時ファイルなどを覚えておいてください...いくつかのアプリはあなたが行ったことを失わないようにあなたが使用/作成しているドキュメントを保存します、どこにそのデータを保存しますか?暗号化されたパーティション、おそらくSWAP、一時フォルダー、または一般的にアプリの作成者が望んでいた場所では必要ないので、どこに保存されているかを常に知ることはできません....もう一度すべてを暗号化します。
そうそう、grub.cfgはRAID0内、LUKS over LUKS ... over LUKSなどに常駐できます。Grub2を許可するには、8MiB以下のステージ1.5または2用の非常に小さなパーティションのみがフォーマットされていない(バルクダンプ)必要があります。ブート... BIOSの検索GRUBインターネット上のパーティション。
申し訳ありませんが、私はまだZFSを試しておらず、Grubファイル(grub.cfgなど)がZFS内に存在できるかどうかわかりません...しかし、それらをテストしました:Ext4 over LVM over LUKS over LVM over LUKS ...などいくつかのレベル... EFIパーティションのない実際のGPT(MBRでも同様)上のLUKSを超えて起動します... grub2をインストールするときに拡張機能「crypto」と「lvm」を追加するだけで済みます...私自身のgrub.cfgなので、grub2に関連するgrub2-install以外は使用しません(ここでも私はパラノイドです)。
私は常に他のブートローダーを呼び出す独自のgrub.cfgをメインブートローダーとして使用します。そうすれば、テキストエディターで手動で編集するメインブートローダーに触れることなく、システムに独自のブートローダーを管理させることができます。
申し訳ありませんが、私は完全な妄想です。
あなたはどう思いますか?暗号化されていないデータの書き込み/読み取りが可能な「場所」がある場合、あらゆる種類の「プライベート」データは完全なミスであり、暗号化されていない部分に書き込まれることがあります。安全のために、暗号化されていない部分は絶対に使用しないでください。
P.D。:EFIパーティションを使用する場合は、保護がまったくなく、暗号化できないFAT32パーティションであるため、どのコードでも書き込むことができることに注意してください。
P.P.D。:FAT32のどこにデータを保存できますか?どこでも、空きスペースでも。そしてExt4では?まったく同じ...常にすべてのストレージを暗号化します。
mdadm/lvm/dm-cryptがおそらく最善の策であり、それほど複雑ではありません。各レイヤーを適切に処理するだけです。または、必要に応じて、mdadm/dm-crypt/lvm(すべてのLVが必要な場合) 1つのデバイスを1つのパスフレーズで共有する)
Encfsを使用しないのは正しいです- その安全ではない 。