Требования CIS, STIG или внутренней политики бессмысленно проверять вручную по таблице: конфигурация меняется, а доказательства устаревают. OpenSCAP читает SCAP-контент, состоящий из описания проверок XCCDF и машинных проверок OVAL, и сравнивает с ним настройки сервера. Результат — отчёт с оценкой по каждому правилу и, при желании, скрипт исправлений. Разберём полный цикл на своём сервере.
Что именно проверяет OpenSCAP
OpenSCAP — не антивирус и не сканер уязвимостей пакетов. Он отвечает на вопрос, выполнены ли требования выбранного профиля: настроен ли аудит, запрещён ли вход root по SSH, выставлены ли права на файлы, включён ли firewall. Проверки бывают декларативными и основанными на OVAL. Часть правил требует перезагрузки или ручного решения, поэтому отчёт всегда содержит не только «пройдено» и «провалено».
Сам движок не содержит политик: их поставляет пакет SCAP Security Guide. Контент привязан к выпуску дистрибутива, поэтому для Debian 12, Ubuntu 22.04 и RHEL 9 нужны разные файлы. Профиль от другой версии не даёт корректного результата.
Установка и поиск контента
В Debian и Ubuntu сканер ставится из openscap-scanner, а профили — из пакетов ssg-*. В RHEL, Fedora, AlmaLinux и Rocky Linux оба компонента входят в openscap-scanner и scap-security-guide. После установки перечислите доступные наборы данных. Для Ubuntu 22.04 используется пакет ssg-debderived, для Debian 12 — ssg-debian, а для RHEL — scap-security-guide.
sudo apt install openscap-scanner ssg-debderived
oscap --version
ls /usr/share/xml/scap/ssg/content/ssg-*-ds.xml
Файлы с суффиксом -ds.xml — это SCAP source data stream, единый контейнер с профилями и проверками. Именно его указывают в командах. Если нужного выпуска нет в репозитории, обновите пакеты или используйте контент для поддерживаемой версии, а не произвольный файл из интернета.
Выбор профиля
Команда oscap info показывает список профилей и их идентификаторы. Идентификатор нужно копировать целиком: сокращённое имя вроде cis может совпасть с другим профилем. Для сервера обычно берут level 1, для ужесточённой системы — level 2, для проверки специфических требований — STIG или PCI DSS.
oscap info /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml
oscap info --profiles /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml
Идентификаторы различаются: у Ubuntu 22.04 профиль CIS называется xccdf_org.ssgproject.content_profile_cis_level1_server, у RHEL 9 — ..._cis. Всегда копируйте точный идентификатор из вывода и прочитайте описание профиля перед первым сканом.
Первый скан
Запускайте оценку от root: многие проверки читают защищённые файлы и состояние служб. Сохраняйте XML с результатами и HTML-отчёт. Сканирование не меняет систему, если не указан --remediate, поэтому первый прогон безопасен.
sudo oscap xccdf eval \
--profile xccdf_org.ssgproject.content_profile_cis_level1_server \
--results /var/tmp/oscap-results.xml \
--report /var/tmp/oscap-report.html \
/usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml
Код возврата 0 означает, что все проверенные правила пройдены, 2 — есть провалы. В shell-скриптах это нужно учитывать: set -e прервёт выполнение после первого неудачного правила. Оборачивайте вызов в || true, если отчёт важнее кода возврата, и отдельно анализируйте XML.
Храните отчёты с датой в имени в защищённом каталоге. Не отправляйте XML во внешние сервисы: он раскрывает состав пакетов, сетевые настройки и версии служб.
Как читать отчёт
В HTML-отчёте каждое правило получает статус:
pass— требование выполнено,fail— есть отклонение;notapplicable— правило не относится к системе, например проверка SELinux на Ubuntu;notchecked— не хватает зависимости или проверка невозможна в контейнере.
Смотрите не только на число провалов, но и на важность. Начните с высокого уровня критичности и с того, что действительно входит в вашу политику.
oscap xccdf generate report /var/tmp/oscap-results.xml > report.html
ls -lh /var/tmp/oscap-*.xml
Ремедиация без сюрпризов
OpenSCAP может сгенерировать Bash- или Ansible-исправления. Никогда не запускайте их сразу на рабочем сервере: правило может отключить пароль root, изменить SSH или удалить пакет. Сначала сформируйте скрипт, прочитайте его и примените на тестовой машине или снапшоте.
oscap xccdf generate fix \
--profile xccdf_org.ssgproject.content_profile_cis_level1_server \
--fix-type bash \
/usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml > /var/tmp/fix.sh
less /var/tmp/fix.sh
sudo bash /var/tmp/fix.sh
Для парка машин удобнее --fix-type ansible. Флаг --remediate применяет исправления во время скана, но тогда сложнее понять, что изменилось. После ремедиации перезапустите службы и проверьте доступ по SSH в отдельной сессии.
Тонкая настройка профиля
Не все правила подходят инфраструктуре: иногда требование конфликтует с приложением или недоступно. Правильный путь — tailoring-файл, а не правка исходного контента. Его создают в SCAP Workbench или копируют профиль из datastream, отключают лишние правила и применяют при каждом скане. Проверьте tailoring на тестовой машине перед рабочим сервером.
oscap xccdf eval --tailoring-file tailoring.xml \
--profile xccdf_org.ssgproject.content_profile_cis_level1_server_customized \
/usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml
В tailoring-файле у правила указывают selected="false". Подставьте идентификатор профиля из сохранённого tailoring-файла. Каждое исключение фиксируйте с причиной и сроком пересмотра, иначе через полгода никто не вспомнит, почему требование отключено. Обновление SCAP-контента может изменить идентификаторы и логику проверок, поэтому после обновления пакетов прогоняйте скан заново и сверяйте tailoring.
Регулярный режим и ограничения
Запускайте проверку по расписанию через systemd-таймер или cron, но не чаще раза в неделю: полный скан нагружает диск. Сравнивайте статусы между запусками, а при нескольких серверах собирайте XML централизованно с ограниченным доступом.
Помните, что «зелёный» отчёт не гарантирует безопасность: SCAP проверяет известные настройки, а не логику приложений и не свежесть патчей. Контент может давать ложные срабатывания, а исправления — ломать совместимость. Используйте OpenSCAP как измеримый чек-лист и дополняйте его обновлениями, аудитом журналов и тестами восстановления.
Итог
OpenSCAP превращает требования стандарта в повторяемую проверку. Установите сканер и SCAP Security Guide, выберите точный профиль через oscap info, сохраните XML и HTML-отчёт, разберите статусы правил. Ремедиацию применяйте только после чтения скрипта и теста на копии, а исключения оформляйте tailoring-файлом. Регулярный скан и контроль различий дадут понятную картину соответствия вместо разовой формальности.