情報セキュリティの聖なる三位一体である C (機密性)、I (完全性)、および A (可用性) を念頭に置いてください。したがって、構成の強化について話すときは、使用しているテクノロジ、保護されている情報、組織内での情報の使用方法、および脅威を考慮する必要があります。これらの回答、および場合によっては他の回答に基づいて、どのテナントが最も重要で、何に注目すべきかを判断し始めることができます。
通常、ファイルシステム レベルでは、整合性と可用性に最も関心があります。情報の機密性はおそらく別のレイヤーで処理する必要がありますが、ファイルシステムをどのように配置し、どのように使用するかによって、情報が信頼できるものであり、必要なときにいつでも利用できるようにする必要があります.
パーティションをレイアウトする際に留意すべきことの 1 つは、障害モードです。通常、その質問の形式は次のとおりです。「パーティション x の場合 いっぱい?」
OS を保存しているパーティションがいっぱいになったらどうなりますか? /
のときに奇妙なことが起こることがあります いっぱいになります。システムがハングすることがあります。新しいログイン セッションが発生しない場合があります。システムが起動を拒否することがあります。
すべての障害モードの中で、OS、カーネルのバージョン、構成などに基づいて症状が変化する可能性が最も高いため、これを厳密に特徴付けるのが最も困難です。一部のファイルシステム、特に ext 行では、ファイルシステムが創造された。この確保されたスペースは root ユーザーのみが使用でき、システム管理者が引き続き操作してスペースを消去できるようにすることを目的としています。
ログを保存しているパーティションがいっぱいになるとどうなりますか? 監査/レポート データが失われ、攻撃者が活動を隠すために使用することがあります。ログイン イベントを記録できない場合、システムが新しいユーザーを認証しない場合があります。
/var
の場合、RPM ベースのシステムで何が起こるか いっぱいですか? パッケージ マネージャーはパッケージをインストールまたは更新しません。構成によっては、警告なしで失敗する場合があります。
パーティションをいっぱいにするのは簡単です。ユーザーが書き込み可能な場合は特にそうです。楽しみのために、次のコマンドを実行して、非常に大きなファイルをすばやく作成できることを確認してください:cat /dev/zero > zerofile
.
パーティションを埋めるだけでなく、異なるマウント ポイントに場所を配置すると、マウント オプションをカスタマイズすることもできます。
/dev/
になるとどうなるか noexec
でマウントされていません ? /dev
以降 通常、OS によって維持され、悪意のあるプログラムを隠すために頻繁に (そして今でも使用されている) デバイスのみが含まれていると想定されています。 noexec
を残す そこに保存されているバイナリを起動できます。
これらすべての理由やその他の理由から、多くのハードニング ガイドでは、実行する最初の手順の 1 つとしてパーティショニングについて説明しています。実際、新しいサーバーを構築している場合、ディスクをどのようにパーティション分割するかは、ほぼ正確に最初です。 あなたが持っているもの 多くの場合、後で変更するのが最も困難です。 Center for Internet Security と呼ばれるグループが存在し、読みやすい構成ガイドをまとめて作成しています。特定のオペレーティング システムのガイドを見つけて、彼らが言うかもしれない詳細を確認できる可能性があります。
RedHat Enterprise Linux 6 を見ると、推奨されるパーティショニング スキームは次のとおりです。
# Mount point Mount options
/tmp nodev,nosuid,noexec
/var
/var/tmp bind (/tmp)
/var/log
/var/log/audit
/home nodev
/dev/shm nodev,nosuid,noexec
これらすべての変更の背後にある原則は、それらが互いに影響を与えないようにすること、および/または特定のパーティションで実行できることを制限することです。 /tmp
のオプションを取る 例えば。つまり、そこにはデバイスノードを作成できず、そこからプログラムを実行することはできず、set-uid ビットを設定することはできません。その性質上、/tmp
ほとんどの場合、誰でも書き込み可能であり、多くの場合、メモリ内にのみ存在する特別なタイプのファイル システムです。これは、攻撃者が悪意のあるコードをドロップして実行するための簡単なステージング ポイントとして使用し、システムをクラッシュ (または単に再起動) することで、すべての証拠を消去できることを意味します。 /tmp
の機能以来 はその機能を必要としないため、機能を簡単に無効にして、その状況を防ぐことができます。
ログの保管場所、/var/log
と /var/log/audit
リソースの枯渇からそれらを緩衝するのを助けるために切り分けられます。さらに、auditd は、そのログ ストレージがいっぱいになり始めたときに、いくつかの特別なことを実行できます (通常、より高度なセキュリティ環境で)。パーティションに配置することで、このリソース検出のパフォーマンスが向上します。
より詳細にするには、 mount(8)
を引用します 、これはまさに上記で使用されたオプションです:
noexec マウントされたファイル システムでのバイナリの直接実行を許可しないでください。 (最近まで、とにかく /lib/ld*.so/mnt/binary のようなコマンドを使用してバイナリを実行することができました。Linux 2.4.25 / 2.6.0 以降、このトリックは失敗します。)
ノード開発 文字を解釈したり、ファイル システム上の特殊なデバイスをブロックしたりしません。
ノスイド set-user-identifier または set-group-identifier ビットを有効にしないでください。 (これは安全に見えますが、実際には suidperl(1) がインストールされている場合は安全ではありません。)
セキュリティの観点から、これらはファイルシステム自体を保護できるため、知っておくとよいオプションです。非常に安全な環境では、 noexec
を追加することさえできます /home
へのオプション .標準ユーザーがログ ファイルの分析など、データを処理するためのシェル スクリプトを作成するのが難しくなりますが、特権を昇格させるバイナリを実行することもできなくなります。
また、root ユーザーのデフォルトのホーム ディレクトリは /root
であることに注意してください。 .これは、/
になることを意味します。 ファイル システム、ではない /home
で .
各パーティションに与える正確な量は、システムのワークロードによって大きく異なります。私が管理している典型的なサーバーは、人とのやり取りをほとんど必要としないため、 /home
パーティションはそれほど大きくする必要はありません。同じことが /var
にも当てはまります 頻繁に作成および削除される一時的なデータを保存する傾向があるためです。ただし、Web サーバーは通常 /var/www
を使用します。 つまり、それも別のパーティションにある必要があるか、または /var/
大きくする必要があります。
過去に、ベースラインとして以下を推奨しました。
# Mount Point Min Size (MB) Max Size (MB)
/ 4000 8000
/home 1000 4000
/tmp 1000 2000
/var 2000 4000
swap 1000 2000
/var/log/audit 250
これらは、システムの目的と環境の運用方法に応じて見直し、調整する必要があります。また、LVM を使用し、ディスク全体を割り当てないことをお勧めします。これにより、必要に応じてパーティションを簡単に拡張または追加できます。
1 つまたは複数のパーティションへの分割は、セキュリティ の問題ではありません 信頼性の .アイデアは、パーティションの 1 つがクラッシュした場合、そのの内容を失うということです パーティションですが、他のパーティションは問題ありません。また、そのパーティションがいっぱいになっても、他のパーティションは影響を受けません。各パーティションは独自のファイルシステムを持つことができ、さまざまなコンテキストでのパフォーマンスに関して、すべてのタイプのファイルシステムが同等であるとは限りません (ただし、ほとんどのファイルシステムは、ほとんどのコンテキストで互いに同等に優れています)。一部の PC では、このアーキテクチャの歴史的な特性により、ブート プロセスがディスクの最初の数ギガバイトよりも遠くにアクセスする際に問題が発生する場合があります。したがって、/boot
多くの場合、制限されたサイズの別のパーティションとして設定し、ディスクの最初に配置することをお勧めします。
パーティション レベルの暗号化を適用する場合、暗号化しすぎると問題が発生する可能性があります。つまり、復号化を行うコードは 外部 に配置する必要があります。 上記のパーティションの。これは、実際の暗号化製品に大きく依存します (ブートローダーに復号化コードを埋め込むことができるものもあります)。
ディスクをパーティションに分割すればするほど、全体の柔軟性が低下することに注意してください。パーティションがいっぱいになると、他のパーティションに空き容量がある場合でも、そのパーティションはいっぱいになり、そのままになります (LVM はこれに対処するのに役立つので、OS インストーラーが LVM を使用するかどうかを尋ねたときに「はい」と答えるとよいでしょう)。 .作成するパーティションが多いほど、この問題の可能性が高くなり、困難になります。
簡単で安全な方法は、OS インストーラーが最適と考える方法でパーティションを選択することです。これが何を伴うかについて正確な知識と経験が得られるまで、パーティションサイズの変更を続けないでください。定期的なバックアップを忘れずに。数か月後、OS を再インストールして「正しく実行」したいと思うことが予想されますが、それは必ずしも悪い考えではありません。これは学習ツールであり、本番環境に移行するサーバーではありません。
私はこれを、これまでの他のレスポンダーとは異なる見方で見ています。多数のエクスプロイトを見ている場合、すべての脅威が考えられ、それを行うシステムを可能な限りサンドボックス化することは、有用な予防策のように思えます。 Xen は、そのための簡単な方法の 1 つです。別のファイル システムのディスク イメージを使用できますが、使用することがわかっている場合は、別のディスク パーティションを残すことをお勧めします (Dom0 で自動マウントされないようにしてください)。
Kali が Xen Dom0 としてどれだけうまく機能するかはわかりません。 Ubuntu には少なくとも問題があるようです。 XenServer または別の特殊な Xen Dom0 ビルドの余地を残しておくことを検討してください。 [編集:最近のネットブックがどのようなものかはわかりませんが、XenServer は実際にはネットブックをターゲットにしていないのではないかと思います... Dom0 として Xen とうまく動作する他のより単純なディストリビューションかもしれません。エクスプロイトを調べることがあまり一般的でない場合は、スタンドアロンまたは DomU として実行される Kali インストールをセットアップできる場合があります。]
BSD システムでは、可能な限り読み取り専用でマウントするためのパーティショニングと不変フラグの使用を含む強化方法について聞いたことがあります。同様のセットアップが可能なLinuxシステムが少なくともいくつかあると思いますが、KaliはDebianベースのようで、Debianでは実際にそれを行うことはできないと思います[編集:書き込み可能なFSをマウントしない限りそれは、時間の経過とともに維持するのが依然として厄介です]。いずれにせよ、これは汎用マシンにはお勧めしません。パーティショニングが使用される可能性のあるすべての方法に、より一般的に関心がある場合にのみ使用してください。あなたの目的のために、簡単に削除して再作成できるシステムに脅威を配置してください。