パーティションをレイアウトする際に注意すべきことの1つは、障害モードです。通常、その質問は「パーティションxがいっぱいになるとどうなりますか」という形式です。最愛のvoretaq7は、/
診断が困難な問題を完全に引き起こす状況をもたらしました。もっと具体的な状況を見てみましょう。
ログを保存しているパーティションがいっぱいになったらどうなりますか? 監査/レポートデータを失い、攻撃者がアクティビティを隠すために使用することがあります。場合によっては、ログインイベントを記録できない場合、システムは新しいユーザーを認証しません。
RPMベースのシステム/var
がいっぱいになるとどうなりますか? パッケージマネージャーはパッケージをインストールまたは更新せず、構成によってはサイレントに失敗する場合があります。
パーティションをいっぱいにするのは簡単です、特にユーザーがそこに書き込むことができる場合。楽しみのために、このコマンドを実行して、非常に大きなファイルを作成できる速さを確認してください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は、ログストレージがいっぱいになり始めたときに、いくつかの特別な処理を実行できます(通常、より高いセキュリティ環境で)。パーティションに配置することにより、このリソース検出のパフォーマンスが向上します。
より詳細に、かつquoteにするためにmount(8)
、これはまさに上記で使用されたオプションです:
noexecマウントされたファイルシステム上でバイナリの直接実行を許可しません。(最近まで、/ lib / ld * .so / mnt / binaryなどのコマンドを使用してバイナリを実行できました。このトリックはLinux 2.4.25 / 2.6.0以降で失敗します。)
nodev ファイルシステム上の文字を解釈したり、特殊デバイスをブロックしたりしません。
nosuid 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を使用し、ディスク全体を割り当てることをお勧めします。これにより、必要な場合にパーティションを簡単に拡張または追加できます。