だから私のルートディレクトリに "]"ディレクトリを作成するプロセスを知りたいです。私はこれがいくつかのスクリプトのタイプミスであると仮定します。したがって、上記のものと非常によく似たように、そのディレクトリに対する監査を設定しました。この問題。
翌日、ログを確認してみると、そのディレクトリが再生成され、監査と記録になっていたことがわかりました。しかし、この出力で私が見ることができるのは根それを作りました。
出力:
type=SYSCALL msg=audit(26.04.2013 06:25:20.275:85) : arch=i386 syscall=mkdir success=yes exit=0 a0=bfd02ea5 a1=1ed a2=bfd02ea5 a3=bfd025b8 items=2 ppid=24114 pid=24115 auid=unset uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=(none) ses=4294967295 comm=mkdir exe=/bin/mkdir key=weird
改行:
type=SYSCALL
msg=audit(26.04.2013 06:25:20.275:85) :
arch=i386
syscall=mkdir
success=yes
exit=0 a0=bfd02ea5
a1=1ed a2=bfd02ea5 a3=bfd025b8
items=2 ppid=24114 pid=24115
auid=unset
uid=root
gid=root
euid=root
suid=root
fsuid=root
egid=root
sgid=root
fsgid=root
tty=(none)
ses=4294967295
comm=mkdir
exe=/bin/mkdir
key=weird
このコマンドをrootとして実行するスクリプトを知りたいです。それは可能ですか?このPPIDを使用するプロセスは実行されなくなりました。
答え1
これがcron実行スクリプトによって引き起こされたと仮定すると、すべてのcrond-childrenを追跡できます。
strace -p $CRONPID -f -o /path/to/cron-strace.log -e trace=mkdir
結果は次のとおりです。
Process 3584 attached
Process 18227 attached
[pid 18227] execve("./testscript", ["./testscript"], [/* 100 vars */]) = 0
Process 18228 attached
[pid 18228] execve("/usr/bin/mkdir", ["mkdir", "/home/hl/tmp/strace-testdir"], ...) = 0
[pid 18228] mkdir("/home/hl/tmp/strace-testdir", 0777) = 0
もちろん、straceはスクリプトの実行を遅くしますが、これは通常問題ではありません。
答え2
この出力だけでは、どのプログラムがmkdir
コマンドを呼び出したのかわかりません。
お持ちの場合BSDプロセス会計、次のコマンドは、PID 24114を持つプログラムを表示します。
dump-acct /var/log/account/pacct | awk -F '|' '$10 ~ / 24114 / {print}'
おそらくそうですsh
。列10(|
区切り文字を含む)には、記録されたプロセスのPIDとPPIDが含まれているので、PPIDを使用して検索を繰り返して、どのプログラムが呼び出されたかを確認しsh
てください。また、プロセスの開始時期を確認することができ、これがどのようなクローン操作であるかを判断するのに役立ちます。
mkdir
auditdのみを使用すると、呼び出しだけでなくディレクトリへのすべてのアクセスを記録する必要があるため、それを変更したりディレクトリ内のファイルにアクセスしたりするコマンドが記録されます。ディレクトリが作成されたが他の人がここにアクセスしていない場合、auditdだけでは問題を解決するのに十分ではないと思います。