У меня на руках следующая ситуация. У меня есть один или несколько конкретных исполняемых файлов в / usr / bin, я назову один / usr / bin / execute, и они могут быть либо скомпилированным двоичным файлом, либо файлом сценария, например сценарием perl или python.
Я хотел бы регистрировать, когда какой-либо пользователь запускает эти конкретные двоичные файлы. Информация, которую я хотел бы получить от этого, в основном:
Кроме того, я хотел бы, чтобы эта информация была в формате, который можно было бы проанализировать при необходимости.
Сначала Auditd выглядел как хороший выбор, но по какой-то причине у него есть странный способ разделить информацию выше на две записи. Например, в приведенном выше примере я хочу отслеживать выполнение программы / usr / bin / execute. Я добавлю эти утверждения в auditctl:
-a exit,always -F arch=b32 -S execve
-a exit,always -F arch=b64 -S execve
(Я еще не смог найти, как указать "/ usr / bin / execute" как единственное, что регистрируется, я был бы признателен за помощь от того, кто знает, как это сделать)
В журнале после запуска / usr / bin / execute с одним аргументом я получаю следующие две соответствующие записи:
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 я получаю путь (в 'a1', который, я не уверен, согласован) и аргументы. Помимо того факта, что это сложнее разобрать, у меня нет определенной связи между этими утверждениями, чтобы согласовать, что они являются частью одного и того же события. Весь этот вывод кажется в целом неправильным для того, что я пытаюсь выполнить, поэтому я ищу лучший способ.
Tl; Dr: Могу ли я заставить Auditd записывать эту информацию в файл обычным способом с возможностью синтаксического анализа для скриптов или двоичных файлов? Могу ли я ограничить ведение журнала только этим исполняемым файлом? Если нет, будет ли другой демон аудита лучшим выбором?
Спасибо.
Независимо от того, как вы это делаете в auditd, вам придется использовать какой-нибудь парсер для получения нужной информации (если только одна из опций ausearch не поможет).
Для начала, чтобы отслеживать только определенные команды, и скажем, это команды / usr / bin / who (двоичный файл) и / usr / bin / whatis (сценарий оболочки), затем используйте правила
-w /usr/bin/who -p x -k my_execs
-w /usr/bin/whatis -p x -k my_execs
После установки этих правил перезапустите службу auditd, затем выполните
who -a
whatis who
затем как root
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 дают вам who, where и другие элементы, элементы EXECVE предоставляют аргументы, CWD - расположение и сведения PATH о задействованных файлах. Для справки по этой системе приведенные выше inodes соответствуют
524297 /lib64/ld-2.12.so
2102799 /usr/bin/who
786482 /bin/bash
2112811 /usr/bin/whatis
Вы можете проверить https://people.redhat.com/sgrubb/audit Чтобы получить больше информации