私のSELinux設定に問題があるようです。無効 selinux を使用すると問題がなくなりましたsetenforce 0
。私は変更なしに基本戦略を使用しています。
SELinux構成で正確な問題をどのように正確に見つけることができますか?
答え1
SELinuxの問題は通常監査ログに記録されます/var/log/audit/audit.log
。 auditdがシステムにインストールされていない場合は、SELinuxエラーメッセージをカーネルバッファに印刷して使用できますdmesg
。
SELinux AVC(アクセスベクトルキャッシュ)メッセージの形式は次のとおりです。 [源泉]:
type=AVC msg=audit(1220706212.937:70): avc: denied { getattr } for pid=1904 comm="httpd" path="/var/www/html/testfile" dev=sda5 ino=247576 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:samba_share_t:s0 tclass=file
エラーメッセージがない可能性があります。 SELinux ポリシーには以下を含めることができます。監査なし特定のアクセスに対するロギングを抑制するルールです。タンタありがとうルールは次の方法で無効にできますsemanage
。
semanage dontaudit off
(次に切り替えたい場合があります。監査なし問題を解決したら、ルールを再度有効にしてログノイズを減らします。 )
アクセス拒否 AVC メッセージを説明すると、考えられる原因を絞り込むことができます。トラブルシューティングのために、AVCメッセージの有用なフィールドは次のとおりです。コミュニケーション、道、源泉そしてターゲット コンテキスト:コミュニケーションプロセスのコマンドライン名を含みます。道(ファイルの場合)どのファイルにアクセスしているか、源泉そして目標状況セキュリティラベル。
エラーメッセージを解析すると、audit2why
人間が読めるエラーメッセージの説明を提供できます。基本ポリシーの一般的な問題は、上記のメッセージに示されているように、無効なセキュリティコンテキストが原因で発生し、次の2つの手順で調査できます。
ソースとターゲットのコンテキストは正しいですか?
SELinuxルールマッピングは、ソースとターゲットのセキュリティコンテキスト間のアクセスを可能にします。これらのルールがない場合、アクセスは拒否されます。場合によっては、コンテキストが正しくないため、アクセスが拒否されることがあります。
無効なターゲットコンテキスト
たとえば、ファイルが移動された場合、ファイルに無効なセキュリティコンテキストがある可能性があります(元のセキュリティコンテキストは保持されます)。
restorecon
ファイルにデフォルトのセキュリティラベルを適用するために使用されます。ファイルのデフォルトの場所を使用しない場合は、次のコマンドを使用してファイルコンテキストデータベースにファイルラベルルールを追加し、
semanage
後で実行する必要があります。restorecon
詳細については、次の質問を参照してください。デーモンがデフォルトの場所ではなく場所にあるファイルを使用できるようにSELinuxをどのように設定しますか?ターゲットタイプがファイルまたはディレクトリ(ネットワークポートなど)ではない場合、ターゲットコンテキストはを使用できます
semanage
。ソースコンテキストが正しくありません。
ほとんどのシステムデーモンは、などの制限されたドメイン(ソースコンテキスト)で実行されます
httpd_
。smbd_t
デーモンが
init_t
ドメインで実行されている場合は、そのデーモンのターゲットポリシーが存在しないか、ポリシーモジュールが有効になっていないか、ラベルが正しくない実行可能ファイル(エントリポイント)があります。プロセスがunconfined_t
ドメインで実行されている場合は、initシステムではなくユーザーによって開始されます。どちらの場合も、両方のドメインにはほとんど制限がないため、通常エラーはありません。制限されたドメイン内のプロセスのエラーソースコンテキストは、SELinuxポリシーモジュールが欠落しているために実行可能ファイルに無効なファイルラベルがあることを示します。
コンテキストの変更:ポリシーによるアクセスは許可されていません。
アクセスを許可するにはポリシーを変更する必要があります。一般的な構成は、すでにブールオプションで処理されている可能性があります。
audit2allow
そのようなブール値が存在することを確認したり、アクセスを許可するために必要なポリシーモジュールを作成することが可能です。