パラメーターを含む完全なコマンドで監査ログ・コマンドを構文解析します。

パラメーターを含む完全なコマンドで監査ログ・コマンドを構文解析します。

私の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,

おすすめ記事