cis_ubuntu_2004

Статус сборки Ansible Role Ansible Role Оценка качества Ansible Статус контрольного пропуска Последняя версия GitHub Размер репозитория GitHub

Ansible роль: cis_ubuntu_2004 :computer:

Ansible роль для применения CIS Benchmark для Ubuntu Linux 20.04 LTS.

В настоящее время поддерживаемые и доступные версии:

  • CIS Benchmark для Ubuntu Linux 20.04 LTS v1.1.0
  • CIS Benchmark для Ubuntu Linux 20.04 LTS v1.0.0

Версии

В следующей таблице указаны версии роли, доступные на Ansible Galaxy и GitHub Releases, в соответствии с CIS Benchmark для Ubuntu Linux 20.04 LTS.

Версия CIS Ubuntu 20.04 Бенчмарка Версия Ansible Galaxy Версия метки репозитория
1.0.0 1.0.0, 1.0.1, 1.0.2 1.0.0, 1.0.1, 1.0.2
1.1.0 2.0.0, 2.0.1, 2.1.0, 3.0.0, 3.1.0, 3.2.0 2.0.0, 2.0.1, 2.1.0, 3.0.0, 3.1.0, 3.2.0

1. Установка/Инструкции по загрузке:

Эта роль доступна в Ansible Galaxy. Есть несколько способов установить/загрузить роль cis_ubuntu_2004 на вашем узле управления Ansible, либо из Ansible Galaxy, либо напрямую из репозитория.

Без файла requirements.yml:

  • Установка/Загрузка последней (по умолчанию) доступной версии:

    ansible-galaxy install darkwizard242.cis_ubuntu_2004
    
  • Установка/Загрузка конкретной доступной версии (например, 3.2.0):

    ansible-galaxy install darkwizard242.cis_ubuntu_2004,3.2.0
    
  • Установка/Загрузка конкретной доступной версии ветки из репозитория (например, ветка master, которая всегда будет соответствовать последней доступной версии CIS Ubuntu 20.04 Benchmark):

    ansible-galaxy install darkwizard242.cis_ubuntu_2004,master
    
  • Установка/Загрузка конкретной доступной версии ветки из репозитория (например, ветка feature/cis_version_1.1.0, которая соответствует последним обновлениям для CIS Ubuntu 20.04 Benchmark Version v1.1.0):

    ansible-galaxy install darkwizard242.cis_ubuntu_2004,feature/cis_version_1.1.0
    
  • Установка/Загрузка конкретной доступной версии ветки из репозитория (например, ветка feature/cis_version_1.0.0, которая соответствует последним обновлениям для CIS Ubuntu 20.04 Benchmark Version v1.0.0):

    ansible-galaxy install darkwizard242.cis_ubuntu_2004,feature/cis_version_1.0.0
    

С файлом requirements.yml:

Добавьте в существующий файл requirements.yml вместе с другими вашими ролями или создайте новый, чтобы установить cis_ubuntu_2004.

  • Последняя версия напрямую из Ansible Galaxy.

    - name: darkwizard242.cis_ubuntu_2004
    
  • Конкретная версия напрямую из Ansible Galaxy.

    - name: darkwizard242.cis_ubuntu_2004
      version: 3.2.0
    
  • Конкретная ветка из репозитория.

    - name: cis_ubuntu_2004
      src: https://github.com/darkwizard242/cis_ubuntu_2004
      version: master
    

Установка/Загрузка после добавления в requirements.yml:

ansible-galaxy install -r requirements.yml

ПРИМЕЧАНИЕ: Установка роли, как упомянуто выше, просто загружает роль для ее использования в ваших играх Ansible. Можно ознакомиться с инструкциями по установке/загрузке ролей здесь.

2. Несколько соображений:

Бенчмарки, касающиеся разделения диска и его точек монтирования из Раздела 1, не применяются в этой роли. Причина проста: архитектура системы и схема диска у каждого человека или организации могут сильно отличаться. Я рекомендую применить их самостоятельно. Вот список этих бенчмарков:

  • 1.1.10 Обязательно наличие отдельного раздела для /var (Автоматизировано)
  • 1.1.11 Обязательно наличие отдельного раздела для /var/tmp (Автоматизировано)
  • 1.1.12 Убедитесь, что раздел /var/tmp включает опцию nodev (Автоматизировано)
  • 1.1.13 Убедитесь, что раздел /var/tmp включает опцию nosuid (Автоматизировано)
  • 1.1.14 Убедитесь, что раздел /var/tmp включает опцию noexec (Автоматизировано)
  • 1.1.15 Обязательно наличие отдельного раздела для /var/log (Автоматизировано)
  • 1.1.16 Обязательно наличие отдельного раздела для /var/log/audit (Автоматизировано)
  • 1.1.17 Обязательно наличие отдельного раздела для /home (Автоматизировано)
  • 1.1.18 Убедитесь, что раздел /home включает опцию nodev (Автоматизировано)
  • 1.1.19 Убедитесь, что для разделов сменных носителей установлена опция nodev (Ручное)
  • 1.1.20 Убедитесь, что для разделов сменных носителей установлена опция nosuid (Ручное)
  • 1.1.21 Убедитесь, что для разделов сменных носителей установлена опция noexec (Ручное)

