web-dev-qa-db-ja.com

NIST 800-53 rev 4-LinuxでのCM-7(2)実装

NIST 800-53 rev 4 CM-7(2)は次のように述べています:

(2)最小限の機能|プログラムの実行の防止情報システムは、自動化されたメカニズムを使用して、[選択(1つ以上)]に従ってプログラムの実行を防止します。不正なソフトウェアプログラム;ソフトウェアプログラムの使用条件を承認するルール]。

特定のプログラムの実行を防ぐために、Linuxにはどのような自動化メカニズムが存在しますか? Linux DAC権限を高レベルで使用してすべてのプログラムの実行を制限できることを理解していますが、これはホワイトリスト/ブラックリストの実装ではありません。また、SELinuxの厳密なポリシー実装を使用して、承認されるすべてのアプリケーションに対してポリシーを定義することを要求することにより、ホワイトリストを満たすことができることも知っています。 SELinuxの厳格なポリシーよりも負担の少ないオプションはありますか(厳格なポリシー構成で実装するためのかなりの労力です)?

1
positive return

Linuxでの実行を防ぐ方法はいくつかあります。ただし、これらはバイナリ実行可能ファイル(ELFなど)にのみ適用されることを覚えておくことが重要です。スクリプトまたはその他の解釈されたファイルは、同じ方法でブロックできません。たとえば、bashスクリプトは実際には実行されず、単に解析する/bin/bashによって読み取られるだけです。同じことがpythonのようなものにも当てはまります。ここで、/usr/bin/pythonはpythonファイルを読み取り、解釈します。スクリプトの実行をブロックすると、./file.shを実行できなくなりますが、 bash実行可能ファイル自体がブロックされていない限り、/bin/bash file.shを実行できるため、インタプリタとして機能するプログラムはすべて、これらの保護をバイパスできます。

実行をブロックするいくつかの方法:

  • noexecマウントフラグを設定すると、パーティション全体で実行できなくなります。

  • DACは、ファイルの実行可能フラグを削除することにより、ブラックリストベースで使用できます。

  • AppArmorおよび他の多くのMACを使用して、実行する個々のファイルをホワイトリストに登録できます。

AppArmorはデフォルトで、ポリシーを作成するプログラムにのみ適用されることに注意してください。グローバルプロファイルを使用する方法があるため、各プログラムのホワイトリストが必要ですが、公式にはサポートされていません。

必要なのはMACで、SELinuxよりも1つだけ単純です。

1
guest