前文
私は人々がインターネット中からの誤解を繰り返し聞くのを聞き続けます。したがって、私はいくつかの明確化を試みます
最初に; 偶然の発見が何件ありましたか。単に原因と結果のために、意図した目的以外のものに使用されることになりましたか?
Chroot刑務所とは何ですか
Chrootは当初、プロセスまたはユーザーのルートディレクトリを変更するように設計されました(未知のソースからソフトウェアをコンパイルするのに最適です)。これにより、ベースシステムにセキュリティが提供され、簡単なクリーンアップを含む迅速なテストベッドアプライアンスが提供されました。それから数年が経ちましたが、その概念と暗黙の使用法は確かに変わっています。
chrootが使用されている効果とのためのコードベースに直接であり、いくつかのプログラムやライブラリ(すなわちopenSSHd、apache2の+ mod_security2 / mod_chroot、Dovecotは、sendmailの、OpenVPNの、pam_chroot、およびそんなに多く)。これらすべての主流のアプリケーションが欠陥のあるセキュリティソリューションを実装していると仮定するのは正しくありません
chrootは、ファイルシステムの仮想化のソリューションです。chrootから簡単に抜け出すことができるという仮定も真実ではありません... chroot刑務所内でプロセスを実行するガイドラインに従う限り。
chroot刑務所を保護するためのいくつかの手順
つまり、プロセスをROOTとして実行しないでください。これにより、ルートエスカレーションベクトルが開かれる可能性があります(chrootの内部または外部でも同様です)。chrootの外部で別のプロセスと同じユーザーを使用して、chrootの内部でプロセスを実行しないでください。攻撃対象領域を制限し、プライバシーを提供するために、各プロセスとユーザーを自分のChrootに分離します。必要なファイル、ライブラリ、およびデバイスのみをマウントします。最後に、chrootはベースシステムセキュリティの代替ではありません。システム全体を保護します。
もう1つの重要な注意点:多くの人々は、OpenVZが壊れている、または完全なシステム仮想化と比較して同等ではないと考えています。本質的にChrootであり、プロセステーブルが滅菌されているため、彼らはこの仮定を行います。ハードウェアとデバイスにセキュリティ対策が施されています。そのほとんどはchrootで実装できます。
すべての管理者が、専用サーバーまたは完全なシステム仮想化で必要なすべてのカーネルパラメーターを保護するために必要な知識レベルを持っているわけではありません。つまり、OpenVZを展開することは、顧客がアプリケーションを展開する前にカバーして保護するための攻撃対象領域がはるかに少なくなることを意味します。優れたホストはこれらのパラメーターを安全に保護します。そして、これはノードまたはデータセンターの全員だけでなく、インターネット全体にとっても優れています。
前述のとおり、chrootはファイルシステムの仮想化を提供します。setuid実行可能ファイル、安全でないアプリケーション、ライブラリ、所有者のいないシンボリックリンクなどが存在しないことを確認する必要があります。他の方法で、chroot内にある何かを危険にさらします。通常は、特権のエスカレーションによって、またはベースシステムにペイロードを注入することによって、刑務所をエスケープします。
これが発生した場合、通常は不正な更新、ゼロデイ攻撃、または慣用的な人為的エラーの結果です。
完全なシステム仮想化ではなく、chrootがまだ使用されている理由
このシナリオを考慮してください。ホストノードがOpenVZを実行している仮想プライベートサーバーを実行しています。単にカーネルレベルで動作するものを実行することはできません。これは、オペレーティングシステムの仮想化を使用してプロセスを分離できず、追加のセキュリティを提供できないことも意味します。このように、あなたがしなければならない。この目的のためにchrootを使用しています。
さらに、利用可能なリソースに関係なく、chrootはどのシステムでも持続可能です。簡単に言えば、どの仮想化タイプよりもオーバーヘッドが最小です。これは、多くのローエンドボックスで依然として重要であることを意味します。
別のシナリオを検討してください。仮想化環境内でApacheを実行しています。各ユーザーを分離する必要があります。Apacheへのchrootアドオン(mod_chroot、mod_securityなど)を介して仮想化ファイルシステムを提供することは、エンドユーザー間の最大限のプライバシーを確保するための最良のオプションです。これは、Intelの収集を防ぐのにも役立ち、さらに別のセキュリティ層を提供します。
簡単に言えば、セキュリティをレイヤーに実装することが重要です。Chrootは潜在的にそれらの1つです。すべてのシステムやすべてのシステムがカーネルにアクセスできるわけではないため、chroot STILLには目的があります。システム全体の仮想化が本質的に過剰であるさまざまなアプリケーションがあります。
あなたの質問に答えて
私は特にCentOSを使用しませんが、Bindは操作の前にその特権をドロップすることを知っています。ただし、攻撃ベクトルの履歴と潜在的な脆弱性のため、バインドがchrootされていると想定します。
また...誰もが完全なシステム/オペレーティングシステムレベルの仮想化にアクセスできないため、このアプリケーションを自動的にchrootする方が理にかなっています。これは、順番に、そして理論的には、CentOSユーザーベースにセキュリティを提供するのに役立ちます。
オペレーティングシステムプロバイダーは、すべてのユーザーが同じシステムを実行していると仮定して単純に回避することはありません。このように、彼らは一般的にセキュリティの追加層を提供するのに役立ちます...
非常に多くのアプリケーションがこれを使用する理由と、明らかにOSがデフォルトで使用する理由があります。それはセキュリティ機能として使用され、動作するからです。前述のように慎重に準備することは、潜在的な攻撃者が克服しなければならないもう1つのハードルです。ほとんどの場合、chroot刑務所だけに被害を制限します。