rhel8_cis
RHEL 8 CIS
Настройка машины RHEL/Rocky/AlmaLinux 8 для соответствия CIS
На основе CIS RedHat Enterprise Linux 8 Benchmark v3.0.0 - 11-10-2023
Ищете поддержку?
Сообщество
Присоединяйтесь к нашему Discord серверу, чтобы задавать вопросы, обсуждать возможности или просто пообщаться с другими пользователями Ansible-Lockdown.
Важно
Этот инструмент внесет изменения в систему, которые могут иметь непредвиденные последствия. Это не инструмент аудита, а скорее инструмент для исправления, который нужно использовать после проведения аудита.
Тестирование — это самое важное, что вы можете сделать.
Режим проверки не поддерживается! Роль завершится в режиме проверки без ошибок, но он не поддерживается и следует использовать с осторожностью. Для проверки совместимости следует использовать роль RHEL8-CIS-Audit или сканер соответствия.
Эта роль была разработана для чистой установки операционной системы. Если вы настраиваете ее для существующей системы, пожалуйста, проверьте эту роль на предмет необходимых изменений для вашего сайта.
Чтобы использовать версию релиза, укажите основную ветку и соответствующий релиз/тег для контрольного списка CIS, с которым вы хотите работать.
Если вы переходите между основными выпусками, например, с v2.0.0 на v3.0.0, изменения в контрольных списках и контролях значительны, рекомендуется начать как новый стандарт, а не обновлять.
Контейнеры ссылаются на vars/is_container.yml — это пример и должен быть обновлен в соответствии с вашими требованиями.
Не забывайте о тестировании??
Соответствие уровню безопасности для CIS
Можно запускать только контроли уровня 1 или уровня 2 для CIS. Это управляется с помощью тегов:
- level1_server
- level1_workstation
- level2_server
- level2_workstation
Контроль, найденный в файле defaults main, также должен это отражать, так как этот контроль отвечает за тестирование, которое происходит в случае использования компонента аудита.
Переход с предыдущего релиза
Релиз CIS всегда содержит изменения, настоятельно рекомендуется ознакомиться с новыми ссылками и доступными переменными. Они значительно изменились с момента начального выпуска ansible-lockdown. Сейчас это совместимо с python3, если он установлен как интерпретатор по умолчанию. Это требует предварительной настройки, которая настраивает систему соответствующим образом.
Дополнительные сведения можно найти в Changelog.
Аудит (новое)
Это можно включить или выключить в файле defaults/main.yml с переменной rhel8cis_run_audit. Значение по умолчанию — false, подробнее см. в вики. Файл по умолчанию также заполняет проверки goss, чтобы проверять только контролы, которые были включены в роль ansible.
Это гораздо более быстрое и легкое решение для проверки соответствия конфигурации и активных/текущих настроек, где это возможно.
Новая форма аудита была разработана с использованием небольшого (12MB) go бинарника под названием goss вместе с соответствующими конфигурациями для проверки. Без необходимости в инфраструктуре или других инструментах. Этот аудит не только проверит, что конфигурация имеет правильные настройки, но и нацелен на фиксирование того, что она работает с этой конфигурацией, а также пытается устранить ложноположительные результаты в процессе.
Смотрите RHEL8-CIS-Audit.
Пример резюме аудита
Это основано на образе vagrant с включенными выборами. Например, без GUI или брандмауэра. Примечание: во время аудита проводятся дополнительные тесты, так как мы проверяем конфигурацию и текущее состояние.
ok: [default] => {
"msg": [
"Результаты предварительного исправления: ['Общее время: 5.454s', 'Количество: 338, Неуспешно: 47, Пропущено: 5'].",
"Результаты после исправления: ['Общее время: 5.007s', 'Количество: 338, Неуспешно: 46, Пропущено: 5'].",
"Полная информация доступна в /var/tmp",
""
]
}
PLAY RECAP *******************************************************************************************************************************************
default : ok=270 changed=23 unreachable=0 failed=0 skipped=140 rescued=0 ignored=0
Документация
- Читать документацию
- Начало работы
- Настройка ролей
- Конфигурация на хост
- Как использовать роль наилучшим образом
Требования
Общие:
Базовые знания Ansible. Ниже приведены ссылки на документацию Ansible, чтобы помочь вам начать работать с Ansible.
Установленный и работающий Ansible и/или Tower. Это включает все базовые конфигурации Ansible/Tower, установленные необходимые пакеты и подготовленную инфраструктуру.
Пожалуйста, ознакомьтесь с задачами в этой роли, чтобы понять, что делает каждый контроль. Некоторые задачи могут быть разрушительными и привести к непредвиденным последствиям в живой производственной системе. Также ознакомьтесь с переменными в файле defaults/main.yml.
Технические зависимости:
RHEL/AlmaLinux/Rocky/Oracle 8 - Другие версии не поддерживаются.
- AlmaLinux/Rocky тестировались на 8.8 (включение крипто (разделы 1.10 и 1.11) нарушает обновление или установку: 01 июля 2021)
- Доступ для загрузки или добавления бинарного файла goss и контента в систему, если используется аудит (доступны и другие варианты загрузки контента в систему).
- Python3.8
- Ansible 2.11+
- python-def (должен быть включен в RHEL 8)
- libselinux-python
Переменные роли
Эта роль разработана так, чтобы конечному пользователю не нужно было редактировать задачи непосредственно. Все настройки должны производиться через файл defaults/main.yml или с помощью дополнительных переменных в проекте, задании, рабочем процессе и т.д.
Теги
Доступны многие теги для повышения точности контроля. Каждый контроль имеет свой собственный набор тегов, указывая уровень, оценен/неоценен, какой элемент ОС он относится, является ли он патчем или аудитом и номер правила.
Ниже приведён пример раздела тегов от контроля внутри этой роли. Используя этот пример, если вы установите выполнение с пропуском всех контролей с тегом services, эта задача будет пропущена. Обратно действовать также возможно, когда выполняются только контролы, помеченные тегом services.
tags:
- level1-server
- level1-workstation
- scored
- avahi
- services
- patch
- rule_2.2.4
Вклад сообщества
Мы призываем вас (сообщество) вносить свой вклад в эту роль. Пожалуйста, прочитайте ниже приведенные правила.
- Ваша работа выполняется в своей собственной отдельной ветке. Убедитесь, что вы подписали и GPG подписали все коммиты, которые вы планируете объединить.
- Все запросы на слияние сообщества объединяются в ветку devel.
- Запросы на слияние в devel подтвердят, что ваши коммиты имеют GPG-подпись, подписаны и проходят функциональное тестирование перед тем, как быть утвержденными.
- После объединения ваших изменений и более детального рассмотрения, авторизованный участник объединит ваши изменения в основную ветку для нового релиза.
Известные проблемы
cloud0init - из-за ошибки это перестанет работать, если noexec добавляется в /var. rhel8cis_rule_1_1_3_3
Репозитории Almalinux BaseOS, EPEL и многих облачных провайдеров не позволяют repo_gpgcheck для rule_1.2.3, это вызовет проблемы во время выполнения плейбука, если не будет найдено обходного решения.
Тестирование пайплайна
использует:
- ansible-core 2.12
- ansible collections - загружает последнюю версию на основе файла требований
- выполняет аудит с использованием ветки devel
- Это автоматизированное тестирование, которое происходит при запросах на слияние в devel
Локальное тестирование
Molecule можно использовать для работы над этой ролью и тестирования в различных сценариях.
примеры
molecule test -s default
molecule converge -s wsl -- --check
molecule verify -s localhost
Локальное тестирование использует:
- ansible 2.13.3
- molecule 4.0.1
- molecule-docker 2.0.0
- molecule-podman 2.0.2
- molecule-vagrant 1.0.0
- molecule-azure 0.5.0
Дополнения
- pre-commit можно протестировать и запустить из директории
pre-commit run
Благодарности
Огромная благодарность великолепному сообществу и всем его участникам. Особая благодарность и признательность оригинальным авторам и сопровождающим: Josh Springer, Daniel Shepherd, Bas Meijeri, James Cassell, Mike Renfro, DFed, George Nalen, Mark Bolwell.
Apply the DISA RHEL 8 CIS
ansible-galaxy install ansible-lockdown/RHEL8-CIS