web-dev-qa-db-ja.com

AppArmorルールを繰り返し追加するのは悪いですか?

私の知る限り、AppArmorは、他の方法では特権を持たないプログラムに特権を付与することはできません(つまりさらに制限することしかできません)。それを考えると、最初はすべてのプログラムに「すべてを許可」し、繰り返しルールを追加して既存のルールを微調整しても大丈夫でしょうか?

人々は、ルールセットが最初から正しくなければならないかのように、Web上ではそれに同意していないようですが、なぜそうなのかわかりません。あるレベルの保護は、何もないよりも優れているのではないでしょうか。

明確にするために:

  • AppArmorによってサポートされている反復アプローチです技術的に。 (おそらく、デフォルトで「すべて許可」またはホワイトリストに登録し、具体的にブラックリストに登録するようなことはありませんか?)
  • そのようなアプローチのセキュリティリスクはありますか?
1
Bora M. Alper

確かにそれは技術的に可能です...しかし、それは最も効率的な作業方法ではありません。

最初にすべてを許可する場合は、許可しないほうがよいことを推測し続ける必要があります。あなたは効果的に盲目的に働くでしょう。

最初にすべてを禁止すると、プログラムのエラーメッセージが表示され、プログラムが実行しようとしていることと失敗したことに関する情報が表示されます(おそらく、AppArmorのルールが厳しすぎるためです)。また、システム監査ログに、AppArmorがプログラムの実行を妨げた正確な内容を示すメッセージが表示されます。これは、プログラムが必要とするものだけを正確に許可するのに非常に役立ちます。

AppArmorプロファイルはcomplain modeでも設定できることに注意してください:そのモードでは、AppArmorは実際にはプログラムの実行を停止しませんが、監査ログメッセージを生成します。 したがって、AppArmorプロファイルを開発している特定のアプリケーションへの影響を最小限に抑える必要がある場合は、文句モードで「何も許可しない」プロファイルから始めることができます。結果の監査ログを確認し、正当に見えて現在監査メッセージを生成しているものを許可するルールを追加し、そのアプリケーションに関する監査メッセージが、そもそもアプリケーションに実行させたくないことに関するものになるまで、この方法を繰り返します。

その時点で、AppArmorプロファイルが完全に正しいか、それに非常に近いことを合理的に確信でき、AppArmorの制限が実際に適用される強制モードに切り替えることができます。その時点で、何かを見逃した場合に備えて、いくつかのテストを行うのが賢明です...しかし、この手順の後、結果のプロファイルが、あなたが考えていなかった危険なものを誤って許可しないことを確信できます。 。

1
telcoM