背景

背景

デーモンプロセスがあります(Apache/Samba/vsftpd/…)このSELinuxがアクティブなシステムで実行されており、デフォルトの場所ではなく場所にあるファイルを使用できるようにする必要があります。標準ファイル権限はアクセスを許可するように構成されています。

デーモンが許可モードで実行されている場合、すべてがうまく機能します。再実行すると、もう機能しません。SELinux AVC拒否メッセージ

強制モードアクセスを許可するようにシステムをどのように設定しますか?

ベストアンサー1

背景

SELinuxはLinuxシステムに別の権限チェック層を追加します。 SELinux サポートシステムでは、一般 DAC 権限を最初に確認し、アクセスが許可されている場合は SELinuxポリシー相談を受けてください。 SELinux ポリシーがアクセスを拒否した場合、監査/var/log/audit/audit.logログにログエントリが生成され、auditdシステムで実行されていない場合、dmesg にログエントリが生成されます。

SELinux は次のラベルを割り当てます。セキュリティコンテキスト、システム内のすべてのオブジェクト(ファイル、プロセスなど)に:

  • 文書拡張属性にセキュリティコンテキストを保存します。これはを通して見ることができますls -Z

    SELinux は、パスパターンをデフォルトのファイルコンテキストにマップするデータベースを維持します。このデータベースは、デフォルトのファイルコンテキストを手動で復元したり、システムラベルを再指定する必要がある場合に使用されます。データベースは次のように照会できます。semanageツール。

  • プロセス実行可能ファイルが実行されると(システムコール)、execveセキュリティコンテキストが割り当てられます。プロセスセキュリティコンテキストはps Z $PID

  • 他のタグ付きオブジェクトも存在しますが、この回答とは関係ありません。

SELinuxポリシー含むルールコンテキスト間で許可されるアクションを指定します。 SELinuxは以下で実行されます。ホワイトリストルールによっては、ポリシーで明示的に許可されていないコンテンツはすべて拒否されます。これ参考方針通常、SELinuxをサポートするディストリビューションで使用されるポリシーである多くのアプリケーションのポリシーモジュールが含まれています。この回答は主に参照ベースの戦略を使用する方法を説明し、ディストリビューションが提供する戦略を使用する場合に最もよく使用される可能性が高くなります。

一般ユーザーとしてアプリケーションを実行すると、デフォルトの構成でユーザー無制限コンテキスト。プロセスは以下で実行されます。無制限コンテキストに制限はほとんどありません。制限されていないコンテキストのユーザーシェルでプログラムを問題なく実行できますが、initシステムを使用して起動すると、制限されたコンテキストで機能しなくなる可能性があります。

一般的な質問

ファイルがデフォルトの場所ではなく(デフォルトのポリシーで説明されていない)場所にある場合、問題は通常次の理由に関連しています。

  • ファイルに無効または互換性のないファイルコンテキストがあります。:移動されたファイルは、mv以前の場所のファイルセキュリティコンテキストを含むメタデータを保持します。新しい場所に作成されたファイルは、親ディレクトリまたは作成プロセスのコンテキストを継承します。

  • 複数のデーモンが同じファイルを使用できるようにする: 基本ポリシーには、関連するセキュリティコンテキスト間の対話を許可するルールは含まれていません。

セキュリティコンテキストが無効なファイル

これらのファイルが他のデーモン(または他の制限されたプロセス)で使用されておらず、唯一の変更がファイルが保存されている場所である場合、SELinuxの構成に必要な変更は次のとおりです。

  • ファイルコンテキストデータベースに新しいルールを追加する
  • 既存のファイルに正しいファイルコンテキストを適用する

デフォルトの場所のファイルコンテキストを新しい場所のテンプレートとして使用できます。ほとんどの戦略モジュールには、マニュアルページのドキュメントが含まれています(次を使用して作成されます)。sepolicy manpages)可能な代替ファイルのコンテキストと対応するアクセスセマンティクスを記述します。

ファイルコンテキストデータベースは正規表現構文を使用するため、重複する仕様を作成できます。アプリケーションコンテキストが見つかった最後の仕様であることは注目に値します。[源泉]

ファイル コンテキスト データベースに新しいエントリを追加するには、次の手順を実行します。

semanage fcontext -a -t <type> "/path/here/(/.*)?"

データベースに新しいコンテキストエントリを追加したら、次のコマンドを使用してデータベースのコンテキストをファイルに適用できます。restorecon <files>restoreconフラグを使用して実行すると、-vn変更は適用されず、変更されるファイルコンテキストが表示されます。

データベースに新しいエントリを追加せずに新しいファイルコンテキストをテストする

コンテキストを手動で変更できます。chconツール。これは、ファイルコンテキストデータベースにエントリを追加せずに新しいファイルコンテキストをテストしたい場合に便利です。

新しいファイルコンテキストはのパラメータで指定されますchcon。オプションとともに使用すると、--reference=参照ファイルのセキュリティコンテキストがターゲットファイルにコピーされます。

特定のコンテキストを使用する(default_t):

chcon -t default_t <target files>

または参照を使用してください。

chcon --reference=<path to default location> <target files>

各種ファイルシステムとマウントポイントに関する注意事項

新しい場所が独自のマウントポイントの場合は、次のものを使用できます。インストールオプション。マウントオプションを使用して設定されたコンテキストはディスクに保存されないため、拡張属性をサポートしていないファイルシステムでも使用できます。

mount <device> <mount point> -o context="<context>"

異なるセキュリティコンテキストで実行されるプロセスが同じファイルを使用できるようにする

オプション1:ブール

参照戦略には、次の調整可能なオプションが含まれます。ブール値、いくつかの追加ルールを有効/無効にします。これらの多くは、通常、同じファイルを使用しないさまざまなシステムデーモンの相互運用性を可能にします。

可能なすべての調整可能なオプションのリストとその説明が提供されていますsemanage boolean -laudit2allowどのブール値を有効にする必要があるかを直接決定することも可能です。

ブール値を有効/無効にするには、次のようにします。semanage:

semanage boolean --on <boolean name>
semanage boolean --off <boolean name>

ブール値は戦略を修正する最も簡単な方法です。ただし、ブール値を切り替えて可能な状況をすべて解決できるわけではありません。一部のブール値は広すぎるため、非常に広範なアクセスを許可します。

オプション2:新しいモジュロ戦略の拡張

アクセスを許可するブール値がない場合は、カスタムモジュールを追加してポリシーを変更する必要があります。

audit2allowアクセスを許可するために必要なルールを追加する簡単なモジュールは、次の手順を使用してログファイルから生成できます。

  1. デーモンプロセスの設定フィールド(セキュリティコンテキスト)許可モード。緩和モードではポリシーは適用されません。無理にさせるただし、ポリシーが通常拒否するアクセスのログを生成します。

    semanage permissive -a <domain>
    
  2. ログエントリを生成するには、通常のタスクでデーモンをテストします。

  3. 新しい戦略モジュールを作成して挿入します。

    audit2allow -a -M <name>
    semodule -i <name>.pp'
    
  4. 強制モードを再び有効にします。

    semanage permissive -d <domain>
    

この方法は、少数のセキュリティコンテキストのみが関連している場合に最も効果的です。複雑な構成では、独自のポリシーモジュールを作成する必要がある可能性が高くなります。起動に必要なリソースのいくつかは次のとおりです。Gentoo Wikiそして参照ポリシーAPI文書。

おすすめ記事