User Tools

Site Tools


autrace

Table of Contents

autrace

autrace – это утилита командной строки, которая запускает программу с правилами аудита, пока она не выполнится; autrace добавляет правила аудита для отслеживания процесса и сохраняет информацию в файле /var/www/audit/audit.log.

Install

Утилита autrace входит в состав демона auditd, подробнее о работе с демоном в статье.

Для установки используем пакетный менеджер, например для Debian/Ubuntu:

apt install auditd audispd-plugins

На серверах CentOS демон auditd обычно уже предустановлен (пакеты audit и audit-libs).

Example

Синтаксис:

autrace -r <программа> <аргументы для программы>

Параметр -r – ограничивает сбор данных, которые необходимы для оценки использования ресурсов процесса.

Например, чтобы отследить выполнение команды df, которая показывает использование файловой системы, выполните следующее действие:

autrace -r /bin/df -h

Все записи журнала, связанные с трассировкой, из файла журнала аудита можно вывести с помощью утилиты ausearch, аргументы для которой показаны в последней строке:

Waiting to execute: /bin/df
Filesystem      Size  Used Avail Use% Mounted on
tmpfs            98M  1.3M   96M   2% /run
/dev/sda2        16G  9.0G  5.9G  61% /
tmpfs           486M     0  486M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            98M     0   98M   0% /run/user/1000
Cleaning up...
Trace complete. You can locate the records with 'ausearch -i -p 24466'

Выполните команду:

ausearch -i -p 24466

Опция -i позволяет интерпретировать числовые значения, -p передает идентификатор процесса для поиска.

Вывод:

...
type=UNKNOWN[1420] msg=audit(08/04/2022 07:25:22.647:74) : subj_apparmor=unconfined
type=PROCTITLE msg=audit(08/04/2022 07:25:22.647:74) : proctitle=/bin/df -h
type=PATH msg=audit(08/04/2022 07:25:22.647:74) : item=1 name=/lib64/ld-linux-x86-64.so.2 inode=662217 dev=08:02 mode=file,755 ouid=root ogid=root rdev=00:00 obj=? nametype=NORMAL cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0
type=UNKNOWN[1421] msg=audit(08/04/2022 07:25:22.647:91) :
type=CWD msg=audit(08/04/2022 07:25:22.647:91) : cwd=/root
type=SYSCALL msg=audit(08/04/2022 07:25:22.647:91) : arch=x86_64 syscall=openat success=yes exit=3 a0=AT_FDCWD a1=0x558b7154737e a2=O_RDONLY a3=0x0 items=1 ppid=24464 pid=24466 auid=vs uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts1 ses=1 comm=df exe=/usr/bin/df subj=? key=(null)
...

Где:

  • name – имя команды, трассировка которой была выполнена;
  • cwd – текущий рабочий путь, из которого происходил доступ к файлу;
  • syscall – связанный системный вызов (execve - выполнение программы);
  • auid – идентификатор пользователя аудита;
  • exe – двоичный файл, выполняющий действие над файлом.

Обратите внимание, что auid определяет исходного пользователя вошедшего в систему. Другие поля могут указывать на другого пользователя, в зависимости от того, какой пользователь используется при выполнении действия.

Report

Чтобы создать отчет о деталях трассировки, выполните следующую команду:

ausearch -p <id процесса> --raw | aureport -i -f

Опция -i позволяет интерпретировать числовые значения, -f сообщает о файлах и сокетах, –raw формат для генератора отчетов aureport.

Например:

ausearch -p 24466 --raw | aureport -i -f
 
1. 08/04/2022 07:25:22 /bin/df execve yes /usr/bin/df vs 74
2. 08/04/2022 07:25:22 /etc/ld.so.cache openat yes /usr/bin/df vs 75
3. 08/04/2022 07:25:22 /lib/x86_64-linux-gnu/libc.so.6 openat yes /usr/bin/df vs 76
4. 08/04/2022 07:25:22 /usr/lib/locale/locale-archive openat yes /usr/bin/df vs 77
5. 08/04/2022 07:25:22 /usr/share/locale/locale.alias openat yes /usr/bin/df vs 78
6. 08/04/2022 07:25:22 /usr/share/locale/en_US.UTF-8/LC_MESSAGES/coreutils.mo openat no /usr/bin/df vs 79
7. 08/04/2022 07:25:22 /usr/share/locale/en_US.utf8/LC_MESSAGES/coreutils.mo openat no /usr/bin/df vs 80
8. 08/04/2022 07:25:22 /usr/share/locale/en_US/LC_MESSAGES/coreutils.mo openat no /usr/bin/df vs 81
9. 08/04/2022 07:25:22 /usr/share/locale/en.UTF-8/LC_MESSAGES/coreutils.mo openat no /usr/bin/df vs 82
10. 08/04/2022 07:25:22 /usr/share/locale/en.utf8/LC_MESSAGES/coreutils.mo openat no /usr/bin/df vs 83
11. 08/04/2022 07:25:22 /usr/share/locale/en/LC_MESSAGES/coreutils.mo openat no /usr/bin/df vs 84
12. 08/04/2022 07:25:22 /usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/coreutils.mo openat no /usr/bin/df vs 85
13. 08/04/2022 07:25:22 /usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/coreutils.mo openat no /usr/bin/df vs 86
14. 08/04/2022 07:25:22 /usr/share/locale-langpack/en_US/LC_MESSAGES/coreutils.mo openat no /usr/bin/df vs 87
15. 08/04/2022 07:25:22 /usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/coreutils.mo openat no /usr/bin/df vs 88
16. 08/04/2022 07:25:22 /usr/share/locale-langpack/en.utf8/LC_MESSAGES/coreutils.mo openat no /usr/bin/df vs 89
17. 08/04/2022 07:25:22 /usr/share/locale-langpack/en/LC_MESSAGES/coreutils.mo openat no /usr/bin/df vs 90
18. 08/04/2022 07:25:22 /proc/self/mountinfo openat yes /usr/bin/df vs 91
19. 08/04/2022 07:25:22 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache openat yes /usr/bin/df vs 92

Предположим, что запущенная программа уже работает в течении последней недели, это означает, что в журналах аудита имеется много информации. Чтобы создать отчет только для сегодняшних записей, используйте флаг -ts, чтобы указать дату и время начала поиска:

ausearch -ts today -p <id процесса> --raw | aureport -i -f
autrace.txt · Last modified: 2023/04/06 10:28 (external edit)