SELinux SYSCALLメッセージを解析するには?

SELinux SYSCALLメッセージを解析するには?

したがって、次の3つの監査ログエントリがあります。

type=AVC msg=audit(1488396169.095:2624951): avc:  denied  { setrlimit } for  pid=16804 comm="bash" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:system_r:httpd_t:s0 tclass=process
type=SYSCALL msg=audit(1488396169.095:2624951): arch=c000003e syscall=160 success=no exit=-13 a0=1 a1=7ffe06c17350 a2=2 a3=7fea949f3eb0 items=0 ppid=15216 pid=16804 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="bash" exe="/usr/bin/bash" subj=system_u:system_r:httpd_t:s0 key=(null)
type=EOE msg=audit(1488396169.095:2624951):

bashAVCラインでは、コンテキストを持つプロセスがリソース制限のsystem_u:system_r:httpd_t:s0設定権限が拒否されたことをすぐに確認できます。

SYSCALL行でsyscall = 160をGoogleですばやく検索すると、これが呼び出しであることsetrlimit()がわかります。これは非常に興味深いものです。どのリソースを変更するように要求したのかわかりません。どのリソースを変更しようとしていますか?

ベストアンサー1

したがって、この場合、問題のシステムコールがであることはすでにわかっていますsetrlimit。検索すると、setrlimitそのシステムコールをラップする同じ名前のCライブラリ関数があることがわかります。

これ機能文書化最初のパラメータ(監査ログのSYSCALL行にある「a0」)は問題のリソースを表すようにマークされていますが、マニュアルでは数値ではなくシンボル名のみを示します。ただし、これらのシンボルがsys/resource.hヘッダーファイルに定義されていることを知らせます。ただし、ファイルには実際の値は含まれていません。

数値を取得するには、以下を見てください。sysdeps/unix/sysv/linux/bits/resource.h。そこで定義されているさまざまなRLIMIT_マクロを見つけることができます。

これを見ると、変更したいリソースが見つかります。このときa0 = 1で、1に対応するマクロはRLIMIT_FSIZEです。

おすすめ記事