11.3.5. 拒否の検索と表示
本セクションでは、setroubleshoot、setroubleshoot-server、dbus、および audit パッケージがインストールされ、
auditd
。rsyslogd
、および setroubleshootd
デーモンが実行していることを前提としています。これらのデーモンの起動方法は、「どのログファイルが使用されるか」 を参照してください。ausearch
、aureport
、および sealert
などの SELinux AVC メッセージの検索および表示には、多数のユーティリティーを使用できます。
ausearch
audit パッケージは、さまざまな検索基準に基づいてイベントの
audit
デーモンログを照会できる ausearch ユーティリティーを提供します。[10] ausearch
ユーティリティーは、/var/log/audit/audit.log
にアクセスするため、root ユーザーとして実行する必要があります。
検索対象: すべての拒否
コマンド: ausearch -m avc,user_avc,selinux_err,user_selinux_err
検索対象: 今日の拒否
コマンド: ausearch -m avc -ts today
検索対象: 直近の 10 分間の拒否
コマンド: ausearch -m avc -ts recent
特定サービスの SELinux AVC メッセージを検索するには、
-c comm-name
オプションを使用します。comm-name は実行ファイルの名前 (Apache HTTP サーバーの場合は httpd
、Samba の場合は smbd
など) です。
~]#
ausearch -m avc -c httpd
~]#
ausearch -m avc -c smbd
ausearch コマンドを使用するたびに、読みやすくするために
--interpret
(-i
) オプションを使用するか、スクリプト処理で --raw
(-r
) オプションを使用することが推奨されます。ausearch オプションの詳細は、ausearch(8) の man ページを参照してください。
aureport
audit パッケージは、
aureport
ユーティリティーを提供します。これにより、監査システムログのサマリーレポートを生成します。[11] aureport
ユーティリティーは、/var/log/audit/audit.log
にアクセスするため、root ユーザーとして実行する必要があります。SELinux の拒否メッセージと、その発生頻度を一覧表示するには、aureport -a を実行します。以下は、2 つの拒否を含む出力例になります。
~]#
aureport -a
AVC Report
========================================================
# date time comm subj syscall class permission obj event
========================================================
1. 05/01/2009 21:41:39 httpd unconfined_u:system_r:httpd_t:s0 195 file getattr system_u:object_r:samba_share_t:s0 denied 2
2. 05/03/2009 22:00:25 vsftpd unconfined_u:system_r:ftpd_t:s0 5 file read unconfined_u:object_r:cifs_t:s0 denied 4
sealert
setroubleshoot-server パッケージは、
sealert
ユーティリティーを提供します。これは、setroubleshoot-server により変換された拒否メッセージを読み取ります。[12] 拒否は、/var/log/messages
にあるように ID が割り当てられています。以下は、messages
からの拒否例になります。
setroubleshoot: SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket. For complete SELinux messages. run sealert -l 8c123656-5dda-4e5d-8791-9e3bd03786b7
この例では、拒否 ID は
8c123656-5dda-4e5d-8791-9e3bd03786b7
です。-l
オプションは、識別子を引き数として取ります。sealert -l 8c123656-5dda-4e5d-8791-9e3bd03786b7 コマンドを実行すると、SELinux がアクセスを拒否した理由を詳細に分析し、アクセスを許可する解決策を示すことができます。
X Window System を実行中で、setroubleshoot パッケージおよび setroubleshoot-server パッケージがインストールされており、
setroubleshootd
デーモン、dbus
デーモン、および auditd
デーモンが実行されている場合は、SELinux がアクセスを拒否したときに警告が表示されます。
Show
をクリックすると、sealert
画面が表示されます。これにより、トラブルシューティングが可能になります。
または、sealert -b コマンドを実行して、sealert GUI を起動します。すべての拒否メッセージの詳細な解析を表示するには、sealert -l \* コマンドを実行します。