ausearch 결과를 통해 해당 스크립트를 어떻게 찾을 수 있나요?

ausearch 결과를 통해 해당 스크립트를 어떻게 찾을 수 있나요?

그래서 내 루트 디렉터리에 "]" 디렉터리를 생성하는 프로세스를 알고 싶습니다. 나는 이것이 일부 스크립트의 오타라고 가정합니다. 그래서 위에 표시된 것과 매우 유사하게 해당 디렉터리에 대한 감사를 설정했습니다.이 문제.

다음날 로그를 확인해 보니 해당 디렉터리가 다시 생성되어 감사 및 기록이 되어 있었던 것으로 나타났습니다. 하지만 이 출력에서 ​​내가 볼 수 있는 것은뿌리그것을 만들었습니다.

산출:

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 

이 명령을 루트로 실행하는 스크립트를 알고 싶습니다. 그게 가능합니까? 이 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등을 확인하세요. 또한 프로세스가 시작된 시기를 확인할 수 있으며 이는 이것이 어떤 크론 작업인지 결정하는 데 도움이 될 수 있습니다.

mkdirauditd만 사용하면 호출뿐만 아니라 디렉토리에 대한 모든 액세스를 기록해야 하므로 이를 변경하거나 디렉토리 내의 파일에 액세스하는 명령이 기록됩니다. 디렉토리가 생성되었지만 다른 사람이 여기에 액세스하지 않는 경우 auditd만으로는 문제를 해결하기에 충분하지 않다고 생각합니다.

관련 정보