Аудит процессов Linux с помощью утилиты Autrace

В инструкции описана установка и использование утилиты autrace для аудита процессов на серверах с операционной системой Linux.

Что это такое?

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

Установка

Утилита autrace входит в состав демона auditd, подробнее о работе с демоном читайте в нашей инструкции.

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

apt-get install auditd audispd-plugins

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

Примеры использования

Синтаксис команды autrace выглядит следующим образом:

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

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

Если у вас есть какие-либо правила аудита, autrace показывает следующую ошибку.

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

autrace -r /bin/df -h

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

Waiting to execute: /bin/df
Filesystem                   Size  Used Avail Use% Mounted on
udev                         225M     0  225M   0% /dev
tmpfs                         49M  3.2M   46M   7% /run
/dev/mapper/ubuntu--vg-root  8.3G  2.1G  5.8G  27% /
tmpfs                        245M     0  245M   0% /dev/shm
tmpfs                        5.0M     0  5.0M   0% /run/lock
tmpfs                        245M     0  245M   0% /sys/fs/cgroup
/dev/sda1                    472M  154M  294M  35% /boot
tmpfs                         49M     0   49M   0% /run/user/0
Cleaning up...
Trace complete. You can locate the records with 'ausearch -i -p 2566'

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

ausearch -i -p <id процесса>

Например:

ausearch -i -p 2596

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

Вывод:

----
type=PROCTITLE msg=audit(07/25/2018 13:30:58.112:547) : proctitle=/bin/df -h
type=PATH msg=audit(07/25/2018 13:30:58.112:547) : item=1 name=/lib64/ld-linux-x86-64.so.2 inode=272347 dev=fc:00 mode=file,755 ouid=root ogid=root rdev=00:00 nametype=NORMAL
type=PATH msg=audit(07/25/2018 13:30:58.112:547) : item=0 name=/bin/df inode=283977 dev=fc:00 mode=file,755 ouid=root ogid=root rdev=00:00 nametype=NORMAL
type=CWD msg=audit(07/25/2018 13:30:58.112:547) :  cwd=/root
type=EXECVE msg=audit(07/25/2018 13:30:58.112:547) : argc=2 a0=/bin/df a1=-h
type=SYSCALL msg=audit(07/25/2018 13:30:58.112:547) : arch=x86_64 syscall=execve success=yes exit=0 a0=0x7fff9936f842 a1=0x7fff9936d898 a2=0x7fff9936d8b0 a3=0x5b3 items=2 ppid=2594 pid=2596 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts0 ses=2 comm=df exe=/bin/df key=(null)
----
[...]
  • name - имя команды, трассировка которой была выполнена
  • cwd - текущий рабочий путь, из которого происходил доступ к файлу
  • syscall - связанный системный вызов (execve - выполнение программы)
  • auid - идентификатор пользователя аудита
  • exe - двоичный файл, выполняющий действие над файлом.

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

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

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

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

Например:

ausearch -p 2596 --raw | aureport -i -f

Пример отчета:

File Report
===============================================
# date time file syscall success exe auid event
===============================================
1. 07/25/2018 13:30:58 /bin/df execve yes /bin/df root 547
2. 07/25/2018 13:30:58 /etc/ld.so.cache open yes /bin/df root 548
3. 07/25/2018 13:30:58 /lib/x86_64-linux-gnu/libc.so.6 open yes /bin/df root 549
4. 07/25/2018 13:30:58 /usr/lib/locale/locale-archive open yes /bin/df root 550
5. 07/25/2018 13:30:58 /usr/share/locale/locale.alias open yes /bin/df root 551
6. 07/25/2018 13:30:58 /usr/share/locale/en_US/LC_MESSAGES/coreutils.mo open no /bin/df root 552
7. 07/25/2018 13:30:58 /usr/share/locale/en/LC_MESSAGES/coreutils.mo open no /bin/df root 553
8. 07/25/2018 13:30:58 /usr/share/locale-langpack/en_US/LC_MESSAGES/coreutils.mo open no /bin/df root 554
9. 07/25/2018 13:30:58 /usr/share/locale-langpack/en/LC_MESSAGES/coreutils.mo open yes /bin/df root 555
10. 07/25/2018 13:30:58 /proc/self/mountinfo open yes /bin/df root 556
11. 07/25/2018 13:30:58 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache open yes /bin/df root 557

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

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

Например:

ausearch -ts today -p 2596 --raw | aureport -i -f

Таким образом вы можете отслеживать и проверять определенный процесс Linux с помощью инструмента autrace, для получения дополнительной информации обратитесь к man-страницам.

 


Средняя оценка: 5,0, всего оценок: 2