В инструкции описана установка и использование утилиты 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-страницам.