В этом ответе объясняется, что необходимо сделать, но особенности того, как это зависит от вашего дистрибутива, ваших настроек и целей, и какие инструменты вы выбираете для анализа данных:
То, что вы ищете, это демон Auditd в Linux. Из справочной страницы audd (8) :
AuditD является компонентом пользовательского пространства системы аудита Linux. Он отвечает за запись записей аудита на диск. Просмотр журналов осуществляется с помощью утилит ausearch или aureport . Настройка правил аудита выполняется с помощью утилиты Auditctl . Во время запуска правила
/etc/audit/audit.rules
читаются audctl и загружаются в ядро. Альтернативно, существует также программа augenrules, которая читает правила, расположенные в/etc/audit/rules.d/
них, и компилирует их вaudit.rules
файл. Сам демон аудита имеет некоторые параметры конфигурации, которые администратор может пожелать настроить. Они найдены вauditd.conf
файле.
Аудит использует встроенные в ядро функции для создания журналов при выполнении определенных системных вызовов в соответствии с вашими спецификациями. После настройки вы найдете журналы /var/log/audit
или что-то подобное для вашего дистрибутива.
Чтобы проверить доступ к файлу, вы должны использовать что-то похожее на:
auditctl -w /path/to/interesting/files/ -p rwxa -k myfileaudits
Где -w
указывает путь к файлам -p
указывает, что система будет проверять ¨R EADS ж обрядах, е х ecutions, и через ttribute или разрешения изменения. Наконец, -k
опция позволяет вам указать произвольный ключ для использования при поиске этого правила с помощью ausearch .
Обратите внимание, что хотя audd работает с системными вызовами, -p r
он не отслеживает функцию чтения, а скорее открывает, так что журналы не затопляются при каждом чтении, но запись создается каждый раз, когда файл открывается для чтения.
После включения аудита и установки журналов ausearch можно использовать для анализа этих журналов на предмет любого доступа к указанным файлам, а стандартные текстовые или статистические инструменты можно использовать для создания подсчетов. Они могут варьироваться от grep
и wc -l
до подсчета записей журнала, или от некоторой комбинации сценариев и GNU-R или gnuplot для создания графиков и отчетов.
Другой альтернативой является использование SELinux . Хотя SELinux является инструментом для контроля доступа, который обычно регистрирует только отказы в доступе, его можно настроить для регистрации ВСЕГО доступа и предоставления аналогичной информации для auddd.
Редактировать: если запись доступа требуется с самого начала : например, во время установки ОС, во время загрузки до запуска audd или перед установкой audd, то требуются более крайние меры. initrd.img
Может потребоваться создание пользовательского установщика или пользовательского загрузочного файла для загрузки необходимых средств трассировки на уровне отладчика или ядра. Эти инструменты трассировки могут включать dtrace, perf, SystemTap, ktap или аналогичные инструменты уровня отладчика для захвата доступа во время загрузки. Хорошим справочником является http://www.brendangregg.com/linuxperf.html, и примером такого типа анализа производительности системы, а не аудита, является загрузочная диаграмма .
Настройка этого выходит за рамки моего опыта, однако - надеюсь, что ссылки окажутся полезными.