我手边有以下情况。 我在/ usr / bin中有一个或多个特定的可执行文件,我将调用一个/ usr / bin / execute,它们可以是编译的二进制文件或脚本文件,例如perl或python脚本。
我想logging任何用户启动这些特定的二进制文件。 我想从这里得到的信息基本上是:
此外,如果需要,我希望这些信息的格式是合乎逻辑的。
审计看起来像是一个不错的select,但它有一个奇怪的方式,由于某种原因将上面的信息分成两个条目。 例如,在上面的例子中,我想跟踪程序/ usr / bin / execute的运行。 我将把这些语句添加到auditctl:
-a exit,always -F arch=b32 -S execve -a exit,always -F arch=b64 -S execve
(我还没有能够find如何指定“/ usr / bin / execute”作为唯一的login,我会感谢从谁知道如何做到这一点的人的帮助)
在运行/ usr / bin /执行一个参数后的日志中,我得到以下两个相关条目:
type=SYSCALL msg=audit(1447688181.106:819746): arch=c000003e syscall=59 success=yes exit=0 a0=2898528 a1=26e3308 a2=2720008 a3=7fff176c1840 items=3 ppid=10697 pid=10715 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts4 ses=8 comm="execute" exe="/usr/bin/perl" key=(null) type=EXECVE msg=audit(1447688181.106:819746): argc=3 a0="/usr/bin/perl" a1="/usr/bin/execute" a2="some_arg.txt"
这些信息是由于某种原因被分成两个条目。 在第一个SYSCALL消息中,我得到了用户的uid,在第二个EXECVE消息中,我得到了path(在'a1'中,我不确定是否一致)和参数。 除了这个更难parsing的事实之外,这些陈述之间并没有明确的联系,因为它们是同一事件的一部分。 这整个输出似乎一般是不正确的,因为我正在试图完成,所以我正在寻找一个更好的方法。
Tl; Dr:我可以通过auditd将这些信息以一般可parsing的方式logging到文件中,用于脚本或二进制文件吗? 我可以限制只有这个可执行文件的日志logging? 如果不是,另一个审计守护进程是一个更好的select?
谢谢。
不pipe你如何在auditd中这样做,你将不得不使用一些parsing器来获取你想要的信息(除非ausearch的选项有帮助)。
首先,要监视特定的命令,可以说命令是/ usr / bin / who(一个二进制)和/ usr / bin / whatis(一个shell脚本),然后使用规则
-w /usr/bin/who -px -k my_execs -w /usr/bin/whatis -px -k my_execs
设置这些规则后,重新启动审计服务,然后执行
who -a whatis who
然后作为根
ausearch -i -k my_execs
要得到
---- node=mynode.mydomain type=CONFIG_CHANGE msg=audit(11/18/2015 08:38:22.724:847290) : auid=burn ses=145 subj=unconfined_u:system_r:auditctl_t:s0 op="add rule" key=my_execs list=exit res=yes ---- node=mynode.mydomain type=CONFIG_CHANGE msg=audit(11/18/2015 08:38:22.724:847291) : auid=burn ses=145 subj=unconfined_u:system_r:auditctl_t:s0 op="add rule" key=my_execs list=exit res=yes ---- node=mynode.mydomain type=PATH msg=audit(11/18/2015 08:38:25.381:847344) : item=1 name=(null) inode=524297 dev=fd:00 mode=file,755 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:ld_so_t:s0 nametype=NORMAL node=mynode.mydomain type=PATH msg=audit(11/18/2015 08:38:25.381:847344) : item=0 name=/usr/bin/who inode=2102799 dev=fd:00 mode=file,755 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:bin_t:s0 nametype=NORMAL node=mynode.mydomain type=CWD msg=audit(11/18/2015 08:38:25.381:847344) : cwd=/tmp node=mynode.mydomain type=EXECVE msg=audit(11/18/2015 08:38:25.381:847344) : argc=2 a0=who a1=-a node=mynode.mydomain type=SYSCALL msg=audit(11/18/2015 08:38:25.381:847344) : arch=x86_64 syscall=execve success=yes exit=0 a0=0x11728e0 a1=0x1172d90 a2=0x10e8020 a3=0x18 items=2 ppid=1810 pid=22443 auid=burn uid=burn gid=burn euid=burn suid=burn fsuid=burn egid=burn sgid=burn fsgid=burn tty=pts0 ses=145 comm=who exe=/usr/bin/who subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=my_execs ---- node=mynode.mydomain type=PATH msg=audit(11/18/2015 08:38:31.052:847381) : item=2 name=(null) inode=524297 dev=fd:00 mode=file,755 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:ld_so_t:s0 nametype=NORMAL node=mynode.mydomain type=PATH msg=audit(11/18/2015 08:38:31.052:847381) : item=1 name=(null) inode=786482 dev=fd:00 mode=file,755 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:shell_exec_t:s0 nametype=NORMAL node=mynode.mydomain type=PATH msg=audit(11/18/2015 08:38:31.052:847381) : item=0 name=/usr/bin/whatis inode=2112811 dev=fd:00 mode=file,755 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:bin_t:s0 nametype=NORMAL node=mynode.mydomain type=CWD msg=audit(11/18/2015 08:38:31.052:847381) : cwd=/tmp node=mynode.mydomain type=EXECVE msg=audit(11/18/2015 08:38:31.052:847381) : argc=2 a0=/bin/sh a1=/usr/bin/whatis node=mynode.mydomain type=EXECVE msg=audit(11/18/2015 08:38:31.052:847381) : argc=3 a0=/bin/sh a1=/usr/bin/whatis a2=who node=mynode.mydomain type=SYSCALL msg=audit(11/18/2015 08:38:31.052:847381) : arch=x86_64 syscall=execve success=yes exit=0 a0=0x1172d90 a1=0x1172500 a2=0x10e8020 a3=0x18 items=3 ppid=1810 pid=22504 auid=burn uid=burn gid=burn euid=burn suid=burn fsuid=burn egid=burn sgid=burn fsgid=burn tty=pts0 ses=145 comm=whatis exe=/bin/bash subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=my_execs
你可以看到,ausearch已经提取了你想要的事件(使用你的密钥)。 SYSCALL元素为您提供了EXECVE元素提供的参数,CWD位置和PATH有关文件的详细信息。 为了参考这个系统上面的inode映射到
524297 /lib64/ld-2.12.so 2102799 /usr/bin/who 786482 /bin/bash 2112811 /usr/bin/whatis