audit.log에서 소수의 레코드만 추출하는 방법

audit.log에서 소수의 레코드만 추출하는 방법

audit.log를 추출하는 방법

Linux에서 auditd 서비스를 시작하면 실행된 모든 명령이 예상대로 기록되지만 추가적으로 백그라운드 프로세스(셸에서 실행되지 않은 명령)도 기록됩니다.

Audit.log는 다음과 같습니다.

> type=SYSCALL msg=audit(1554390377.124:5): arch=40000003 syscall=11
> success=yes exit=0 a0=810cf88 a1=810bd88 a2=80f5008 a3=810bd88 items=2
> ppid=9991 pid=10497 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0
> egid=0 sgid=0 fsgid=0 ses=4294967295 tty=(none) comm="date"
> exe="/bin/busybox.nosuid" key=(null)  

> type=EXECVE msg=audit(1554390377.124:5): argc=2 a0="date" a1="+%m%d%y-%H:%M:%S:%N"

> type=CWD msg=audit(1554390377.124:5): cwd="/" type=PATH
> msg=audit(1554390377.124:5): item=0 name="/bin/date" inode=1538
> dev=b3:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
> 
> type=PATH msg=audit(1554390377.124:5): item=1 name=(null) inode=969
> dev=b3:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL

> type=SYSCALL msg=audit(1554390389.524:36): arch=40000003 syscall=11
> success=yes exit=0 a0=80f68a8 a1=80f6ae8 a2=80f3008 a3=80f6ae8 items=2
> ppid=9906 pid=10592 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0
> egid=0 sgid=0 fsgid=0 ses=4294967295 tty=pts0 comm="cat"
> exe="/bin/busybox.nosuid" key=(null) 
> type=EXECVE
> msg=audit(1554390389.524:36): argc=2 a0="cat" a1="/tmp/cpuinfo"
> type=CWD msg=audit(1554390389.524:36): cwd="/"
> type=PATH
> msg=audit(1554390389.524:36): item=0 name="/bin/cat" inode=1538
> dev=b3:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL
> type=PATH msg=audit(1554390389.524:36): item=1 name=(null) inode=969
> dev=b3:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL

위 로그에서는 tty=pts*인 레코드만 원합니다. egrep을 시도했지만 예상한 출력을 얻지 못했습니다.

egrep "tty=pts*|type=EXECVE"audit.log

예상 출력:

유형=EXECVE msg=audit(1554390389.524:36): argc=2 a0="cat" a1="/tmp/cpuinfo"

tty=pts[0-6](tty=none 제외)인 레코드만 원합니다.

답변1

댓글에 따라 편집된 코드를 확인하세요.

주문하다

awk '/type=EXECVE/||/tty=pts*/{print $0}' filename

관련 정보