SELinuxで許可されているすべてのものをログ/監査する

SELinuxで許可されているすべてのものをログ/監査する

私は、いくつかの独自ソフトウェアをプロファイリングして、Oracle Linux (または任意の RHEL 派生製品) にインストールして実行できるようにするための一連の権限要件と SELinux ポリシーを構築しています。

私は SELinux を permissive モードで実行しており、semodule -DB を実行して「dontaudit」を無効にし、/var/log/audit/audit.log を表示して結果を確認しています。

ただし、許可されたものすべて(拒否や監査許可だけでなく)も確認したいと思います。これは、次のように判断すると大多数であると思われます。

[root@aw-selinuxtest ~]# seinfo --stats

Statistics for policy file: /etc/selinux/targeted/policy/policy.24
Policy Version & Type: v.24 (binary, mls)

   Classes:            81    Permissions:       237
   Sensitivities:       1    Categories:       1024
   Types:            3852    Attributes:        291
   Users:               9    Roles:              12
   Booleans:          228    Cond. Expr.:       268
   Allow:          311381    Neverallow:          0
   Auditallow:        133    Dontaudit:           0
   Type_trans:      38576    Type_change:        38
   Type_member:        48    Role allow:         19
   Role_trans:        368    Range_trans:      5601
   Constraints:        90    Validatetrans:       0
   Initial SIDs:       27    Fs_use:             24
   Genfscon:           84    Portcon:           471
   Netifcon:            0    Nodecon:             0
   Permissives:        91    Polcap:              2

誰かこれをどうやって行うのか知っていますか? 今のところ答えを見つけるのに苦労しています。

答え1

通常の慣例とは異なり、permissiveポリシー モジュールを開発するために SELinux を モードに設定し、すべての AVC 拒否を記録すると、そのポリシーに間違った権限セットが含まれる可能性があります。

この例としては、次のようなことが考えられます。このプロプライエタリソフトウェアの通常の動作には、ドメイン遷移許可モードでは、移行は行われず、ソースドメインはAVC拒否として記録されたすべての権限を必要とするように見えます(Sven Vermeulen の SELinux クックブックこの潜在的な問題に関する言及がいくつかあります。

プロプライエタリソフトウェア用のポリシーモジュールを作成するためのより良い方法は、まずSELinuxを強制モードで維持し、最小権限可能性が認められています。

次に、オンライン (ドキュメントはありますか?) とオフライン ( ss、、、 ...) の両方でソフトウェアを調査して、アーキテクチャ設計straceipcs詳細を決定します。具体的には、次の事項ですが、これらに限定されません。

  • ファイルもサブグループ(構成、トランザクション、ログなど)に分割する必要があります。

  • プロセス、サービス (ソフトウェアには systemd/upstart/init スクリプトがありますか?)

  • ネットワーク接続 (受信および送信トラフィック、ポートなど)

  • ユーザー、グループ

これらすべての情報が手元にあれば、そのソフトウェアのポリシーの開発を開始できます。

以下のことが必要となります:

  • 関連するすべてのファイルのセキュリティコンテキストを定義するファイルコンテキストファイルを作成します。

  • ファイル、プロセス、ポート、ユーザー、ドメイン遷移などの間のすべての相互作用に関してドメインを定義するインターフェース ファイルを作成します。

  • 上記のドメインへのアクセスが許可されるユーザーと実際のルールを記述したタイプ強制ファイルを作成する

コンパイルしてロードし、AVC 拒否をチェックして、デバッグし、ポリシーを強化します。これを繰り返します。

最後に、上記の本から引用します。

ポリシー開発者の中には、アプリケーションを permissive モード (システム全体を permissive モードで実行するか、この特定のドメインを permissive ドメインとしてマークする) で実行し、実行されたすべてのアクセスを (AVC 拒否を通じて) 登録し、その情報に基づいてポリシーを強化することを好んでいる人もいます。これにより、ポリシーの動作が速くなる可能性がありますが、これらの開発者は、ポリシーに権限を追加しすぎるリスクも負うことになります。これは、後で異議​​を申し立てたり変更したりするのが極めて困難です。代わりに、SELinux にアクセスを防止させ、アプリケーションの反応を確認します。アプリケーションのエラー ログ、またはログで確認したアプリケーションの動作と AVC 拒否に基づいて、実際に必要な権限を正確に把握できます。

関連情報