Утилита podman-integrity#
podman-integrity - служит для проверки целостности отдельных файлов и каталогов, а также образов контейнеров. В случае обнаружения нарушения целостности ведет запись в журнал аудита и возвращает код ошибки 51.
Синтаксис podman-integrity:
podman-integrity <subcommand> <arguments>
Где:
<subcommand>- действие, которое необходимо выполнить;<args>- аргументы.
Команды утилиты представлены в таблице ниже.
Команда |
Описание |
|---|---|
|
Принимает в качестве аргумента название/ID контейнера. Находит используемый контейнером образ, считывает его контрольную сумму и записывает в файл |
|
Принимает в качестве аргумента путь к файлу/каталогу. Записывает контрольную сумму в расширенные атрибуты в поле |
|
Принимает в качестве аргумента путь к каталогу. Обрабатывает его рекурсивно, записывает контрольную сумму каждого найденного файла в поле |
|
Принимает в качестве аргумента название/ID образа контейнера. Считывает его контрольную сумму и записывает в файл |
|
Принимает в качестве аргумента название/ID контейнера. Находит используемый контейнером образ, считывает его контрольную сумму и сравнивает с записанной в файл |
|
Принимает в качестве аргумента путь к файлу/каталогу. Сравнивает подсчитанную контрольную сумму с записанной в поле |
|
Принимает в качестве аргумента путь к каталогу. Рекурсивно обрабатывает его, сравнивает подсчитанную контрольную сумму каждого файла с записанной в поле |
|
Принимает в качестве аргумента название/ID образа контейнера. Считывает его контрольную сумму и записывает в файл |
Справку по использованию команд можно получить, запустив утилиту или ее команду с опцией --help.
При проверке целостности образа контейнера утилитой предварительно выполняется его монтирование с помощью podman image mount <Image_ID>. Контрольная сумма считывается для cмонтированного каталога. После подсчета выполняется размонтирование - podman image unmount <Image_ID>. Операции монтирования и размонтирования происходят в автоматическом режиме, без вмешательства пользователя.
В случае успешного выполнения команд podman-integrity возвращает 0. В случае ошибки, например, при неуспешной валидации или вводе аргументов неверного формата, выводит ненулевой код ошибки. Ошибка при валидации файла, образа или контейнера инициирует внесение соответствующей записи в журнал аудита.
Примеры использования#
Для проверки контрольной суммы контейнера
ecstatic_brattainбез предварительного вызоваupdate_containerвведите команду:podman-integrity validate_container ecstatic_brattain; echo $?Где
echo $?выводит код результата выполнения команды (подробнее см. в «Утилита echo»), в данном случае - код ошибки51.Также после выполнения команды будет сделана запись в аудит, например:
type=UNKNOWN[2156] msg=audit(1710935630.678:61741): pid=990365 uid=0 auid=1000 ses=358 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='event_type="integrity control" importance_level="critical" event_description="software integrity verification" event_name="facts of integrity violation of controlled objects" image_id="25d4db7cd88e23e61d2aadadf6cf6864b054083abfb16ffd72fbe530dd385305" resource_name="/var/lib/containers/storage" integrity_control_method="SHA-256" reaction_type="blocking" reference_hash_value="<saved digest absents or has wrong format>" calculated_hash_value="<saved digest absents or has wrong format> exe="/usr/sbin/podman-integrity" hostname=localhost1 addr=? terminal=pts/0 res=failed'UID="root" AUID="user1"Для проверки контрольной суммы контейнера
ecstatic_brattainc предварительным обновлением:Обновите контрольную сумму:
podman-integrity update_container ecstatic_brattain; echo $?Вывод команды при успешном выполнении -
0.Проведите валидацию контрольной суммы:
podman-integrity validate_container ecstatic_brattain; echo $?Вывод команды при успешном выполнении -
0.
Для создания файла
abcи проведения проверки его контрольной суммы без ее обновления:Создайте пустой файл:
touch abcПодробнее про
touchсм. в «Утилита touch».Проведите валидацию контрольной суммы созданного файла:
podman-integrity validate_file abc; echo $?В данном случае вывод команды будет содержать код ошибки
51. Также после выполнения команды будет сделана запись в аудит, например:type=UNKNOWN[2156] msg=audit(1710935551.015:61738): pid=990350 uid=0 auid=1000 ses=358 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='event_type="integrity control" importance_level="critical" event_description="software integrity verification" event_name="facts of integrity violation of controlled objects" file_name="/home/user1/abc" integrity_control_method="SHA-256" reaction_type="blocking" reference_hash_value="<saved digest absents or has wrong format>" calculated_hash_value="<saved digest absents or has wrong format>" exe="/usr/sbin/podman-integrity" hostname=localhost1 addr=? terminal=pts/0 res=failed'UID="root" AUID="user1"
Для проверки контрольной суммы файла
abcc предварительным обновлением:Обновите контрольную сумму:
podman-integrity update_file abc; echo $?Вывод команды при успешном выполнении -
0.Проведите валидацию контрольной суммы:
podman-integrity validate_container ecstatic_brattain; echo $?Вывод команды при успешном выполнении -
0- контрольная сумма файла совпадет с записанной в расширенных атрибутах.