Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

Информация
titleДанная статья применима к:
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8) с установленным обновлением 1.8.3
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) с установленным обновлением 1.7.8, см. пояснения в статье

Общая информация

В состав Astra Linux Special Edition входят системы контейнеризации Docker и Podman. В соответствии с требованиями ФСТЭК эти системы должны обеспечивать следующий функционал:

  • Средство контейнеризации 6 класса защиты должно:
    • выявлять известные уязвимости при создании, установке образа контейнера в информационной (автоматизированной) системе и хранении образов контейнеров во взаимодействии с сертифицированным средством контроля и анализа защищенности на основе сведений, содержащихся в банке данных угроз безопасности информации;
    • оповещать о выявленных уязвимостях в образах контейнеров разработчика образов контейнеров и администратора безопасности информационной (автоматизированной) системы.
  • Средство контейнеризации 5, 4, 3 класса защиты должно запрещать создание образов содержащих известные уязвимости критического и высокого уровня опасности.
  • Средство контейнеризации 2, 1 класса защиты должно запрещать создание образов содержащих известные уязвимости критического, высокого и среднего уровня опасности.

Для реализации этих требований в состав Astra Linux Special Edition включены средства выявления уязвимостей в образах контейнеров, используемых системами контейнеризации. Далее в статье описан порядок установки, настройки и применения этих средств для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8) с установленным обновлением 1.8.3 и Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) с установленным обновлением 1.7.8. Для более ранних обновлений см.статью Проверка образов контейнеров на наличие уязвимостей средствами Astra Linux.

Термины

  • oval-описание — файл в формате XML, содержащий информацию об уязвимости, объектах, подверженный уязвимости, способах и условиях выявления наличия уязвимости;
  • сканирование — проверка содержимого контейнера для выявления уязвимостей описанных в oval-db;
  • swarm-правила —

Установка и базовое применение системы сканирования уязвимостей

Система сканирования уязвимостей представлена в пакетах openscap-scanner и oval-db. Эти пакеты устанавливаются автоматически при установке систем контейнеризации Docker или Podman. Также пакеты могут быть установлены отдельно, например, для загрузки oval-описаний с последующим копированием этих описаний в изолированную сеть или для поиска уязвимостей в образах без возможности запуска этих образов.

При установке пакетов сразу устанавливаются oval-описания для контейнеров Astra Linux. Эти описания будут обновляться по мере установки оперативных обновлений, однако для более быстрой актуализации описаний следует настроить автоматическое обновление. Порядок настройки автоматического обновления описан далее. Oval-описания для иных операционных систем могут быть добавлены вручную.

После установки пакетов система готова к работе с базовыми настройками (настройками по умолчанию). По умолчанию применяются следующие настройки:

  • включено сканирование при создании образов;
  • включено сканирование при создании контейнеров (запуске образов);
  • включено периодическое сканирование образов с периодом 168 часов (7 суток);
  • для образов Docker дополнительно включено применение swarm-правил.

Сканирование по умолчанию выполняется в следующем порядке:

  1. Периодическое сканирование всех образов контейнеров выполняется раз в 168 часов (7 дней).
  2. Сканирование также выполняется при запуске контейнера, если с момента предыдущего сканирования при запуске прошло более 24 часов или образ ранее не сканировался. При этом, если в образ вносились изменения, то он рассматривается как новый, ранее не проверенный образ.

Периоды сканирования могут быть изменены в конфигурационных файлах.

Таким образом, при использовании контейнеров Astra Linux система сканирования может эксплуатироваться сразу после установки, обеспечивая соответствие требованиям ФСТЭК, и не требуя специальных настроек, кроме настройки автоматического обновления oval-описаний для образов Astra Linux. При использовании образов контейнеров, предоставляемых сторонними производителями, дополнительно потребуется вручную загрузить соответствующие oval-описания. Порядок действий по загрузке описан далее.

Работа с oval-описаниями

В системе сканирования уязвимостей имеется возможность обновлять и добавлять собственные oval-описания. Это можно сделать следующими способами:

  1. Обновление oval-описаний для Astra Linux с сервера Astra Linux. Может выполняться в автоматическом и ручном режимах.

  2. Ручная загрузка любых oval-описаний.

Для работы с описаниями используется инструмент командной строки oval-db. Для работы с инструментом необходимы права суперпользователя или участие в группе oval-db-admin. Общую справку по использованию инструмента можно получить любой из команд:

Command

sudo oval-db -h
sudo oval-db --help
sudo oval-db help

Пример вывода справки:

Блок кода
collapsetrue
A oval-db client to work with oval-db daemon

