Gentooの強化されたプロファイルは、他のどのディストリビューション(Debian、RHEL、Archなど)よりも本当に安全かどうか疑問に思いました。 )。知らない人のために、Gentoo hardenedを使用すると、特定の強化GCCオプション(pie、ssp、relroなど)やその他のいくつかの機能(grsec / selinux …)を使用してシステム全体を構築できます。

たとえば、Arch LinuxはこれらのGCC強化フラグを使用してすべてのバイナリを構築するわけではないので、セキュリティに関する何らかの懸念を意味しますか?

OpenVPNはPIEなしで部分的に構築されていることを知っていますrelro。これは、OpenVPNに対してエクスプロイトが見つかった場合、ArchインストールはGentooインストールよりも安全性が低い可能性があることを意味しますか?

TL; DR:Gentoo Hardenedを使用することは、他のどのディストリビューションよりも真の利点ですか?バイナリのセキュリティの条件は?

回答

すべてがソースにあります!Gentoo Hardenedは、セキュリティ主導のディストリビューションであり、強化されたプロファイルです。本当に安全にするために多くのことを詰め込んでいます。

しかし、コンパイルする価値はありますか?Linuxフォーラムの間で大きな質問です。

セキュリティの観点からGentoo強化プロファイルを見てみましょう:

secuを追加しますほとんどの場合、それは価値がないほど小さいのです。誰もが同じバイナリを持ち、攻撃者は特定のコードがロードされる可能性のある場所を推測する必要がないため、バイナリディストリビューションのセキュリティが向上しますが、ソースディストリビューションを実行することで、アドレス空間はすでにかなり一意になります。攻撃者がエクスプロイトのアドレスを推測しようとしたときに、ある程度のセキュリティが提供されます。推測を間違えると、プロセスがクラッシュし、新しいアドレスに再読み込みされます。攻撃者がそれを通過するのに十分な価値のあるデータがありますか。それを取得するのは面倒ですか?そうする場合は、強化されたプロファイルを使用する必要がありますが、物理的なセキュリティとディスクの暗号化がより重要です。それが「それだけの価値がある」場合は、単にあなたを奪うのが簡単になるからです。

強化されたデスクトッププロファイルがないことに注意してください。デスクトップで使用する場合は、それだけでは多少難しくなります。

もう1つの理由は、アクセス制御に関して非常にきめ細かい制御を提供するSELinux(強化されたプロファイルを必要としない)のようなものを使用したい場合ですが、それも非常に制限的です。多くのユーザーがいて、機密データへのアクセスレベルが異なる大規模なネットワークでのみ価値があると思います。

SELinuxの機能のいくつかが必要でしたが、SELinuxのため、通常とは異なる方法でAppArmorを使用することにしました。 AppArmorが実際に行うのは、プロセスの分離またはサンドボックス化を提供することだけです。攻撃者がエクスプロイントを介してアクセスを取得した場合、攻撃者は悪用されたサービスがアクセスできるファイルにのみアクセスできます。私はそれをキャッチオールプロファイルで使用します。ワールドのすべての書き込み可能ディレクトリとホームディレクトリからの実行、およびssh / pgpキー、キーリングなどへのアクセスを防止します。これはサーバーとデスクトップに適していて、制限が厳しすぎません。開発のためにホームディレクトリからコードを実行する必要がある場合は、次のことができます。 sudoを介して無制限のシェルを起動します。ウォレットを開いたままラップトップのロックを解除したままにすることができます(kwallet pamモジュールを使用します)。sshキーやパスワードなどを取得するのは非常に困難です(kwalletのパッチもあるのでパスが必要です保存されたパスワードを表示するためのord)が、それらを必要とするプログラムはそれらにアクセスできます。