Также не были выполнены следующие бенчмарки из Раздела 4:

  • 4.2.1.5 Убедитесь, что rsyslog настроен для отправки логов на удаленный хост (Автоматизировано)
  • 4.2.1.6 Убедитесь, что удаленные сообщения rsyslog принимаются только на назначенных лог-хостах. (Ручное)
  • 4.3 Убедитесь, что logrotate настроен (Ручное)

3. Требования

Отсутствуют.

4. Переменные роли

Переменные по умолчанию, используемые в задачах роли, находятся в defaults/main/.

defaults/main/main.yml состоит из переменных, относящихся ко всем разделам CIS, таких как:

ubuntu_2004_cis_section1: true
ubuntu_2004_cis_section2: true
ubuntu_2004_cis_section3: true
ubuntu_2004_cis_section4: true
ubuntu_2004_cis_section5: true
ubuntu_2004_cis_section6: true

Цель упомянутых переменных — указать, что все задачи, относящиеся к этим разделам, должны быть применены через роль cis_ubuntu_2004.

Переменные для каждого из разделов находятся в своих файлах.

Параметры роли по умолчанию для всех элементов в роли cis_ubuntu_2004 могут быть переопределены путем передачи их в плейбук или любым другим методом приоритета переменных.

Важные переменные

Бенчмарки по повышению безопасности CIS Ubuntu 20.04 требуют удаления многих служб, уязвимых для атак, известных уязвимостей или которые следует отключить, если они не нужны. В соответствии с бенчмарком по умолчанию все эти службы будут удалены, и их значение для переменных установлено на false. Однако, если вам все еще необходимо использовать эти службы по какой-либо причине, пожалуйста, измените их значения на true, чтобы при применении роли в плейбуке задачи на удаление этих служб могли быть пропущены.

Существует также множество других переменных, которые определяют, желательна ли конкретная служба в системе (например, демон SSH), параметры для настройки различных инструментов (например, auditd) и т. д. Они также могут быть переопределены в плейбуке.

# Установите true, если требуется IPv6.
ubuntu_2004_cis_require_ipv6: false

# Установите true, если требуется беспроводная сеть.
ubuntu_2004_cis_require_wireless: false

# Установите true, если система должна работать как маршрутизатор.
ubuntu_2004_cis_require_router: false

# Установите false, если демон SSH не требуется.
ubuntu_2004_cis_require_ssh_server: true

