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

Файловый аудит в Linux: как следить за удалением дерева каталогов?

У меня на сервере запущен скрипт форума, и как-то начинает теряться небольшое количество вложений. Я хочу узнать, что их удаляет и в какое время. Как я могу настроить Linux auditd (auditctl) для просмотра дерева каталогов (вложения хранятся внутри многоуровневого дерева каталогов), чтобы отслеживать удаление файлов в нем?

Может мне для этого нужен какой-нибудь другой инструмент?

Это ответ, который я написал на предыдущий вопрос:

Обычно, если вы хотите знать, что делает процесс / пользователь / файл, без необходимости запускать lsof против него 24/7, вы используете auditctl.

Предполагая, что у вас есть недавний контроль аудита ядра, это простая операция. (Это в Debian-fu, если вы используете Red Hat translate, как это необходимо)

# apt-get install auditd

Убедитесь, что он запущен (/etc/init.d/auditd status).

auditctl -a entry,always -F arch=b64 -S open -F pid=<process id>

Замените b64 на b32, если вы используете 32-битную архитектуру, open можно заменить любым системным вызовом или словом 'all'

Подробнее читайте на странице руководства auditctl.

Вы можете использовать этот метод и попросить его следить за системным вызовом unlink.

Параметр -w полезен для просмотра файлов / каталогов, но, как объясняется на странице руководства, есть предостережения.

-w путь Вставить наблюдение за объектом файловой системы в путь. Вы не можете вставить часы в каталог верхнего уровня. Это запрещено ядром. Подстановочные знаки также не поддерживаются и будут генерировать предупреждение. Часы работают путем внутреннего отслеживания inode. Это означает, что если вы поместите часы в каталог, вы увидите то, что выглядит как файловые события, но на самом деле это просто обновление метаданных. Поступая так, вы можете пропустить несколько мероприятий. Если вам нужно просмотреть все файлы в каталоге, рекомендуется установить отдельное наблюдение для каждого файла. В отличие от правил аудита системных вызовов, часы не влияют на производительность в зависимости от количества правил, отправленных ядру.

Может быть Incron может быть использован?

Хотя рекомендация fenix auditd кажется идеальной, вы можете найти IDS файловой системы, например Помощник полезно. К сожалению, он вряд ли будет достаточно детальным для того, что вы пытаетесь выделить.

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

Пара идей. Ты можешь использовать strace чтобы увидеть, что делает ваше приложение, но оно может создавать журнал журналов и замедлять работу системы.

Другая идея - использовать inotifywait, затем lsof/fuser в файле, чтобы узнать, что его использует. Вы можете попробовать запустить этот сценарий с высоким приоритетом (если сможете), чтобы информация была как можно более точной. Вероятно, он не поймает unlink вызовите, так как файл исчезнет до доставки события.