podman-integrity#

Описание#

Команда podman-integrity служит для проверки целостности отдельных файлов, каталогов и образов контейнеров через расчет контрольных сумм по алгоритму SHA-256. В случае обнаружения нарушения целостности ведет запись в журнал аудита и возвращает код ошибки 51.

Синтаксис команды:

podman-integrity <command> <arguments>

Где:

  • <command> - действие, которое необходимо выполнить;

  • <arguments> - аргументы.

Команды#

Часто используемые команды представлены в таблице ниже.

Команды podman-integrity#

Команда

Описание

update_container

Принимать в качестве аргумента название/ID контейнера. Найти используемый контейнером образ для вычисления его контрольной сумму и записи в файл /var/lib/containers/checksums/<ID_image>

update_file

Принимать в качестве аргумента путь к файлу/каталогу. Записать подсчитанную контрольную сумму в расширенные атрибуты в поле security.checksum. Если задан каталог, то обработать его рекурсивно и вычислить контрольную сумму для содержимого всех регулярных файлов в лексикографическом порядке

update_each_file

Принимать в качестве аргумента путь к каталогу. Обработать его рекурсивно, записать контрольную сумму каждого найденного файла в поле security.checksum его расширенных атрибутов

update_image

Принимать в качестве аргумента название/ID образа контейнера. Вычислить его контрольную сумму и записать в файл /var/lib/containers/checksums/<ID_image>. Название/ID будет принято за основу для поиска средствами Podman. Для точного указания названия/ID образа добавить опцию -d (--direct)

validate_container

Принимать в качестве аргумента название/ID контейнера. Найти используемый контейнером образ, вычислить его контрольную сумму и сравнить с записанной в файл /var/lib/containers/checksums/<ID_image>

validate_file

Принимать в качестве аргумента путь к файлу/каталогу. Сравнить подсчитанную контрольную сумму с записанной в поле security.checksum расширенных атрибутов. Если задан каталог, то обрабатать его рекурсивно и вычислить контрольную сумму для содержимого всех регулярных файлов в лексикографическом порядке

validate_each_file

Принимать в качестве аргумента путь к каталогу. Рекурсивно обработать его, сравнить подсчитанную контрольную сумму каждого файла с записанной в поле security.checksum его расширенных атрибутов

validate_image

Принимать в качестве аргумента название/ID образа контейнера. Вычислить его контрольную сумму и записать в файл /var/lib/containers/checksums/<ID_image>. Название/ID будет принято за основу для поиска средствами Podman. Для точного указания названия/ID образа необходимо добавить опцию -d (--direct)

Важно

При выполнении команд валидации если контрольные суммы совпадают — возвращается код 0; в противном случае возвращается код 51 и в log-файл аудита выводится ошибка 2156 (Integrity violation).

При выполнении команды validate_file_each происходит последовательная проверка контрольных сумм каждого файла в указанном каталоге. Если в ходе проверки вычисленная контрольная сумма отличается от записанной в расширенных атрибутах, то проверка целостности останавливается, а в log-файл аудита выводится ошибка 2156 (Integrity violation).

При вычислении контрольной суммы образа контейнера и проверке целостности образа контейнера командой предварительно выполняется его монтирование с помощью podman image mount <Image_ID>. Контрольная сумма вычисляется для cмонтированного каталога. После подсчета выполняется размонтирование — podman image unmount <Image_ID>. Операции монтирования и размонтирования происходят в автоматическом режиме, без вмешательства пользователя.

В случае успешного выполнения команд podman-integrity возвращает 0. В случае ошибки, например, при неуспешной валидации или вводе аргументов неверного формата, команда возвращает ненулевой код ошибки. Ошибка при валидации файла, образа или контейнера инициирует внесение соответствующей записи в журнал аудита.

Примеры использования#

Проверка целостности образа контейнера#

Порядок проверки целостности образа контейнера ecstatic_brattain (имя контейнера взято для примера):

  1. Рассчитайте контрольную сумму для последующего контроля целостности:

    podman-integrity update_container ecstatic_brattain; echo $?
    
  2. Проведите валидацию контрольной суммы:

    podman-integrity validate_container ecstatic_brattain; echo $?
    

Проверка целостности исполняемого файла#

Порядок проверки целостности образа контейнера abc (имя файла взято для примера):

  1. Рассчитайте контрольную сумму для последующего контроля целостности:

    podman-integrity update_file abc; echo $?
    
  2. Проведите валидацию контрольной суммы:

    podman-integrity validate_file abc; echo $?
    

Дополнительная информация#

Дополнительную информацию можно получить, выполнив команду:

man podman-integrity

Или:

podman-integrity --help