# Переменная для хранения сильных шифров для демона SSH.
ubuntu_2004_cis_require_ssh_ciphers: [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr

# Переменная для хранения сильных MAC алгоритмов для демона SSH.
ubuntu_2004_cis_require_ssh_macs: [email protected],[email protected],hmac-sha2-512,hmac-sha2-256

# Переменная для хранения сильных алгоритмов обмена ключами для демона SSH.
ubuntu_2004_cis_require_ssh_kexalgorithms: curve25519-sha256,[email protected],diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256

# Переменная для хранения времени ожидания клиента в секундах для демона SSH.
ubuntu_2004_cis_require_ssh_clientaliveinterval: '300'

# Переменная для хранения максимального количества ожиданий клиента для демона SSH.
ubuntu_2004_cis_require_ssh_clientalivecountmax: '3'

# Переменная для хранения времени ожидания входа в систему в секундах для демона SSH.
ubuntu_2004_cis_require_ssh_logingracetime: '60'

# Переменная для хранения разрешенных пользователей для демона SSH.
ubuntu_2004_cis_require_ssh_allowusers: ubuntu vagrant

# Переменная для хранения разрешенных групп для демона SSH.
ubuntu_2004_cis_require_ssh_allowgroups: ubuntu vagrant

# Переменная для хранения запрещенных пользователей для демона SSH.
ubuntu_2004_cis_require_ssh_denyusers: bogus dummy

# Переменная для хранения запрещенных групп для демона SSH.
ubuntu_2004_cis_require_ssh_denygroups: bogus dummy

# Переменная для хранения минимальной длины и класса символов для качества пароля PAM.
ubuntu_2004_cis_require_pam_pwquality:
  - key: 'minlen'
    value: '14'
  - key: 'minclass'
    value: '4'

# Переменная для хранения значения PASS_MAX_DAYS для истечения срока действия пароля.
ubuntu_2004_cis_require_passmaxdays: '365'

# Переменная для хранения значения PASS_MIN_DAYS для смены пароля.
ubuntu_2004_cis_require_passmindays: '1'

# Переменная для хранения значения INACTIVE, чтобы установить период неактивности пароля по умолчанию на 30 дней.
ubuntu_2004_cis_require_passwarnage: '7'

# Переменная для хранения значения PASS_WARN_AGE для установки уведомления о сроке действия пароля в днях.
ubuntu_2004_cis_require_passinactive: '30'

# Переменная для хранения значения времени ожидания оболочки в секундах.
ubuntu_2004_cis_require_shell_timeout: '900'

# Переменная для хранения значения имени группы, которая будет необходима для использования выполнения su.
ubuntu_2004_cis_require_su_group: sugroup

# Переменная для хранения лог-файла, в который выполнение задания cron передает данные для 6.1.1 задачи аудита разрешений файлов (Ручное) для проверки.
ubuntu_2004_cis_require_audit_system_file_permissions_logfile: /var/log/6_1_1_cis_audit_system.log

# может быть одним из 'iptables' или 'nftables' или 'ufw'.
ubuntu_2004_cis_firewall: ufw

# ЕСЛИ используется 'ufw', установка в 'yes' позволяет настроить профиль git приложения UFW.
ubuntu_2004_cis_section3_rule_3_5_1_7_ufw_require_git_profile: yes

# ЕСЛИ используется 'ufw', установка в 'yes' позволяет настроить профиль HTTP приложения UFW.
ubuntu_2004_cis_section3_rule_3_5_1_7_ufw_require_http_profile: yes

# ЕСЛИ используется 'ufw', установка в 'yes' позволяет настроить профиль HTTPS приложения UFW.
ubuntu_2004_cis_section3_rule_3_5_1_7_ufw_require_https_profile: yes

# ЕСЛИ используется 'ufw', установка в 'true' по умолчанию отклоняет все входящие соединения. Работает аналогично `ufw default deny incoming`. Установите в `false`, если это не требуется.
ubuntu_2004_cis_section3_rule_ufw_default_deny_incoming: true

# ЕСЛИ используется 'ufw', установка в 'true' по умолчанию отклоняет все исходящие соединения. Работает аналогично `ufw default deny outgoing`. Установите в `false`, если это не требуется.
ubuntu_2004_cis_section3_rule_ufw_default_deny_outgoing: true

# ЕСЛИ используется 'ufw', установка в 'true' по умолчанию отклоняет все маршрутизируемые соединения. Работает аналогично `ufw default deny routed`. Установите в `false`, если это не требуется.
ubuntu_2004_cis_section3_rule_ufw_default_deny_routed: true

# ЕСЛИ используется 'nftables', установка в 'true' по умолчанию отклоняет все входящие/маршрутизируемые/исходящие соединения, оставляя систему недоступной. Установите в `false`, если это не требуется или если хотите потерять подключение.
ubuntu_2004_cis_section3_rule_3_5_2_8: true

# ЕСЛИ используется 'iptables', установка в 'true' по умолчанию отклоняет все входящие соединения по ipv4, оставляя систему недоступной. Установите в `false`, если это не требуется или если хотите потерять подключение.
ubuntu_2004_cis_section3_rule_iptables_ipv4_default_deny_input: true

# ЕСЛИ используется 'iptables', установка в 'true' по умолчанию отклоняет все исходящие соединения по ipv4, оставляя систему недоступной. Установите в `false`, если это не требуется или если хотите потерять подключение.
ubuntu_2004_cis_section3_rule_iptables_ipv4_default_deny_output: true

# ЕСЛИ используется 'iptables', установка в 'true' по умолчанию отклоняет все маршрутизируемые соединения по ipv4, оставляя систему недоступной. Установите в `false`, если это не требуется или если хотите потерять подключение.
ubuntu_2004_cis_section3_rule_iptables_ipv4_default_deny_forward: true

# ЕСЛИ используется 'iptables' и включен ipv6, установка в 'true' по умолчанию отклоняет все входящие соединения по ipv4, оставляя систему недоступной. Установите в `false`, если это не требуется или если хотите потерять подключение.
ubuntu_2004_cis_section3_rule_iptables_ipv6_default_deny_input: true

# ЕСЛИ используется 'iptables' и включен ipv6, установка в 'true' по умолчанию отклоняет все исходящие соединения по ipv4, оставляя систему недоступной. Установите в `false`, если это не требуется или если хотите потерять подключение.
ubuntu_2004_cis_section3_rule_iptables_ipv6_default_deny_output: true

# ЕСЛИ используется 'iptables' и включен ipv6, установка в 'true' по умолчанию отклоняет все маршрутизируемые соединения по ipv4, оставляя систему недоступной. Установите в `false`, если это не требуется или если хотите потерять подключение.
ubuntu_2004_cis_section3_rule_iptables_ipv6_default_deny_forward: true

# может быть одним из 'ntp' или 'chrony' или 'systemd-timesyncd'.
ubuntu_2004_cis_time_synchronization: systemd-timesyncd

# Лимит обратного хранилища auditd для хранения достаточного количества записей при загрузке.
ubuntu_2004_cis_auditd_backloglimit: '8192'

# Размер файла для логов auditd. Установите по мере необходимости.
ubuntu_2004_cis_auditd_maxlogfile: '25'

# Действие, которое следует предпринять, когда логи auditd достигли максимального размера. Установите по мере необходимости.
ubuntu_2004_cis_auditd_maxlogfileaction: keep_logs

# Действие, которое следует предпринять при нехватке места для auditd. Установите по мере необходимости.
ubuntu_2004_cis_auditd_spaceleftaction: email

# Кому отправить электронное письмо для auditd. Установите по мере необходимости.
ubuntu_2004_cis_auditd_actionmailacct: root

# Опция для остановки, когда логи аудита заполнены. Установите по мере необходимости.
ubuntu_2004_cis_auditd_adminspaceleftaction: halt

# Пользователи, которым разрешено планировать задания cron.
ubuntu_2004_cis_cron_allow_users:
  - root
  - ubuntu

# Пользователи, которым разрешено использовать 'at' для планирования задач.
ubuntu_2004_cis_at_allow_users:
  - root
  - ubuntu

# Установите true, если требуется X Windows System.
ubuntu_2004_cis_require_xwindows_system: false

# Установите true, если требуется CUPS.
ubuntu_2004_cis_require_cups: false

# Установите true, если требуется DHCP сервер.
ubuntu_2004_cis_require_dhcp_server: false

# Установите true, если требуется LDAP сервер.
ubuntu_2004_cis_require_ldap_server: false

# Установите true, если требуется NFS сервер.
ubuntu_2004_cis_require_nfs_server: false

# Установите true, если требуется DNS сервер.
ubuntu_2004_cis_require_dns_server: false

# Установите true, если требуется FTP сервер.
ubuntu_2004_cis_require_ftp_server: false

# Установите true, если требуется HTTP (apache2) сервер.
ubuntu_2004_cis_require_http_server: false

# Установите true, если требуются серверы IMAP и POP3.
ubuntu_2004_cis_require_imap_pop3_server: false

# Установите true, если требуется демон Samba.
ubuntu_2004_cis_require_samba_server: false

# Установите true, если требуется сервер Squid.
ubuntu_2004_cis_require_squid_server: false

# Установите true, если требуется сервер SNMP.
ubuntu_2004_cis_require_snmp_server: false

# Чтобы избежать настройки postfix в режиме работы только локально. Определите как false, если требуется, чтобы postfix работал в режиме только локально.
ubuntu_2004_cis_require_mail_server: true

# Установите true, если требуется RSYNC.
ubuntu_2004_cis_require_rsyncd_server: false

# Установите true, если требуется сервер NIS.
ubuntu_2004_cis_require_nis_server: false

# Установите true, если требуется клиент NIS.
ubuntu_2004_cis_require_nis_client: false

# Установите true, если требуется клиент RSH.
ubuntu_2004_cis_require_rsh_client: false

# Установите true, если требуется клиент TALK.
ubuntu_2004_cis_require_talk_client: false

# Установите true, если требуется клиент TELNET.
ubuntu_2004_cis_require_telnet_client: false

# Установите true, если требуется клиент LDAP.
ubuntu_2004_cis_require_ldap_client: false

# Установите true, если требуется клиент RPCBIND.
ubuntu_2004_cis_require_rpcbind_client: false

5. Зависимости

Отсутствуют.

6. Примеры плейбуков:

Примеры плейбуков предоставлены в папке playbook-examples. Они содержат плейбуки с параметрами по умолчанию и индивидуальными требованиями.

ПРИМЕЧАНИЕ: Учитывая, что некоторые из CIS контролей в области сетевой безопасности могут привести к сбоям в системе и оставить пользователя без возможности войти в систему, я рекомендую применить или провести эксперименты, используя плейбук playbook-examples/playbook_with_custom_firewall_changes.yml в первую очередь. Измените тип соединения и хосты в плейбуке, чтобы они соответствовали вашим потребностям.

Применение примеров:

Если вы используете любой из предоставленных плейбуков в папке примеров, вы можете выбрать один из них и выполнить следующую команду, чтобы применить его:

ansible-playbook playbook_with_defaults.yml
ansible-playbook playbook_with_custom_firewall_changes.yml
ansible-playbook playbook_with_ipv6.yml
ansible-playbook playbook_with_ufw.yml

Предположим, что вы создадите свой собственный пользовательский плейбук с именем myplaybook.yml, вы можете просто запустить его с помощью следующей команды.

ansible-playbook myplaybook.yml

Применение примеров с использованием тегов:

Все задачи в роли имеют теги, назначенные им на основе уровня CIS, номера правила и номера раздела. По умолчанию будут применяться контроли как уровня 1, так и уровня 2. Следовательно, если вы хотите выполнить индивидуальные применения для уровней, номеров правил или разделов - вы можете использовать следующие примеры:

Пример только для применения контролей уровня 1:

ansible-playbook <playbook-name-here>.yml --tags "level_1"

Пример только для применения контролей уровня 2:

ansible-playbook <playbook-name-here>.yml --tags "level_2"

Пример применения контролей из конкретного раздела (например, раздел 4 бенчмарка CIS Ubuntu 20.04):

ansible-playbook <playbook-name-here>.yml --tags "section4"

Пример применения конкретного контроля (например, контроль 6.2.2 бенчмарка CIS Ubuntu 20.04):

ansible-playbook <playbook-name-here>.yml --tags "rule_6_2_2"

7. Локальная разработка и CI/CD:

Для локальной разработки роли cis_ubuntu_2004 выполните следующее:

  • Скопируйте репозиторий.

  • Клонируйте его локально.

  • Установите Vagrant на своем компьютере. Инструкции по установке доступны здесь или, если вам нужно, вы можете использовать роль darkwizard242.vagrant для установки - но убедитесь, что она поддерживает вашу ОС.

  • Установите Virtualbox на своем компьютере. Инструкции по установке доступны здесь или, если вам нужно, вы можете использовать роль darkwizard242.virtualbox для установки - но убедитесь, что она поддерживает вашу ОС.

  • Установите необходимые модули с помощью:

    # Установить модули pip глобально, когда вы работаете как не-root пользователем.
    sudo -H python3 -m pip install -U molecule ansible-lint flake8 pytest-testinfra molecule-vagrant
    

    ИЛИ

    # Установить модули pip локально для каталога пользователя, когда вы работаете как не-root пользователем.
    python3 -m pip install -U molecule ansible-lint flake8 pytest-testinfra molecule-vagrant
    
  • Внесите изменения и выполните molecule test или molecule converge.

Команда molecule test выполнит всю серию заданий, настроенную для тестирования молекулы.

Команда molecule converge просто создаст экземпляр vagrant и применит все операции, определенные в роли.

Конечно, вы также можете просто загрузить код для роли cis_ubuntu_2004, внести изменения и запустить его через ansible-playbook на тестовой машине, если вы не знакомы с molecule.

Когда вы создаете Pull Request - он автоматически запустит сборку TravisCI здесь. Настройки сборки TravisCI находятся в .travis.yml. Это выполнит различные задачи, такие как:

  • Клонирование кода из pull request.
  • Выполнение обновления кэша репозитория.
  • Установка предварительных пакетов.
  • Установка Vagrant и Virtualbox.
  • Выполнение проверки качества кода SonarCloud для всего кода репозитория.
  • Запуск тестирования молекулы (что создаст виртуальную машину, применит код роли и запустит тестовую последовательность TestInfra для роли cis_ubuntu_2004).

8. Участие:

Ваши предложения приветствуются. Инструкции для участия можно найти здесь.

Вдохновение

Вдохновленный выдающейся работой многих членов сообщества Ansible (Florian Utz и ansible-lockdown в частности). Продолжайте в том же духе :metal:

Лицензия

MIT

Информация об авторе

Эта роль была создана Ali Muhammad.

О проекте

Role to apply CIS Benchmark for Ubuntu Linux 20.04 LTS.

Установить
ansible-galaxy install darkwizard242/cis_ubuntu_2004
Лицензия
mit
Загрузки
18500
Владелец
Senior DevOps/CloudOps Engineer. Dedicated to Automating everything I come across. Love to work on and learn new technologies/tools everyday!