ROSA Security test



Техническое описание

Общее

Интерфейс: /usr/share/rosa-security-test/rst.py
Назначение: Функциональный тест системы
Метод использования: Вызов из командной строки
ФТБ: FDP_RSI_EXT.1
FIA_UID.2
FMT_MSA.1
FPT_MTR_EXT.1
FPT_TST.1
FPT_STM.1

Параметры запуска

-h --help Вызов справки
-g --with-interface Запуск тестирования c графическим интерфейсом
-u --ultimate-mode Ультимативный режим запуска: при ошибках пользователь имеет право только на завершение сессии.
--fault-code Возвращать вместо кол-ва не пройденных тестов номер первого проваленного теста
-l --logtype "nolog" - без ведения лога
"file" - вести лог в файл см. --logpath
"journal" - вести лог в journald
"std" - вести лог в stdout\stderr
-p --logpath При --logtype file указывает директорию в которую нужно сохранять лог.
-c --no-colors Не вставляет ANSI-коды подкрашивающие текст. Будет полезно, если лог не будет читаться с помощью терминала.
-d --debug Режим подробного логирования. Только при --logtype journal или --logtype file.

Сообщения об ошибках

ROSA Security Test имеет два вида ошибок: общие - ошибки работы самой проверяющей программы, включая неверные параметры запуска и синтаксические ошибки в коде; индивидуальные - ошибки проверки, уникальные для каждого теста, отражающие текущий статус функций безопасности. Оба вида ошибок присутствуют в логе.

Описания тестов


Проверка идентификации (UnidentifiedProcesses)

Проверка виртуализации служебных файлов (OverlayTest)

Тест проверяет смонтированы ли каталоги оверлея(механизм подстановки пользовательского окружения согласно уровню конфиденциальности): ".config", ".cache", ".local". Если хоть один из них не будет смонтирован - тест будет провален.

Проверка механизма подписей (IntegrityMeasurement)

Проверка ограничения возможности пользователя по созданию файлов без контекста безопасности (FileWithoutContext)

Поддержка MLS при операциях над файлами (FileOperationsWithMLS)

Тест манипулирует определенной структурой файлов и каталогов, пытаясь выявить проблемы при маркировки новых объектов файловой системы. Структура выглядит следующим образом:

. ├── dirA │ └── test.txt └── dirB └── test.txt

Тестирование осуществляется для всех директорий внутри домашней директории пользователя, включая её саму, и делится на 3 этапа:

Этапы "Создания" и "Копирования" завершаются специальной(дополняющей) проверкой на корректность контекстных меток безопасности каждого объекта структуры(рекурсивно):

В остальных случаях, при ошибке доступа к объекту, его проверка игнорируется.

Проверка ограничений пользователя на доступ к файлам и директориям (DeniedFileDirAccess)

Тест проверяет доступ пользователя ко всем существующим файлам в домашнем каталоге пользователя и /tmp на соответствие модели доступа.

Далее следует проверка возможности пользователя осуществлять запись в корневые директории(кроме /tmp). Если запись будет произведена успешно - тест будет провален.

Проверка сервисов аудита (AuditServices)

Тест проверяет статусы сервисов осуществляющих аудит: systemd-jouranld-service, rsyslog-service, auditd.service, rosa-central-panel-serverd.service. Если хотя бы один сервис не запущен - тест будет провален.

Помимо этого тест анализирует последние 10 записей журнала по каждому сервису с целью обнаружения ключевых слов, на которые стоит обратить внимание: wrong, error, invalid, fault, terminated, killed, suspended.

Проверка ограничений пользователя на установку программного обеспечения (AccessToSoftwareInstallation)

Тест пытается установить и удалить пакет. Если хотя бы одна операция будет завершена успешно - тест будет провален.

Проверка ограничений пользователя на изменение системного времени (AccessToChangeSystemTime)

Тест пытается изменить системное время. Если попытка будет успешной - тест будет провален.

Общая проверка режима безопасности (1CommonTest)

Тест проверяет статус selinux. Если он находится в режиме disabled или permissive - тест будет провален. Затем тест проверяет включена ли поддержка multi-level security(mls), если нет - тест будет провален.

Проверка границ пользовательского пространства (FilePermissions)

Тест проверяет все файлы и директории(объекты) системы, кроме разрешенных пользователю для записи или чтения.

Также исключены из проверки:

В первую очередь тест проверит параметры монтирования /proc на наличие "hidepid=2". Если параметр не задан, то тест будет провален.

В следующих ситуациях тест будет провален: