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

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

После первого запуска, rst настроит автодополнение команд по нажатию <tab> ⭾ (требуется перезагрузка терминала).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Тест проверяет доступ пользователя ко всем существующим файлам в домашнем каталоге пользователя, а также /tmp и /var/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)

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

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

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