Назад | Перейти на главную страницу

Как регистрировать все команды, выполняемые в Linux, включая их аргументы (параметры)?

Как я могу зарегистрировать все команды, выполняемые в Linux, включая их аргументы (параметры) командной строки?

Так, например, если кто-то бежит:

rm -rf /tmp/foo

Я бы увидел запись в журнале, подобную этой:

2016-01-01 18:00:00 user=bob command='rm -rf /tmp/foo'

И не только это:

2016-01-01 18:00:00 user=bob command='rm'

Мне удалось найти только применение auditd которые не регистрируют аргументы (параметры) командной строки. Есть ли способ правильно настроить auditd записать это? Похоже, что у FreeBSD есть способ установить argv политика, но, похоже, этого нет в производных Debian.

Auditd действительно изящный :) При правильной настройке вы можете видеть все эти события по своему усмотрению (я приведу вам пример с одного из моих серверов). Как вы можете видеть, в моих выходных данных ausearch вы можете увидеть, что / bin Был вызван / rm, а также файлы, которые были удалены (я изменил реальные пути на / tmp / X * - и, как вы можете видеть, он принимает все аргументы от a1 до a8). Если это то, что вы хотите, я могу дать вам некоторые из моих конфигураций, а также несколько руководств, которые я использовал для настройки auditd.

time->Thu May 28 11:35:01 2015

type=PATH msg=audit(1432812901.638:4583880): item=1 name=(null) inode=57348 dev=08:02 mode=0100755 ouid=0 ogid=0 rdev=00:00

type=PATH msg=audit(1432812901.638:4583880): item=0 name="/bin/rm" inode=8252 dev=08:02 mode=0100755 ouid=0 ogid=0 rdev=00:00

type=CWD msg=audit(1432812901.638:4583880):  cwd="XXX"

type=EXECVE msg=audit(1432812901.638:4583880): argc=9 a0="rm" a1="-r" a2="/tmp/*" a3="/tmp/XX" a4="/tmp/XXX" a5="/tmp/XXXX" a6="/tmp/XXXXX" a7="/tmp/XXXXXXX" a8="/tmp/XXXXXXX"

type=SYSCALL msg=audit(1432812901.638:4583880): arch=c000003e syscall=59 success=yes exit=0 a0=1d27830 a1=1d27e20 a2=1d26870 a3=7fff70cfb2d0 items=2 ppid=10230 pid=10231 auid=1105 uid=1105 gid=1005 euid=1105 suid=1105 fsuid=1105 egid=1005 sgid=1005 fsgid=1005 tty=(none) ses=35220 comm="rm" exe="/bin/rm" key=(null)

Вы пробовали отправлять историю в системный журнал?

Один из многих примеров

https://jablonskis.org/2011/howto-log-bash-history-to-syslog/index.html