イベントauditd
を記録するように構成する必要がありexecve
ます。RHEL5での例:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve
WARNING - 32/64 bit syscall mismatch, you should specify an arch
[root@ditirlns01 ~]#
アーチの警告は無視します。問題はないようですが、必要に応じて使用-F arch=b64
または-F arch=b32
設定できます。
上記の結果は次のとおりです。
[root@ditirlns01 ~]# ls /tmp/whatever
ls: /tmp/whatever: No such file or directory
[root@ditirlns01 ~]# grep whatever /var/log/audit/audit.log
type=EXECVE msg=audit(1386797915.232:5527206): argc=3 a0="ls" a1="--color=tty" a2="/tmp/whatever"
type=EXECVE msg=audit(1386797927.133:5527241): argc=3 a0="grep" a1="whatever" a2="/var/log/audit/audit.log"
[root@ditirlns01 ~]#
それは明らかに速くて汚いですが、それはあなたがそれを行う方法の基本です。正確に何をする必要があるかは、おそらく正確に何をしようとしているのかに大きく依存します。auditctl
コマンドでさまざまなフィルターを使用して監査フローを減らすことができますが、その情報はどれもわからないので、何を含めるかわかりません。より具体的なものが必要な場合は、manページを確認するか、この回答にコメントを投稿することをお勧めします。さらに更新します。
それがあなたを正しい方向に向かわせることを願っています。
編集:
あなたの質問は特定のユーザーを見ることに関係しているので、それを示すことができます:
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F euid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch
上記と同じですが、execve
の有効なユーザーIDで実行しているユーザーのみ16777216
がログに記録されます。ユーザーのloginuid
値(ユーザーが最初にシステムにログインしたユーザー)を指定する必要がある場合は、auid
代わりにフィルターします。
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F auid=16777216
WARNING - 32/64 bit syscall mismatch, you should specify an arch
AUID / loginuidフィルターは、たとえばユーザーがroot su
またはsudo
rootにアクセスする場合に役立ちます。その状況では、rootとして多くのものが実行されますが、問題になるのはユーザーが開始したものだけです。auditctl
また、フィルタをスタックして、euid
との両方でフィルタリングできますauid
。
[root@ditirlns01 ~]# auditctl -a always,entry -S execve -F auid=16777216 -F euid=0
WARNING - 32/64 bit syscall mismatch, you should specify an arch
[root@ditirlns01 ~]# ls /tmp/nashly -ltar
ls: /tmp/nashly: No such file or directory
[root@ditirlns01 ~]# grep nashly /var/log/audit/audit.log
type=EXECVE msg=audit(1386798635.199:5529285): argc=4 a0="ls" a1="--color=tty" a2="/tmp/nashly" a3="-ltar"
type=EXECVE msg=audit(1386798646.048:5529286): argc=3 a0="grep" a1="nashly" a2="/var/log/audit/audit.log"