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