rhel8_cis

RHEL 8 CIS

Настройка машины RHEL/Rocky/AlmaLinux 8 для соответствия CIS

На основе CIS RedHat Enterprise Linux 8 Benchmark v3.0.0 - 11-10-2023


Org Stars Stars Forks followers Twitter URL

Discord Badge

Release Branch Release Tag Release Date

Main Pipeline Status

Devel Pipeline Status Devel Commits

Issues Open Issues Closed Pull Requests

License


Ищете поддержку?

Lockdown Enterprise

Поддержка Ansible

Сообщество

Присоединяйтесь к нашему 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

bug 1839899

Репозитории 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.

Установить
ansible-galaxy install ansible-lockdown/RHEL8-CIS
Лицензия
mit
Загрузки
6
Владелец
Ansible Lockdown is a security baseline automation project sponsored by Mindpoint Group.