Я пытаюсь найти способ регистрации конкретного экземпляра, rrdtool
чтобы увидеть, является ли путь, который он получает, неверным.
Я знаю, что мог бы обернуть исполняемый файл в сценарий оболочки, который бы регистрировал параметры, но мне было интересно, есть ли более специфичный для ядра способ контроля за этим, возможно, обратный вызов файловой системы, который видит, когда конкретный / proc / pid / exe соответствует заданному двоичному файлу?
auditd
записать аргументы командной строки, а также запустить программу? serverfault.com/questions/765179/…Ответы:
Да, есть средство ядра: подсистема аудита.
auditd
Демон делает вырубку, а командаauditctl
устанавливает правила ведения журнала. Вы можете регистрировать все звонки на определенную систему alls, с некоторой фильтрацией. Если вы хотите регистрировать все выполненные команды и их аргументы, зарегистрируйтеexecve
системный вызов:Чтобы специально отследить вызов конкретной программы, добавьте фильтр на исполняемый файл программы:
Логи отображаются в том
/var/log/audit.log
или ином месте, где их размещает ваш дистрибутив. Вы должны быть пользователем root для управления подсистемой аудита.Как только вы закончите исследование, используйте ту же командную строку с
-d
вместо,-a
чтобы удалить правило ведения журнала, или запустите,auditctl -D
чтобы удалить все правила аудита.В целях отладки замена программы сценарием-оболочкой дает больше гибкости для регистрации таких вещей, как среда, информация о родительском процессе и т. Д.
источник
-F path=/ust/bin/rrdtool
? Я не понимаю, какrrdtool
это связано с программным обеспечением.rrdtool
. Если вы хотите регистрировать вызовы всех программ, отбросьте-F path=…
часть (конечно, вы получите много журналов).auditctl
команда действует только до перезагрузки?auditctl
только сохраняется до перезагрузки, но в любом случае это хороший момент, я добавил инструкции по их удалению без перезагрузки в свой ответ.Вы могли бы использовать Snoopy .
Snoopy - более легкое решение, так как не требует взаимодействия с ядром. Все, что нужно, - это динамический загрузчик (dl), который предварительно загружает библиотеку snoopy, путь к которой указан в
/etc/ld.so.preload
.Раскрытие информации: я текущий сопровождающий.
источник
Подсистема «аудита» ядра Linux может делать то, что вам нужно.
например, если вы запускаете эти команды:
Затем регистрируется каждое событие выполнения, и вокруг него предоставляется много информации.
например, это результат моего бега
tail /var/log/audit/audit.log
Есть некоторые интересные ценности, которые можно увидеть; например, «auid» равен 500, что является моим идентификатором входа в систему, хотя «uid» равно нулю (потому что я работаю под
su
). Таким образом, даже если пользователь поменял учетную запись,su
илиsudo
мы все равно можем вернуться к его «идентификатору аудита»Теперь эти
auditctl
команды будут потеряны при перезагрузке. Вы можете поместить их в файл конфигурации (например, в/etc/audit/rules.d/
каталог на CentOS 7). Точное местоположение будет зависеть от вашей версии ОС. Страницаauditctl
руководства должна помочь здесь.Однако будьте осторожны ... это приведет к генерации большого количества сообщений журнала. Убедитесь, что у вас достаточно места на диске!
При необходимости правила могут быть ограничены конкретным пользователем или конкретной командой.
А также будьте осторожны; если пользователь вводит пароль при выполнении команды (например
mysql --user=username --password=passwd
), то это будет зарегистрировано.источник