Демон fapolicyd#
Описание#
Демон fapolicyd - это демон пространства пользователя, который определяет права доступа к файлам на основе базы данных доверия и атрибутов файлов/процессов. Может использоваться для занесения в черный или белый списки доступа к файлам и разрешений на выполнение.
Настройка fapolicyd осуществляется с помощью файлов в каталоге /etc/fapolicyd/. Функционирование демона определяют три файла:
compiled.rules— содержит политику доступа;fapolicyd.conf— определяет конфигурацию демона (подробнее см. в «Файл /etc/fapolicyd/fapolicyd»);fapolicyd.trust— позволяет определять доверенные файлы.
По умолчанию правила будут генерировать события аудита при каждом отказе в доступе.
Важно
Должно существовать хотя бы одно загруженное правило аудита, чтобы система аудита создавала полное событие FANOTIFY. То, какое именно правило загружено, не имеет значения.
Управление работой fapolicyd осуществляется с помощью утилиты fapolicyd-cli (подробнее см. в «Утилита fapolicyd-cli»).
Синтаксис демона:
fapolicyd <options>
Где <options> - опции.
Опции#
Опции демона представлены в таблице ниже.
Опция |
Описание |
|---|---|
|
Запретить переход в фоновый режим; вся информация о событиях выводится в стандартный поток сообщений об ошибках |
|
Запретить переход в фоновый режим; информация о событии записывается в |
|
Разрешить доступ к файлу независимо от решения политики; режим полезен для отладки правил, прежде чем сделать их постоянными |
|
Запретить включение в отчет, формируемый по завершении |
Примеры использования#
Для запуска
fapolicydвведите команду:systemctl start fapolicydПодробнее про
systemctlсм. в «Утилита systemctl».Чтобы проверить наличие событий аудита, связанных с работой
fapolicyd, введите команду:ausearch --start today -m fanotify -iПодробнее про
ausearchсм. в «Утилита ausearch».
Проверка целостности файлов с помощью fapolicyd#
Ниже приведены этапы проверки целостности файлов с помощью fapolicyd.
Предварительные условия для всех сценариев: fapolicyd запущен и работает.
Важно
Команды в сценариях настоящего раздела представлены в качестве примера.
Включение контроля целостности исполняемых файлов#
Переключите
fapolicydв режим контроля целостности по алгоритму sha256. Для этого просмотрите содержимоеfapolicyd.conf:cat /etc/fapolicyd/fapolicyd.confУбедитесь, что в файле присутствует строка
integrity = sha256.Если строка отсутствует или ключу
integrityприсвоено другое значение, добавьте строку или измените значение ключа наsha256.Внимание
Включение контроля целостности изменяет логику работы опции
trust, используемой правиламиfapolicyd. Это может потребовать внесения изменений в действующие правила.Если контроль целостности не включен, то значение
trust=1означает, что субъект или объект, описываемый правилом, находится в базе доверенных файлов.После включения контроля целостности
trust=1будет означать что субъект (или объект), описываемый правилом, находится в базе доверенных файлов и фактический размер файла и его вычисленная контрольная сумма соответствуют представленным в этой базе.Перезапустите
fapolicyd:systemctl restart fapolicydВнесите информацию о файле в базу доверенных файлов:
fapolicyd-cli -f add <file_path> --trust-file <user_base_name>Где:
<file_path>— абсолютный путь к файлу, для которого будет выполнятся контроль целостности;<user_base_name>— имя файла в каталоге /etc/fapolicyd/trust.d/, в который будет добавлена информация о файле. Если такого файла нет, он будет создан.
Важно
Для каждого файла в базе должна быть создана отдельная запись. Однако, если в команде указан путь к каталогу, то в базу будут добавлены записи обо всех файлах каталога.
После выполнения этой команды в базу заносится запись, содержащая путь к конкретному файлу, его длину и контрольную сумму.
Если осуществляется попытка добавить файл, который уже включен в базу доверенных файлов, об этом будет выдано сообщение, а данные в базе не изменятся.
Обновите кеш
fapolicyd:fapolicyd-cli -uВ результате
fapolicydбудет использовать обновленную базу доверенных файлов.Примечание
Чтобы убедиться, что информация о нужных файлах размещена в базе, выполните команду:
cat /etc/fapolicyd/trust.d/<user_base_name>Создайте правила для записи в журнал аудита.
Важно
Чтобы производилось создание записи аудита при попытке использования файлов, у которых рассчитанная контрольная сумма не совпадает с хранящейся в базе, нужно составить соответствующие правила. Для каждой группы файлов, подлежащих контролю целостности, следует создавать отдельный файл с правилами в каталоге
/etc/fapolicyd/rules.d/.При срабатывании правил, ограничивающих использование файла при нарушении целостности, по умолчанию не формируется каких-либо записей аудита. Чтобы это происходило, добавьте правила
allow_auditиdeny_audit. При срабатывали правилаallow_auditв журнал аудита будет отправлена запись типаFANOTIFY.Пример правила для записи в журнал аудита информации о событии:
allow_audit perm=any all : path=/user/bin/newscript.sh trust=0В соответствии с этим правилом при любом действии любого процесса (или пользователя) с файлом
/user/bin/newscript.sh, если его фактические длина или контрольная сумма отличаются от записанных ранее в базу доверенных файлов, будет создана запись в журнал аудита. Сами действия с файлом этим правилом не ограничиваются.Примечание
Запись аудита не будет создаваться, если для подсистемы аудита (
auditd) не задано ни одного действующего правила.После завершения создания или изменения набора правил объедините все правила:
fagenrules --loadПерегазгрузите
fapolicyd:systemctl restart fapolicydДля просмотра актуального списка правил выполните команду:
fapolicyd-cli -l
Просмотр событий аудита, связанных с контролем целостности#
Для просмотра событий аудита, сформированных правилами fapolicyd, используйте утилиту ausearch:
ausearch -ts recent -m fanotify
Просмотр списка файлов с нарушением контроля целостности#
Для просмотра списка файлов с нарушением контроля целостности выполните команду:
~~~bash
fapolicyd-cli --check-trustdb
~~~
В результате будет выведен список файлов, для которых фактический размер или фактическая контрольная сумма отличаются.
Важно
Поскольку правила определяют большой список файлов, включенных в базу доверенных файлов, в ней оказывается и некоторое число файлов, изменяемых системой в порядке обычной работы, однако это не исключает необходимости проверки по каждому из вошедших в перечень файлов.
Внесение информации об изменившихся контрольных суммах#
После того как в файлы, подлежащие контролю целостности, будут внесены изменения, необходимо обновить информацию в базе доверенных файлов:
Обновите информацию о файле в базе доверенных файлов:
fapolicyd-cli -f update <file_path> --trust-file <user_base_name>Где:
<file_path>— абсолютный путь к изменившемуся файлу, для которого будет выполнятся контроль целостности;<user_base_name>— имя файла в каталоге/etc/fapolicyd/trust.d/, в котором хранится информация о файле.
Обновите кеш
fapolicyd:fapolicyd-cli -u
Исключение файлов из процедуры контроля целостности#
Удалите запись о файле из базы доверенных файлов:
fapoilicyd-cli -f delete <file_path> --trust-file <user_base_name>Где:
<file_path>— абсолютный путь к файлу, подлежащему контролю;<user_base_name>— имя файла в каталоге/etc/fapolicyd/trust.d/, в котором хранится информация о файле.
Обновите кеш
fapolicyd:fapolicyd-cli -uВажно
Следует также удалить правила, связанные со снятием файлов с контроля целостности из соответствующих файлов в каталоге
/etc/fapolicyd/rules.d/.Объедините заново все существующие правила с помощью утилиты
fagenrules:fagenrules --loadПерезагрузите
fapolicyd:systemctl restart fapolicyd
Выключение режима контроля целостности#
Перевод fapolicyd в режим permissive выключит контроль и управление доступом к файлам (не будут работать правила allow и deny). Однако правила, формирующие записи аудита (allow_audit и deny_audit), продолжат работать в нормальном режиме.
Для выключения режима контроля целостности для fapolicyd:
В файле
/etc/fapolicyd/fapolicyd.confустановите для опцииintegrityзначениеnoneилиsize.Перезагрузите
fapolicyd:systemctl restart fapolicyd
Дополнительная информация#
Дополнительную информацию можно получить, выполнив команду:
fapolicyd --help