매개변수가 포함된 완전한 명령으로 감사 로그 명령을 구문 분석합니다.

매개변수가 포함된 완전한 명령으로 감사 로그 명령을 구문 분석합니다.

audit로그는 다음과 같습니다.

type=CWD msg=audit(1613110144.560:260397): cwd="/"
type=PATH msg=audit(1613110144.560:260397): item=0 name="/usr/bin/sed" inode=393388 dev=fe:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PATH msg=audit(1613110144.560:260397): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=389403 dev=fe:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PROCTITLE msg=audit(1613110144.560:260397): proctitle=736564002D6E6500732F5E73657373696F6E5C2E736176655F706174683D5C282E2A3B5C295C3F5C282E2A5C29242F5C322F70
type=SYSCALL msg=audit(1613110144.564:260398): arch=c000003e syscall=59 success=yes exit=0 a0=55779395c2a0 a1=55779395c250 a2=55779395c270 a3=0 items=2 ppid=22687 pid=22689 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="sed" exe="/usr/bin/sed" subj==unconfined key=(null)
type=EXECVE msg=audit(1613110144.564:260398): argc=3 a0="sed" a1="-ne" a2="s/^session\.gc_maxlifetime=\(.*\)$/\1/p"
type=CWD msg=audit(1613110144.564:260398): cwd="/"
type=PATH msg=audit(1613110144.564:260398): item=0 name="/usr/bin/sed" inode=393388 dev=fe:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PATH msg=audit(1613110144.564:260398): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=389403 dev=fe:02 mode=0100755 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PROCTITLE msg=audit(1613110144.564:260398): proctitle=736564002D6E6500732F5E73657373696F6E5C2E67635F6D61786C69666574696D653D5C282E2A5C29242F5C312F70
type=SYSCALL msg=audit(1613110144.564:260399): arch=c000003e syscall=59 success=yes exit=0 a0=55779395c2a0 a1=55779395c250 a2=55779395c270 a3=5577932dfd82 items=2 ppid=22690 pid=22692 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="sed" exe="/usr/bin/sed" subj==unconfined key=(null)
type=EXECVE msg=audit(1613110144.564:260399): argc=3 a0="sed" a1="-e" a2="s,@VERSION@,7.3,"

type=EXECVEbash()에서 모든 명령을 실행 해야 합니다 .

예를 들어 다음 로그 항목을 살펴보세요.

 type=EXECVE msg=audit(1613110144.564:260398): argc=3 a0="sed" a1="-ne" a2="s/^session\.gc_maxlifetime=\(.*\)$/\1/p

다음과 같이 구문 분석해야 합니다.

sed -ne s/^session\.gc_maxlifetime=\(.*\)$/\1/p

어떻게 구현할 수 있습니까? 다음을 사용하여 원하는 결과를 얻을 수 있는 방법이 있을 수 있습니다.auditsearch

답변1

사용GNU sed확장 정규식 모드에서 -E다음을 가정합니다.

  • 큰따옴표 안의 큰따옴표는 백슬래시로 이스케이프됩니다 \".
  • 모든 매개변수는 큰따옴표로 묶입니다.
sed -Ee '
  /^type=EXECVE\s/!d
  s/\sa0=/\na0=/;s/.*\n//
  s/a[0-9]+="(([^\"]*|\\.)*)"/\1/g
' audit.log

산출:

sed -ne s/^session\.gc_maxlifetime=\(.*\)$/\1/p
sed -e s,@VERSION@,7.3,

관련 정보