Usage:
  oval-db [command]

Available Commands:
  auto-update Enable or disable auto-update for the oval-db
  completion  Generate the autocompletion script for the specified shell
  config      Open GUI for configuration the scanner
  help        Help about any command
  history     History of scanning
  list        List of all loaded files
  load        A command to load and split .xml file by the severity level
  remove      Remove oval descriptions for specific version of OS
  restore     Restore a specific OS and version of oval-db files
  status      A command to check daemon status
  update      Update the oval db to a new version
  vul-info    Search for vulnerability information by definition ID

Flags:
  -h, --help   help for oval-db

Use "oval-db [command] --help" for more information about a command.

Справку по опциям подкоманд можно получить используя опцию -h после любой команды, например:

Command
sudo oval-db auto-update -h

Обновление oval-описаний с сервера Astra Linux

Информация

На сервере Astra Linux хранятся oval-описания только для контейнеров Astra Linux. Для других ОС oval-описания добавляются вручную.

  1. Автоматическое обновление oval-описаний включается командой:

    Command

    sudo oval-db auto-update -e

    Эта команда включает автоматическое обновление oval-описаний, проверяя наличие и актуальность описаний всех возможных версий. Периодичность автоматического обновления oval-описаний может быть изменена в конфигурационном файле /usr/share/oval/conf/daemon.json параметром Interval. События, связанные с обновлением oval-описаний, регистрируются в системном журнале /var/log/syslog:

    Command

    Jul  7 11:15:19 se18-25055 oval_dbd_audit[76490]: oval_dbd.audit|0|root|cafa28faa9564b38958266d01e99a706|oval_dbd.started|success|socketPath=/tmp/oval-dbd/daemon_vul_scanner.sock
    Jul  7 11:15:19 se18-25055 oval_dbd_audit[76490]: oval_dbd.audit|0|root|cafa28faa9564b38958266d01e99a706|oval_dbd.started|success|socketPath=/tmp/oval-dbd/daemon_cli.sock
    Jul  7 12:33:30 se18-25055 oval_dbd_audit[76490]: file update completed successfully
    Jul  7 12:33:30 se18-25055 oval_dbd_audit[76490]: oval_dbd.audit|0|root|cafa28faa9564b38958266d01e99a706|xml.update|success|osVersion=2

    Операции автоматического обновления oval-описаний могут завершаться со следующим результатом:

    • unchanged - файл не изменен (уже актуальный).

    • downloaded - файл скачан (изначально не было в системе).

    • up-to-date - файл обновлен (изначально был в системе).

  2. Для выключения автоматического обновления oval-описаний используется команда:

    Command

    sudo oval-db auto-update -e=false

  3. Для принудительного выполнения обновления oval-описаний используется команда:

    Command

    sudo oval-db update -v all

    Опция -v all указывает, что необходимо обновить все описания. Для сокращения объемов загрузки можно вместо значения all использовать версию системы из файла /etc/os-release, например:

    Command

    sudo oval-db update -v 1.8_x86-64.

Ручное добавление oval-описаний для контейнеров сторонних производителей

Oval-описания для сторонних ОС доступны на Интернет-ресурсах производителей этих ОС. Для загрузки этих описаний и, возможно, их распаковки после загрузки, следуйте инструкциям производителей.

Для добавления загруженного и распакованного файла с oval-описанием в базу данных системы сканирования используется команда:

Command

sudo oval-db load -f <полный_абсолютный_путь_к_файлу> -o <имя_ОС> -v <версия_ОС>

Флаги команды:

  • -f — полный абсолютный путь к добавляемому файлу (путь от корневого каталога файловых системы);

  • -o — название ОС;

  • -v — версия ОС;

Информация для значений флагов-oи-vдоступна в файле /etc/os-release.