しかし、何がそれを硬化させるのでしょうか?これらの項目のいくつかも見てみましょう。

  • PaXは、スタックとヒープのオーバーフローからユーザーを保護するカーネルパッチです。 PaXは、メモリ内のランダムなメモリ位置を使用するASLR(アドレス空間配置のランダム化)を使用してこれを行います。各シェルコードは、コードを実行するために、アドレスを使用して埋め込みにジャンプする必要があります。メモリ内のバッファのアドレスはランダム化されているため、これを実現するのははるかに困難です。 PaXは、プログラムが使用するデータを実行不可能なメモリ領域に保持することにより、保護の層を追加します。つまり、攻撃者は、メモリに書き込むことができたコードを実行できなくなります。 PaXを使用するには、hardened-sourcesなどのPaX対応カーネルを使用する必要があります。
  • PIE / PIC(位置に依存しないコード):通常、実行可能ファイルのベースアドレスは固定されています。ロードされます。これは、実行可能ファイル内の関数のアドレスを計算するためにRVAに追加されるアドレスでもあります。実行可能ファイルがPIEサポート付きでコンパイルされている場合は、メモリ内のどこにでもロードできますが、PIEサポートなしでコンパイルされている場合は、固定アドレスにロードする必要があります。 PaXを使用してASLRを利用する場合は、PIEを有効にする必要があります。
  • RELRO(再配置読み取り専用):実行可能ファイルを実行するとき、ロードされたプログラムは、アプリケーションの開始後に書き込み可能としてマークする必要はありません。このようなセクションは、.ctors、.dtors、.jcr、.dynamic、および.gotです[4]。これらのセクションを読み取り専用としてマークすると、攻撃者は、GOTテーブルのエントリの上書きなど、コードを実行しようとするときに使用される可能性のある特定の攻撃を使用できなくなります。
  • SSP(スタックスマッシングプロテクター)はユーザーモードで使用されます。カナリアをスタックに配置することにより、スタックオーバーフローから保護します。攻撃者がスタック上のリターンEIPアドレスをオーバーフローさせたい場合は、ランダムに選択されたカナリアもオーバーフローさせる必要があります。その場合、システムはカナリアが上書きされたことを検出できます。その場合、アプリケーションは終了するため、攻撃者はメモリ内の任意の場所にジャンプしてそこからコードを実行できません。
  • RBAC (役割ベースのアクセス制御):RBACはRSBACと同じではないことに注意してください。これについては後で説明します。 RBACは、SELinux、Grsecurityなどで使用できるアクセス制御です。デフォルトでは、ファイルの作成者がファイルを完全に制御しますが、RBACは、作成者に関係なく、rootユーザーにファイルの制御を強制します。それ。したがって、システム上のすべてのユーザーは、システムの管理者によって設定されたRBACルールに従う必要があります。

さらに、プロセス間のアクセスを制御するために使用される次のアクセス制御システムを使用することもできます。オブジェクト。通常、アクセス制御システムは一度に1つしか使用できないため、以下に概説するシステムの1つを選択する必要があります。アクセス制御システムには、次のものが含まれます。

  • SELinux(セキュリティが強化されたLinux)
  • AppArmor(アプリケーションアーマー)
  • Grsecurity。さまざまなパッチが含まれています。カーネルに適用して、システム全体のセキュリティを強化できます。カーネルでGrsecurityを有効にする場合は、強化されたソースであるGrsecurity対応カーネルを使用する必要があります。
  • RSBAC(ルールセットベースのアクセス制御):rsbac-sourcesカーネルを使用する必要があります。 rsbacをサポートするカーネルを構築するには。

前述のように、すべてが大きな問題になりますか?コンパイルする価値はありますか?本当にあなたがどのようにまたは何を確保しているかに帰着し、その努力は価値がありますか?それとも、詮索好きな目で見たくないものを本当に確保することができますか?

コメント

  • わかりました、すべての説明に感謝しますこれらのセキュリティ施行テクノロジー。したがって、私があなたの主張を理解していれば、これらの項目はシステムのセキュリティを向上させるのに非常に役立ちます。しかし、"コンパイルする価値はありますか?"と尋ねます。では、なぜいくつかの主要なディストリビューションでデフォルトで有効になっていないのですか?デスクトップ上のPaXがいくつかのバイナリ(JavaまたはFirefoxのことを聞いた)を壊す可能性があることを読みました;それが唯一の理由ですか?
  • PaXとgrsecurityが多くのディストリビューションでデフォルトにならない理由は、政治とエゴによるものです。どちらの開発者も、Linuxカーネル開発チームと強く衝突する個性を持っています。それに加えて、彼らはパッチをアップストリームに受け入れられるチャンクに分割するのに時間をかけたくないので、代わりに時間を使ってより多くのセキュリティ機能を開発します。
  • grsecurityはアクセス制御システムではありません。 Spender(grsecurityの作成者)は、人々がそれをアクセス制御システムと呼び、それをSELinuxと比較すると、非常にイライラします。 :P Grsecurityは、バグクラスを排除することでカーネルのセキュリティを強化するカーネルパッチの組み合わせです。それが持っているRBACアクセス制御システムは他のものと比較して重要ではありません。 Grsecurity 'のセキュリティ機能は非常に広範囲にわたるため、1つの投稿に配置するよりもはるかに多くのスペースを占有します。 grsecurity.netをチェックして、かなり包括的なリストを確認してください。
  • セキュリティはある程度追加されますが、'は非常に少ないため、'ほとんどの場合それだけの価値はありません –ええと、これは完全に間違っています。そして、セキュリティは実際にはアドレスを隠すこととはまったく関係がありません。私は'この回答が賛成されていることに驚いています

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です