8.3.6. Raw 監査メッセージ
Raw 監査メッセージは
/var/log/audit/audit.log
に記録されます。以下の例は、Apache HTTP Server (httpd_t
ドメインで稼働中) が /var/www/html/file1
ファイル (samba_share_t
タイプでラベル付け) にアクセスしようとした際に発生したAVC 拒否 (および関連のシステムコール) です。
type=AVC msg=audit(1226874073.147:96): avc: denied { getattr } for pid=2465 comm="httpd" path="/var/www/html/file1" dev=dm-0 ino=284133 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:samba_share_t:s0 tclass=file type=SYSCALL msg=audit(1226874073.147:96): arch=40000003 syscall=196 success=no exit=-13 a0=b98df198 a1=bfec85dc a2=54dff4 a3=2008171 items=0 ppid=2463 pid=2465 auid=502 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=6 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
- { getattr }
- 括弧内のこのアイテムは、拒否されたパーミッションを示します。
getattr
は、ソースプロセスがターゲットファイルのステータス情報の読み取りを試みたことを示します。これは、ファイルの読み取り前に起こります。このアクションが拒否されたのは、アクセスされたファイルに間違ったラベル付けがされていたためです。よく見られるパーミッションは、getattr
、read
、write
などです。 - comm="httpd"
- プロセスを開始した実行可能ファイルです。このファイルの完全パスは、システムコール (
SYSCALL
) メッセージのexe=
セクションにあります。このケースでは、exe="/usr/sbin/httpd"
になります。 - path="/var/www/html/file1"
- プロセスがアクセスを試みたオブジェクト (ターゲット) へのパスです。
- scontext="unconfined_u:system_r:httpd_t:s0"
- 拒否されたアクションを試みたプロセスの SELinux コンテキストです。このケースでは、Apache HTTP Server のSELinux コンテキストで、これは
httpd_t
ドメインで実行中です。 - tcontext="unconfined_u:object_r:samba_share_t:s0"
- プロセスがアクセスを試みたオブジェクト (ターゲット) のSELinux コンテキストです。このケースでは、
file1
のコンテキストです。注記:samba_share_t
タイプは、httpd_t
ドメインで実行中のプロセスにはアクセスできません。状況によっては、tcontext
がscontext
と一致する場合もあります。例えば、プロセスがユーザー ID など、その実行中のプロセスの特徴を変更することになるシステムサービスの実行を試みる場合などです。また、プロセスが通常の制限で許されているリソース (メモリーなど) 以上のものを使おうをして、そのプロセスが制限超過を許されているかどうかのセキュリティーチェックにつながる場合、tcontext
がscontext
と一致する可能性があります。
システムコール (
SYSCALL
) メッセージでは、2 つの点に注目します。
success=no
は、拒否 (AVC) が強制されたかどうかを示します。success=no
は、システムコールが成功しなかったことを示します (SELinux がアクセスを拒否)。success=yes
は、システムコールが成功したことを示します。これは、initrc_t
やkernel_t
などの permissive ドメインや制限のないドメインで見られます。exe="/usr/sbin/httpd"
は、プロセスを開始した実行可能ファイルへの完全パスです。このケースでは、exe="/usr/sbin/httpd"
です。
SELinux がアクセスを拒否する場合のよくある原因は、ファイルタイプが間違っていることです。トラブルシューティングを開始するには、ソースコンテキスト (
scontext
) とターゲットコンテキスト (tcontext
) を比べます。プロセス (scontext
) がそのようなオブジェクト (tcontext
) にアクセスしてもよいかどうかを確認します。例えば、Apache HTTP Server (httpd_t
) は特定の設定がない限り、httpd_sys_content_t
や public_content_t
など、httpd_selinux(8) man ページで指定されたタイプ以外にはアクセスすべきではありません。