Пример для Ubuntu (https://security-metadata.canonical.com/oval/- примеры файлов для Ubuntu):

  1. Загрузить файл с архивом описания:

    Command

    wget https://security-metadata.canonical.com/oval/com.ubuntu.noble.cve.oval.xml.bz2

    Файл com.ubuntu.noble.cve.oval.xml.bz2 будет сохранен в текущем каталоге.

  2. Распаковать загруженный файл:

    Command

    bunzip2 -k com.ubuntu.noble.cve.oval.xml.bz2

    Описание будет распаковано в файл с именем com.ubuntu.noble.cve.oval.xml в текущем каталоге.

  3. Добавить файл в базу данных. Для добавления должно быть указано полное абсолютное имя файла:

    Command

    sudo oval-db load -o ubuntu -v 24.04 -f `pwd`/com.ubuntu.noble.cve.oval.xml

После загрузки в каталоге /usr/share/oval/db/<имя_ОС>/<версия_ОС>/ будут созданы файлы базы данных, в которых описания угроз будут сгруппированы по степени их критичности, и файл manifest.json с общим описанием. Для приведенного выше примера файла Ubuntu Nobble (24.04):

Command
Titlels -l /usr/share/oval/db/noble/24.04/

-rwxrwxr-x 1 root root 37747 июл 3 14:27 CriticalSeverity.xml
-rwxrwxr-x 1 root root 3540432 июл 3 14:27 HighSeverity.xml
-rwxrwxr-x 1 root root 11622073 июл 3 14:27 LowSeverity.xml
-rwxrwxr-x 1 root root 869 июл 3 14:27 manifest.json
-rwxrwxr-x 1 root root 111649695 июл 3 14:27 MediumSeverity.xml

Удаление oval-описаний

Для удаления ранее загруженных oval-описаний используется команда:

Command

sudo oval-db remove -o <имя_ОС> -v <версия_ОС>

Флаги команды задают название и версию ОС, аналогично флагам команды добавления описания.

Восстановление oval-описаний из резервных копия

При выполнении обновления oval-описаний старые старые описания не удаляются, а перемещаются в подкаталог backup. Таким образом создается резервная копия, с помощью которой можно восстановить старые файлы при необходимости. Команда для восстановления:

Command

sudo oval-db restore -o <имя_ОС> -v <версия_ОС>

Флаги команды определяют имя и версию ОС аналогично флагам команд загрузки и удаления.

Интерфейс командной строки системы сканирования уязвимостей (инструмент oval-db)

Все команды инструмента поддерживают опцию -h, позволяющую вывести краткую справку по команде.

Команды инструмента:

  • auto-update -e — включить автоматическое обновление oval-описаний.
  • auto-update -e=false — выключить автоматическое обновление oval-описаний.
  • config — запустить графический интерфейс для настройки конфигурации систем контейнеризации.
  • list — просмотреть статистику загруженных уязвимостей. Необязательные опции команды:
    • -b — добавить в статистику уязвимости из резервной копии;
    • -cпроверять контрольные суммы файлов с описанием уязвимостей.
  • load — загрузить oval-описания вручную. Обязательные опции команды:
    • -f <файл> — полный абсолютный путь к загружаемому файлу;
    • -o <ID> — имя операционной системы, к которой относится загружаемый файл. Соответствует значению параметра ID в файле /etc/os-release.
    • -v <VERSION_ID> — версия операционной системы, к которой относится загружаемый файл. Соответствует значению параметра VERSION_ID в файле /etc/os-release
  • remove — удалить файлы для ОС конкретной версии. Обязательные опции команды:
    • -o <ID> — имя операционной системы, к которой относятся удаляемые файлы. Соответствует значению параметра ID в файле /etc/os-release.
    • -v <VERSION_ID> — версия операционной системы, к которой относятся удаляемые файлы. Соответствует значению параметра VERSION_ID в файле /etc/os-release
  • status — показать состояние службы сканирования.
  • update — обновить базу данных уязвимостей в полуавтоматическом режиме. Обязательные опции команды:
    • -v — версия, до которой следует обновить базу данных.
  • vul-info — показать информацию по конкретной уязвимости с помощью её идентификатора. Пример идентификатора: oval:astra:def:1139872346980661574462931648992835. Параметры команды:
    • обязательные:
      • -i <идентификатор_уязвимости> — идентификатор уязвимости;
      • -o <ID> — имя операционной системы, к которой относятся удаляемые файлы. Соответствует значению параметра ID в файле /etc/os-release.— название ОС;
      • -v <VERSION_ID> — версия операционной системы, к которой относятся удаляемые файлы. Соответствует значению параметра VERSION_ID в файле /etc/os-release.
    • необязательные:
      • -x — печать информации об уязвимости в формате xml.
  • completion <имя_оболочки> — создать сценарий автозавершения для указанной оболочки. Поддерживаемые оболочки:
    • bash;
    • fish;
    • powershell;
    • zsh.

Конфигурационные файлы и настройки системы сканирования уязвимостей

Конфигурация системы сканирования хранится в следующих файлах:

  • /etc/podman.json — настройки сканирования для системы контейнеризации Podman. Если файл отсутствует, то применяются значения по умолчанию:
    Блок кода
    collapsetrue
    {
        "scan_on_image_create": true,
        "scan_on_container_start": true,
        "periodic_scan_time_in_hours": 168
    }
    Значение true включает управляемую параметром функцию, значение false — выключает. Функции параметров:
    • scan_on_image_create — включение/выключение сканирования при создании образов;
    • scan_on_container_start — включение/выключение сканирования при создании контейнеров (запуске образов);
    • periodic_scan_time_in_hours — период сканирования образов в часах;
  • /etc/docker/dockerdaemin.json — настройки сканирования для системы контейнеризации Docker. Если файл отсутствует, то применяются значения по умолчанию:
    Блок кода
    collapsetrue
    {
        "scan_on_image_create": true,
        "scan_on_container_start": true,
        "swarm_rules_enabled": true,
        "periodic_scan_time_in_hours": 168
    }
    Используются те же параметры, что и для Podman и дополнительный параметр swarm_rules_enabled включающий/выключающий использование swarm-правил.
  • /usr/share/oval/conf/daemon.json — настройки параметров сканирования. Если файл отсутствует, то применяются настройки по умолчанию. Содержимое файла, соответствующее настройкам по умолчанию:
    Блок кода
    collapsetrue
    {
      "Database": {
        "Path": "/usr/share/oval/history/scan_results.db",
        "ExpireTime": 48
      },
      "Update": {
        "Auto": true,
        "ManifestUrl": "https://dl.astralinux.ru/artifactory/al-oval/oval_meta.json",
        "TmpDir": "/tmp/oval_temp/",
        "Interval": 24
      }
    }
    Где:
    • Database — блок параметров базы данных уязвимостей:
      • Path — путь к базе данных с результатами сканирования;
      • ExpireTime — время (в часах) после которого результаты сканирования считаются устаревшими.

    • Update — блок параметров автоматического обновления oval-описаний для Astra Linux:

      • Auto — автоматическая проверка наличия обновлений oval-описаний (true/false);

      • ManifestUrl — путь до ресурса с которого будет выполняться обновление;

      • TmpDir — временный каталог для размещения загружаемых файлов;

      • Interval — время (в часах) через которое проверяется нет ли обновлений для файлов уязвимостей;

  • /usr/share/oval/conf/podman.json и /usr/share/oval/conf/docker.json — настройки параметров поиска уязвимостей для систем контейнеризации Podman и Docker. Пример содержимого файла:
    Блок кода
    collapsetrue
    {
        "engine": "docker",
        "allow-run-wo-oval-file": true,
        "levels": {
            "critical": {
                "enabled": true,
                "drop": true
            },
            "high": {
                "enabled": true,
                "drop": true
            },
            "medium": {
                "enabled": true,
                "drop": true
            },
            "low": {
                "enabled": true,
                "drop": true
            },
            "none": {
                "enabled": true,
                "drop": true
            }
        }
    }
    Где:
    • engine — тип системы контейнеризации. Допустимые значения:
      • docker;
      • podman.
    • allow-run-wo-oval-file — управление запуском контейнеров не имеющих oval-описаний (true — разрешено, false — запрещено);
    • levels — параметры для различных уровней критичности уязвимостей:
      • enabled — управление сканированием на уязвимости для данного уровня критичности (true - сканирование включено, false - сканироавfние выключено);
      • drop — управление запуском контейнера при обнаружении уязвимости (true — запуск запрещен, false - запуск разрешен).
  • /usr/share/oval/db — база данных уязвимостей;
  • /usr/share/oval/db/backup — каталог для сохранения резервных копий oval-описаний при их обновлении.

Сканирование уязвимостей в ручном режиме

Для сканирования уязвимостей в ручном режиме можно использовать инструмент командной строки vul-scanner, выполняющий сканирование напрямую без использования систем контейнеризации. Краткая справка по опциям инструмента доступна с помощью опций -h, --help и команды help. Все команды инструмента поддерживают опцию -h, выводящую справку по команде.
Команды инструмента:

  • scan — сканировать на наличие уязвимостей. Опции команды:
  •   -e <имя> — указание кода системы контейнеризации. Поддерживаются следующие системы:
    • 1 — docker;
    • 2 — podman.
  •  -i <идентификатор_контейнера — указание идентификатора проверяемого контейнера, обязательная опция;
  • -m <путь> — указание пути к проверяемому контейнеру, обязательная опция;
  • -p — указание, что проверка является периодической, период сканирования определяется в конфигурационных файлах с параметрами сканирования для системы контейнеризации, к которой относится контейнер.

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

Command
sudo vul-scanner scan -e 1 -i c00b5527def2d8134fde4fc8cbd832ab101689c0294e4dc5d7362f9364fdc273 -m /var/lib/containers/storage/overlay/c00b5527def2d8134fde4fc8cbd832ab101689c0294e4dc5d7362f9364fdc273/diff