Аудит файлів в Linux: як дивитися дерево каталогів на видалення?


9

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

Можливо, я повинен використовувати для цього якийсь інший інструмент?

Відповіді:


8

Це відповідь, яку я написав на попереднє запитання:

Як правило, якщо ви хочете знати, що робить процес / користувач / файл, не запускаючи lsof проти нього 24/7, ви використовуєте auditctl.

Якщо припустити, що у вас нещодавній контроль аудиту ядра повинен бути простою операцією. (Це в Debian-fu, якщо ви використовуєте переклади Red Hat, якщо потрібно)

# apt-get install auditd

Переконайтесь, що його працює (/etc/init.d/auditd статус).

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

Замініть b64 на b32, якщо ви працюєте з 32-розрядною аркою, відкриту можна замінити будь-яким системним викликом або словом "все"

Для більш детального ознайомлення зі сторінкою Audctl.

Ви можете використовувати цей метод і попросити його спостерігати за системним викликом "відключення".

Параметр -w корисний для перегляду файлів / каталогів, але, як пояснює сторінка man, є застереження.

-w шлях Вставте годинник для об'єкта файлової системи у шлях. Ви не можете вставити годинник у каталог верхнього рівня. Це заборонено ядром. Замісні символи також не підтримуються, і вони генерують попередження. Спосіб роботи годин - це відстеження внутрішньої внутрішньої точки. Це означає, що якщо поставити годинник на каталог, ви побачите, що видається подіями файлів, але це насправді лише оновлення метаданих. Ви можете пропустити кілька подій, зробивши це. Якщо вам потрібно переглянути всі файли в каталозі, рекомендується розмістити окремий годинник на кожному файлі. На відміну від правил аудиту системних викликів, годинник не впливає на продуктивність, грунтуючись на кількості правил, що надсилаються ядру.


Я не можу :( у мене PHP працює в режимі CGI. Це завжди новий процес там. Також я хочу не дивитися жоден процес, а дивитись певні частини файлової системи для змін.
Владислав Раструсний,

Так, дивіться редагування, зроблене мною, є параметри для перегляду каталогів файлової системи, але з застереженнями або файлами.
Аарон Тейт

Є близько 1000 папок і близько 50 тис. Файлів. Тож це теж не
вийде

Як правило, поки ви знаєте про застереження, ви повинні мати можливість просто продовжувати і розміщувати годинник у каталозі верхнього рівня, який містить папки, які ви хочете переглянути.
Аарон Тейт

Мені потрібно зробити те ж саме (переглянути папку для видалення, щоб я міг знайти ім'я PID / процесу, який це зробив), але це, здається, не працює (принаймні на ядрі 3.x). Якщо я запускаю "auditctl -запис, завжди -F arch = b64 -S від'єднати -w / шлях / до / dir" для відстеження видалень, то я отримаю "параметр перегляду не може бути наданий за допомогою syscall". Хтось мав якісь ідеї?
IBBoard


0

Пару ідей. Ви можете використовувати, straceщоб побачити, що робить ваша програма, але це може створити журнал журналів і може сповільнити роботу системи.

Інша ідея полягає у використанні inotifywait, а потім lsof/fuserу файлі, щоб побачити, що він використовує. Ви можете спробувати запустити цей сценарій з високим пріоритетом (якщо зможете), щоб мати інформацію максимально точну. Він, ймовірно, не зловить unlinkвиклик, оскільки файл буде видалений до доставки події.


Я не можу. Я не знаю, на якому процесі слід запускати стразу, оскільки через деякий час я знаходжу видалені файли. inotifywait також не працюватиме, оскільки PHP працює як CGI і там багато PHP-процесів з різними ідентифікаторами.
Владислав Раструсний

inotify використовується для моніторингу файлової системи, а не запущених процесів. Для напруги потрібно простежити головний процес батьків з -fпрапором, щоб слідкувати за дітьми.
Ден Андреатта

0

Хоча аудиторна рекомендація fenix здається ідеальною, ви можете виявити ідентифікацію файлової системи, наприклад AIDE, корисною. На жаль, навряд чи буде достатньо дрібнозернистим для того, що ви намагаєтеся виділити.

Я часто пишу сценарії як рішення таких проблем, як те, що ви описуєте. Якщо ви не можете досягти необхідного рішення, рекомендованого рішення, напишіть щось самостійно. Часто це не дуже складно.


Здається, це лише для пошуку змін файлів. Не для моніторингу в режимі реального часу.
Владислав Раструсний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.