8.3.5. 拒否の検索および表示

このセクションでは、setroubleshootsetroubleshoot-serverdbusaudit のパッケージがインストールされ、auditdrsyslogdsetroubleshootd のデーモンが実行中であることを前提としています。これらのデーモンのスタート方法に関しては、「使用するログファイル」 を参照してください。SELinux 拒否の検索および表示には、ausearchaureportsealert などの数多くのツールが利用できます。
ausearch

audit パッケージは ausearch を提供します。ausearch(8) man ページでは、「ausearch は、異なる検索基準に基づいたイベントで監査デーモンログにクエリを行えるツールです」となっています[14]ausearch ツールは /var/log/audit/audit.log にアクセスするので、Linux root ユーザーで実行する必要があります。

検索対象コマンド
すべての拒否ausearch -m avc
当日の拒否ausearch -m avc -ts today
過去 10 分間の拒否ausearch -m avc -ts recent
特定のサービスでの SELinux 拒否を検索するには、-c comm-name オプションを使います。ここでの comm-name は「実行可能な名前です」 [15]。例えば、Apache HTTP Server の場合は httpd、Samba の場合は smbd になります。
~]# ausearch -m avc -c httpd
~]# ausearch -m avc -c smbd
ausearch オプションの詳細については、ausearch(8) man ページを参照してください。
aureport

audit パッケージは aureport を提供します。aureport(8) man ページでは、「aureport は、監査システムログのサマリーレポートを作成するツールです」となっています[16]aureport ツールは /var/log/audit/audit.log にアクセスするので、Linux 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
aureport オプションの詳細については、aureport(8) man ページを参照してください。
sealert

setroubleshoot-server パッケージは sealert を提供します。これは、setroubleshoot-server が変換した拒否メッセージを読み取ります。/var/log/messages にあるように、拒否には ID が割り当てられます。以下の例は、messages からの拒否です。

setroubleshoot: SELinux is preventing httpd (httpd_t) "getattr" to /var/www/html/file1 (samba_share_t). For complete SELinux messages. run sealert -l 84e0b04d-d0ad-4347-8317-22e74f6cd020
この例の拒否 ID は、84e0b04d-d0ad-4347-8317-22e74f6cd020 です。-l オプションは、ID を引数 として受け取ります。sealert -l 84e0b04d-d0ad-4347-8317-22e74f6cd020 コマンドを実行すると、SELinux がアクセスを拒否した詳細な分析とアクセスを許可するソリューションが提示されます。
X Window System を実行中で setroubleshootsetroubleshoot-server パッケージがインストールされ、setroubleshootddbusauditd デーモンが稼働している場合、SELinux によってアクセスが拒否されると警告が表示されます。「表示する」をクリックすると、sealert GUI が開始され、HTML 出力で拒否を表示します。
  • sealert -b コマンドを実行し、sealert GUI を開始します。
  • sealert -l \* コマンドを実行し、すべての拒否の詳細な分析を表示します。
  • Linux root ユーザーで sealert -a /var/log/audit/audit.log -H > audit.html コマンドを実行し、sealert GUI で見られたように sealert 分析の HTML バージョンを作成します。
sealert オプションの詳細については、sealert(8) man ページを参照してください。


[14] Red Hat Enterprise Linux 6 の audit パッケージとして出荷されたausearch(8) man ページより
[15] Red Hat Enterprise Linux 6 の audit パッケージとして出荷されたausearch(8) man ページより
[16] Red Hat Enterprise Linux 6 の audit パッケージとして出荷されたaureport(8) man ページより