cis_ubuntu_20_04_ansible

Ansible CIS Ubuntu 20.04 LTS Укрепление V1.1.0 Последняя версия Build Status

CIS укреплённый Ubuntu: предотвращение кибератак и вредоносного ПО для критически важных систем. Рекомендации CIS помогают защитить ваши системы, удаляя:

  1. ненадёжные программы.
  2. отключая неиспользуемые файловые системы.
  3. отключая ненужные порты или сервисы.
  4. проверяя операции с привилегиями.
  5. ограничивая административные привилегии.

Рекомендации по стандартам CIS применяются в виртуальных машинах в публичных и частных облаках. Они также используются для защиты локальных развертываний. В некоторых отраслях разработка системы в соответствии с общепринятыми стандартами является критерием, на который обращают внимание аудиторы. Рекомендации CIS часто являются выбором для повышения безопасности систем, рекомендованным аудиторами для отраслей, требующих соблюдения стандартов PCI-DSS и HIPAA, таких как банковское дело, телекоммуникации и здравоохранение. Если вы хотите получить соответствие стандартам безопасности, принятым в вашей отрасли, таким как PCI DSS, APRA или ISO 27001, то вам необходимо продемонстрировать, что вы применили задокументированные стандарты укоренения ко всем системам в рамках оценки.

Бенчмарки CIS для Ubuntu организованы в разные профили, а именно «Уровень 1» и «Уровень 2», предназначенные для серверных и рабочий сред.

Профиль уровня 1 предназначен быть практичным и разумным способом защитить систему без значительного влияния на производительность.

  • Отключение ненужных файловых систем,
  • Ограничение прав пользователей на файлы и директории,
  • Отключение ненужных сервисов,
  • Настройка сетевых брандмауэров.

Профиль уровня 2 используется в ситуациях, когда безопасность считается очень важной, и это может негативно сказаться на производительности системы.

  • Создание отдельных разделов,
  • Аудит операций с привилегиями.

Инструмент укрепления для Ubuntu CIS позволяет выбирать желаемый уровень укоренения (Уровень 1 или Уровень 2) и рабочую среду (сервер или рабочая станция) для системы. Пример:

ansible-playbook -i inventory cis-ubuntu-20.yaml --tags="level_1_server"

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

ansible-playbook -i host run.yaml --list-tags

Я написал все роли, основываясь на

CIS Ubuntu Linux 20.04 LTS Benchmark
v1.1.0 - 21 июля 2020

Проверить пример директории


Требования

Вы должны внимательно ознакомиться с задачами, чтобы убедиться, что эти изменения не сломают ваши системы перед запуском этого плейбука.

Вы можете скачать бесплатную книгу по стандартам CIS по следующему адресу Бесплатный стандарт

Чтобы начать работать в этой роли, вам просто нужно установить Ansible. Установка Ansible


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

Вам нужно просмотреть все значения по умолчанию перед запуском этого плейбука. Многочисленные переменные роли определены в defaults/main.yml.

  • Если вы собираетесь применить эту роль к каким-либо серверам, у вас должно быть базовое понимание Стандарта CIS и понимание влияния, которое он может оказать на систему.
  • Прочтите и измените настраиваемые значения по умолчанию.

Примеры конфигурации, которые следует немедленно рассмотреть для исключения:

5.1.8 Убедитесь, что cron ограничен авторизованными пользователями и 5.2.17 Убедитесь, что доступ по SSH ограничен, которые по умолчанию эффективно ограничивают доступ к хосту (включая доступ через ssh).

Например:

  • CIS-Ubuntu-20.04-Ansible/defaults/main.yml
#Раздел 5
#5.1.8 Убедитесь, что cron ограничен авторизованными пользователями
allowed_hosts: "ALL: 0.0.0.0/0.0.0.0, 192.168.2.0/255.255.255.0"
# 5.2.17 Убедитесь, что доступ по SSH ограничен
allowed_users: ali saleh baker root # Укажите None или список пользователей, разделённых пробелом

Если вам нужно изменить шаблоны файлов, вы можете найти их в директории files/templates/*


Зависимости

  • Версия Ansible > 2.9

Пример плейбука

Ниже приведён пример плейбука

---
- hosts: host1
  become: yes
  remote_user: root
  gather_facts: no
  roles:
    - { role: "CIS-Ubuntu-20.04-Ansible", }

Запуск всех

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

ansible-playbook -i [inventoryfile] [playbook].yaml

Запуск определённого раздела

ansible-playbook -i host run.yaml -t section2

Запуск нескольких разделов

ansible-playbook -i host run.yaml -t section2 -t 6.1.1
  • Примечание: При запуске отдельной задачи убедитесь в зависимостях между задачами. Например, если вы запустите тег 4.1.1.2 Убедитесь, что служба auditd включена перед запуском 4.1.1.1 Убедитесь, что auditd установлен, вы получите ошибку во время выполнения.

  • Пункты с Зачёркнутым еще не реализованы, в настоящее время я работаю над этим.

  • Убедитесь, что вы выбрали один раз сервис, я использую ntp, но вы можете использовать другие сервисы, такие как [systemd-timesyncd, ntp, chrony] в настройках в defaults/main.yaml

    Тестирование 01.11.2020 протестировано на AWS EC2 Ubuntu 20.04 LTS [Успешно] 01.11.2020 протестировано на локальном сервере Ubuntu 20.04 LTS [Успешно]

  • Перед запуском убедитесь, что обновили список пользователей в defaults/main.yaml в list_of_os_users + allowed_users

  • Убедитесь, что установили правильную подсеть в defaults/main.yaml в allowed_hosts


Таблица ролей:

1 Начальная настройка

  • 1.1 Настройка системы
  • 1.1.1 Отключить неиспользуемые файловые системы
  • 1.1.1.1 Убедитесь, что монтирование файловых систем cramfs отключено (Автоматически)
  • 1.1.1.2 Убедитесь, что монтирование файловых систем freevxfs отключено - (Автоматически)
  • 1.1.1.3 Убедитесь, что монтирование файловых систем jffs2 отключено (Автоматически)
  • 1.1.1.4 Убедитесь, что монтирование файловых систем hfs отключено (Автоматически)
  • 1.1.1.5 Убедитесь, что монтирование файловых систем hfsplus отключено - (Автоматически)
  • 1.1.1.6 Убедитесь, что монтирование файловых систем udf отключено (Автоматически)
  • 1.1.1.7 Убедитесь, что монтирование файловых систем FAT ограничено (Вручную)
  • 1.1.2 Убедитесь, что /tmp настроен (Автоматически)
  • 1.1.3 Убедитесь, что установлен параметр nodev на разделе /tmp (Автоматически)
  • 1.1.4 Убедитесь, что установлен параметр nosuid на разделе /tmp (Автоматически)
  • 1.1.5 Убедитесь, что установлен параметр noexec на разделе /tmp (Автоматически)
  • 1.1.6 Убедитесь, что /dev/shm настроен (Автоматически)
  • 1.1.7 Убедитесь, что установлен параметр nodev на разделе /dev/shm (Автоматически)
  • 1.1.8 Убедитесь, что установлен параметр nosuid на разделе /dev/shm (Автоматически)
  • 1.1.9 Убедитесь, что установлен параметр noexec на разделе /dev/shm (Автоматически)
  • 1.1.10 Убедитесь, что существует отдельный раздел для /var (Автоматически)
  • 1.1.11 Убедитесь, что существует отдельный раздел для /var/tmp (Автоматически)
  • 1.1.12 Убедитесь, что установлен параметр nodev на разделе /var/tmp (Автоматически)
  • 1.1.13 Убедитесь, что установлен параметр nosuid на разделе /var/tmp (Автоматически)
  • 1.1.14 Убедитесь, что установлен параметр noexec на разделе /var/tmp (Автоматически)
  • 1.1.15 Убедитесь, что существует отдельный раздел для /var/log (Автоматически)
  • 1.1.16 Убедитесь, что существует отдельный раздел для /var/log/audit - (Автоматически)
  • 1.1.17 Убедитесь, что существует отдельный раздел для /home (Автоматически)
  • 1.1.18 Убедитесь, что установлен параметр nodev на разделе /home (Автоматически)
  • 1.1.19 Убедитесь, что установлен параметр nodev на разделах съемных носителей (Вручную)
  • 1.1.20 Убедитесь, что установлен параметр nosuid на разделах съемных носителей - (Вручную)
  • 1.1.21 Убедитесь, что установлен параметр noexec на разделах съемных носителей - (Вручную)
  • 1.1.22 Убедитесь, что установлен бит sticky на всех директориях, доступных для записи в мир - (Автоматически)
  • 1.1.23 Отключить автозапуск (Автоматически)
  • 1.1.24 Отключить USB-накопители (Автоматически)

1.2 Настройка обновлений программного обеспечения

  • 1.2.1 Убедитесь, что репозитории менеджера пакетов настроены (Вручную)
  • 1.2.2 Убедитесь, что настроены ключи GPG (Вручную)

1.3 Проверка целостности файловой системы

  • 1.3.1 Убедитесь, что AIDE установлен (Автоматически)
  • 1.3.2 Убедитесь, что целостность файловой системы регулярно проверяется (Автоматически)

1.4 Настройки безопасной загрузки

  • 1.4.1 Убедитесь, что установлен пароль к загрузчику (Автоматически)
  • 1.4.2 Убедитесь, что разрешения на конфигурацию загрузчика настроены (Автоматически)
  • 1.4.3 Убедитесь, что аутентификация требуется для одно-пользовательского режима (Автоматически)

1.5 Дополнительное укрепление процессов

  • 1.5.1 Убедитесь, что поддержка XD/NX включена (Автоматически)
  • 1.5.2 Убедитесь, что включена рандомизация адресного пространства (ASLR) (Автоматически)
  • 1.5.3 Убедитесь, что предзвязывание отключено (Автоматически)
  • 1.5.4 Убедитесь, что дампы ядра ограничены (Автоматически)

1.6 Обязательный контроль доступа

  • 1.6.1 Настройка AppArmor
  • 1.6.1.1 Убедитесь, что AppArmor установлен (Автоматически)
  • 1.6.1.2 Убедитесь, что AppArmor включен в конфигурации загрузчика (Автоматически)
  • 1.6.1.3 Убедитесь, что все профили AppArmor находятся в режиме enforcing или complain (Автоматически)
  • 1.6.1.4 Убедитесь, что все профили AppArmor находятся в режиме enforcing (Автоматически)

1.7 Предупредительные сообщения

  • 1.7.1.1 Убедитесь, что сообщение дня настроено правильно (Автоматически)
  • 1.7.1.2 Убедитесь, что предупредительное сообщение для локального входа настроено правильно (Автоматически)
  • 1.7.1.3 Убедитесь, что предупредительное сообщение для удаленного входа настроено правильно (Автоматически)
  • 1.7.1.4 Убедитесь, что разрешения на /etc/motd настроены (Автоматически)
  • 1.7.1.5 Убедитесь, что разрешения на /etc/issue настроены (Автоматически)
  • 1.7.1.6 Убедитесь, что разрешения на /etc/issue.net настроены (Автоматически)

1.8 Диспетчер GNOME

  • 1.8.1 Убедитесь, что диспетчер GNOME удалён (Вручную)
  • 1.8.2 Убедитесь, что настроено предупреждение о входе GDM (Вручную)
  • 1.8.3 Убедитесь, что список отключенных пользователей включен (Вручную)
  • 1.8.4 Убедитесь, что XDCMP не включен (Вручную)

1.9 Убедитесь, что установлены обновления, патчи и дополнительное программное обеспечение безопасности (Автоматически)

2 Услуги

  • 2.1 Услуги inetd
  • 2.1.1 Убедитесь, что xinetd не установлен (Автоматически)
  • 2.1.2 Убедитесь, что openbsd-inetd не установлен (Автоматически)
  • 2.2 Специальные службы
  • 2.2.1 Синхронизация времени
  • 2.2.1.1 Убедитесь, что синхронизация времени используется (Автоматически)
  • 2.2.1.2 Убедитесь, что systemd-timesyncd настроен (Вручную)
  • 2.2.1.3 Убедитесь, что chrony настроен (Автоматически)
  • 2.2.1.4 Убедитесь, что ntp настроен (Автоматически)
  • 2.2.2 Убедитесь, что X Window System не установлен (Автоматически)
  • 2.2.3 Убедитесь, что сервер Avahi не установлен (Автоматически)
  • 2.2.4 Убедитесь, что CUPS не установлен (Автоматически)
  • 2.2.5 Убедитесь, что DHCP-сервер не установлен (Автоматически)
  • 2.2.6 Убедитесь, что сервер LDAP не установлен (Автоматически)
  • 2.2.7 Убедитесь, что NFS не установлен (Автоматически)
  • 2.2.8 Убедитесь, что DNS-сервер не установлен (Автоматически)
  • 2.2.9 Убедитесь, что FTP-сервер не установлен (Автоматически)
  • 2.2.10 Убедитесь, что HTTP-сервер не установлен (Автоматически)
  • 2.2.11 Убедитесь, что сервера IMAP и POP3 не установлены (Автоматически)
  • 2.2.12 Убедитесь, что Samba не установлен (Автоматически)
  • 2.2.13 Убедитесь, что HTTP-прокси-сервер не установлен (Автоматически)
  • 2.2.14 Убедитесь, что SNMP-сервер не установлен (Автоматически)
  • 2.2.15 Убедитесь, что агент передачи почты настроен в локальном режиме - (Автоматически)
  • 2.2.16 Убедитесь, что служба rsync не установлена (Автоматически)
  • 2.2.17 Убедитесь, что NIS-сервер не установлен (Автоматически)

2.3 Клиенты служб

  • 2.3.1 Убедитесь, что NIS-клиент не установлен (Автоматически)
  • 2.3.2 Убедитесь, что клиент rsh не установлен (Автоматически)
  • 2.3.3 Убедитесь, что клиент talk не установлен (Автоматически)
  • 2.3.4 Убедитесь, что клиент telnet не установлен (Автоматически)
  • 2.3.5 Убедитесь, что клиент LDAP не установлен (Автоматически)
  • 2.3.6 Убедитесь, что RPC не установлен (Автоматически)
  • 2.4 Убедитесь, что несущественные службы удалены или замаскированы (Вручную)

3 Сетевая конфигурация

  • 3.1 Отключить неиспользуемые сетевые протоколы и устройства
  • 3.1.1 Отключить IPv6 (Вручную)
  • 3.1.2 Убедитесь, что беспроводные интерфейсы отключены (Автоматически)

3.2 Параметры сети (только хост)

  • 3.2.1 Убедитесь, что отправка перенаправленных пакетов отключена (Автоматически)
  • 3.2.2 Убедитесь, что IP-перенаправление отключено (Автоматически)

3.3 Параметры сети (хост и маршрутизатор)

  • 3.3.1 Убедитесь, что пакеты с маршрутизацией источника не принимаются (Автоматически)
  • 3.3.2 Убедитесь, что ICMP-перенаправления не принимаются (Автоматически)
  • 3.3.3 Убедитесь, что надежные ICMP-перенаправления не принимаются (Автоматически)
  • 3.3.4 Убедитесь, что подозрительные пакеты регистрируются (Автоматически)
  • 3.3.5 Убедитесь, что широковещательные ICMP-запросы игнорируются (Автоматически)
  • 3.3.6 Убедитесь, что ложные ICMP-ответы игнорируются (Автоматически)
  • 3.3.7 Убедитесь, что фильтрация обратного пути включена (Автоматически)
  • 3.3.8 Убедитесь, что TCP SYN Cookies включены (Автоматически)
  • 3.3.9 Убедитесь, что объявления маршрутизаторов IPv6 не принимаются (Автоматически)

3.4 Нестандартные сетевые протоколы

  • 3.4.1 Убедитесь, что DCCP отключен (Автоматически)
  • 3.4.2 Убедитесь, что SCTP отключен (Автоматически)
  • 3.4.3 Убедитесь, что RDS отключен (Автоматически)
  • 3.4.4 Убедитесь, что TIPC отключен (Автоматически)

3.5 Конфигурация брандмауэра

  • 3.5.1 Настройка UncomplicatedFirewall
  • 3.5.1.1 Убедитесь, что Uncomplicated Firewall установлен (Автоматически)
  • 3.5.1.2 Убедитесь, что iptables-persistent не установлен (Автоматически)
  • 3.5.1.3 Убедитесь, что служба ufw включена (Автоматически)
  • 3.5.1.4 Убедитесь, что трафик обратной связи настроен (Автоматически)
  • 3.5.1.5 Убедитесь, что исходящие соединения настроены (Вручную)
  • 3.5.1.6 Убедитесь, что правила брандмауэра существуют для всех открытых портов (Вручную)
  • 3.5.1.7 Убедитесь, что политика брандмауэра по умолчанию запрещает (Автоматически)
  • 3.5.2 Настройка nftables
  • 3.5.2.1 Убедитесь, что nftables установлен (Автоматически)
  • 3.5.2.2 Убедитесь, что Uncomplicated Firewall не установлен или отключен - (Автоматически)
  • 3.5.2.3 Убедитесь, что iptables очищены (Вручную)
  • 3.5.2.4 Убедитесь, что таблица существует (Автоматически)
  • 3.5.2.5 Убедитесь, что базовые цепочки существуют (Автоматически)
  • 3.5.2.6 Убедитесь, что трафик обратной связи настроен (Автоматически)
  • 3.5.2.7 Убедитесь, что исходящие и установленные соединения настроены - (Вручную)
  • 3.5.2.8 Убедитесь, что политика брандмауэра по умолчанию запрещает (Автоматически)
  • 3.5.2.9 Убедитесь, что служба nftables включена (Автоматически)
  • 3.5.2.10 Убедитесь, что правила nftables постоянны (Автоматически)
  • 3.5.3 Настройка iptables
  • 3.5.3.1.1 Убедитесь, что пакеты iptables установлены (Автоматически)
  • 3.5.3.1.2 Убедитесь, что nftables не установлен (Автоматически)
  • 3.5.3.1.3 Убедитесь, что Uncomplicated Firewall не установлен или отключен - (Автоматически)
  • 3.5.3.2.1 Убедитесь, что политика брандмауэра по умолчанию запрещает (Автоматически)
  • 3.5.3.2.2 Убедитесь, что трафик обратной связи настроен (Автоматически)
  • 3.5.3.2.3 Убедитесь, что исходящие и установленные соединения настроены - (Вручную)
  • 3.5.3.2.4 Убедитесь, что правила брандмауэра существуют для всех открытых портов (Автоматически)
  • 3.5.3.3.1 Убедитесь, что политика брандмауэра IPv6 по умолчанию запрещает (Автоматически)
  • 3.5.3.3.2 Убедитесь, что трафик обратной связи IPv6 настроен (Автоматически)
  • 3.5.3.3.3 Убедитесь, что выходные соединения IPv6 и установленные соединения настроены - (Вручную)

4 Ведение журнала и аудит

  • 4.1 Настройка системного учёта (auditd)
  • 4.1.1 Убедитесь, что аудит включен
  • 4.1.1.1 Убедитесь, что auditd установлен (Автоматически)
  • 4.1.1.2 Убедитесь, что служба auditd включена (Автоматически)
  • 4.1.1.3 Убедитесь, что аудит процессов, которые начинаются до auditd, включен (Автоматически)
  • 4.1.1.4 Убедитесь, что audit_backlog_limit достаточно (Автоматически)
  • 4.1.2 Настройка хранения данных
  • 4.1.2.1 Убедитесь, что размер хранения журналов аудита настроен (Автоматически)
  • 4.1.2.2 Убедитесь, что журналы аудита не удаляются автоматически (Автоматически)
  • 4.1.2.3 Убедитесь, что система отключена, когда журналы аудита заполнены - (Автоматически)
  • 4.1.3 Убедитесь, что события, изменяющие дату и время, собираются (Автоматически)
  • 4.1.4 Убедитесь, что события, изменяющие информацию о пользователе/группе, собираются - (Автоматически)
  • 4.1.5 Убедитесь, что собираются события, изменяющие сетевую среду системы - (Автоматически)
  • 4.1.6 Убедитесь, что собираются события, изменяющие контроль обязательного доступа системы - (Автоматически)
  • 4.1.7 Убедитесь, что собираются события входа и выхода (Автоматически)
  • 4.1.8 Убедитесь, что собираются сведения о начале сеанса (Автоматически)
  • 4.1.9 Убедитесь, что собираются события изменения разрешений контроля дискреционного доступа - (Автоматически)
  • 4.1.10 Убедитесь, что собираются неудачные попытки несанкционированного доступа к файлам - (Автоматически)
  • 4.1.11 Убедитесь, что собирается использование привилегированных команд (Автоматически)
  • 4.1.12 Убедитесь, что собираются успешные монтирования файловой системы (Автоматически)
  • 4.1.13 Убедитесь, что собираются события удаления файлов пользователями (Автоматически)
  • 4.1.14 Убедитесь, что собираются изменения в объеме системного администрирования (sudoers) - (Автоматически)
  • 4.1.15 Убедитесь, что собираются исполнения команд системного администратора (sudo) - (Автоматически)
  • 4.1.16 Убедитесь, что собираются загрузка и выгрузка модулей ядра - (Автоматически)
  • 4.1.17 Убедитесь, что конфигурация аудита неизменна (Автоматически)

4.2 Настройка ведения журнала

  • 4.2.1 Настройка rsyslog
  • 4.2.1.1 Убедитесь, что rsyslog установлен (Автоматически)
  • 4.2.1.2 Убедитесь, что служба rsyslog включена (Автоматически)
  • 4.2.1.3 Убедитесь, что ведение журнала настроено (Вручную)
  • 4.2.1.4 Убедитесь, что установлены разрешения по умолчанию для файла rsyslog - (Автоматически)
  • 4.2.1.5 Убедитесь, что rsyslog настроен для отправки журналов на удалённый лог-хост (Автоматически)
  • 4.2.1.6 Убедитесь, что удалённые сообщения rsyslog принимаются только на назначенных лог-хостах. (Вручную)
  • 4.2.2 Настройка journald
  • 4.2.2.1 Убедитесь, что journald настроен для отправки журналов в rsyslog - (Автоматически)
  • 4.2.2.2 Убедитесь, что journald настроен для сжатия больших файлов журналов - (Автоматически)
  • 4.2.2.3 Убедитесь, что journald настроен для записи файлов журналов на постоянный диск (Автоматически)
  • 4.2.3 Убедитесь, что разрешения на все файлы журналов настроены (Автоматически)
  • 4.3 Убедитесь, что logrotate настроен (Вручную)
  • 4.4 Убедитесь, что logrotate назначает соответствующие разрешения (Автоматически)

5 Доступ, аутентификация и авторизация

  • 5.1 Настройка основанных на времени планировщиков заданий
  • 5.1.1 Убедитесь, что демон cron включен и работает (Автоматически)
  • 5.1.2 Убедитесь, что разрешения на /etc/crontab настроены (Автоматически)
  • 5.1.3 Убедитесь, что разрешения на /etc/cron.hourly настроены - (Автоматически)
  • 5.1.4 Убедитесь, что разрешения на /etc/cron.daily настроены - (Автоматически)
  • 5.1.5 Убедитесь, что разрешения на /etc/cron.weekly настроены - (Автоматически)
  • 5.1.6 Убедитесь, что разрешения на /etc/cron.monthly настроены - (Автоматически)
  • 5.1.7 Убедитесь, что разрешения на /etc/cron.d настроены (Автоматически)
  • 5.1.8 Убедитесь, что cron ограничен авторизованными пользователями (Автоматически)
  • 5.1.9 Убедитесь, что at ограничен авторизованными пользователями (Автоматически)

5.2 Настройка SSH-сервера

  • 5.2.1 Убедитесь, что разрешения на /etc/ssh/sshd_config настроены - (Автоматически)
  • 5.2.2 Убедитесь, что разрешения на приватные ключи хоста SSH настроены - (Автоматически)
  • 5.2.3 Убедитесь, что разрешения на публичные ключи хоста SSH настроены - (Автоматически)
  • 5.2.4 Убедитесь, что уровень журнала SSH соответствует (Автоматически)
  • 5.2.5 Убедитесь, что пересылка X11 SSH отключена (Автоматически)
  • 5.2.6 Убедитесь, что SSH MaxAuthTries установлен на 4 или меньше (Автоматически)
  • 5.2.7 Убедитесь, что SSH IgnoreRhosts включен (Автоматически)
  • 5.2.8 Убедитесь, что SSH HostbasedAuthentication отключен (Автоматически)
  • 5.2.9 Убедитесь, что вход под root отключен (Автоматически)
  • 5.2.10 Убедитесь, что SSH PermitEmptyPasswords отключен (Автоматически)
  • 5.2.11 Убедитесь, что SSH PermitUserEnvironment отключен (Автоматически)
  • 5.2.12 Убедитесь, что используются только сильные шифры (Автоматически)
  • 5.2.13 Убедитесь, что используются только сильные алгоритмы MAC (Автоматически)
  • 5.2.14 Убедитесь, что используются только сильные алгоритмы обмена ключами - (Автоматически)
  • 5.2.15 Убедитесь, что время ожидания неактивности SSH настроено (Автоматически)
  • 5.2.16 Убедитесь, что время ожидания входа SSH установлено на одну минуту или меньше - (Автоматически)
  • 5.2.17 Убедитесь, что доступ по SSH ограничен (Автоматически)
  • 5.2.18 Убедитесь, что предупреждающий баннер SSH настроен (Автоматически)
  • 5.2.19 Убедитесь, что SSH PAM включен (Автоматически)
  • 5.2.20 Убедитесь, что SSH AllowTcpForwarding отключен (Автоматически)
  • 5.2.21 Убедитесь, что SSH MaxStartups настроен (Автоматически)
  • 5.2.22 Убедитесь, что количество сессий SSH ограничено (Автоматически)

5.3 Настройка PAM

  • 5.3.1 Убедитесь, что требования к созданию паролей настроены - (Автоматически)
  • 5.3.2 Убедитесь, что блокировка за неудачные попытки пароля настроена - (Автоматически)
  • 5.3.3 Убедитесь, что повторное использование пароля ограничено (Автоматически)
  • 5.3.4 Убедитесь, что алгоритм хеширования паролей - SHA-512 (Автоматически)

5.4 Учетные записи пользователей и окружение

  • 5.4.1 Установить параметры набора паролей Shadow
  • 5.4.1.1 Убедитесь, что срок действия пароля - 365 дней или меньше (Автоматически)
  • 5.4.1.2 Убедитесь, что минимальные дни между изменениями пароля настроены - (Автоматически)
  • 5.4.1.3 Убедитесь, что дни предупреждения о сроках действия пароля - 7 или более - (Автоматически)
  • 5.4.1.4 Убедитесь, что блокировка пароля по неактивности - 30 дней или меньше (Автоматически)
  • 5.4.1.5 Убедитесь, что даты последнего изменения пароля всех пользователей находятся в прошлом - (Автоматически)
  • 5.4.2 Убедитесь, что системные учетные записи защищены (Автоматически)
  • 5.4.3 Убедитесь, что группа по умолчанию для учетной записи root - GID 0 (Автоматически)
  • 5.4.4 Убедитесь, что умаска пользователя по умолчанию - 027 или более ограничительная - (Автоматически)
  • 5.4.5 Убедитесь, что время ожидания оболочки пользователя по умолчанию - 900 секунд или меньше - (Автоматически)
  • 5.5 Убедитесь, что вход под root ограничен консолью системы (Вручную)
  • 5.6 Убедитесь, что доступ к команде su ограничен (Автоматически)

6 Обслуживание системы

  • 6.1 Разрешения файлов системы
  • 6.1.1 Проверьте разрешения файлов системы (Вручную)
  • 6.1.2 Убедитесь, что разрешения на /etc/passwd настроены (Автоматически)
  • 6.1.3 Убедитесь, что разрешения на /etc/gshadow настроены (Автоматически)
  • 6.1.4 Убедитесь, что разрешения на /etc/shadow настроены (Автоматически)
  • 6.1.5 Убедитесь, что разрешения на /etc/group настроены (Автоматически)
  • 6.1.6 Убедитесь, что разрешения на /etc/passwd- настроены (Автоматически)
  • 6.1.7 Убедитесь, что разрешения на /etc/shadow- настроены (Автоматически)
  • 6.1.8 Убедитесь, что разрешения на /etc/group- настроены (Автоматически)
  • 6.1.9 Убедитесь, что разрешения на /etc/gshadow настроены (Автоматически)
  • 6.1.10 Убедитесь, что не существует файлов с разрешениями записи для всех (Автоматически)
  • 6.1.11 Убедитесь, что не существует файлов или директорий, не принадлежащих никому (Автоматически)
  • 6.1.12 Убедитесь, что не существует файлов или директорий, не сгруппированных (Автоматически)
  • 6.1.13 Проверьте SUID-исполняемые файлы (Вручную)
  • 6.1.14 Проверьте SGID-исполняемые файлы (Вручную)

6.2 Настройки пользователей и групп

  • 6.2.1 Убедитесь, что поля паролей не пусты (Автоматически)
  • 6.2.2 Убедитесь, что root - единственная учетная запись UID 0 (Автоматически)
  • 6.2.3 Убедитесь, что целостность PATH root настроена (Автоматически)
  • 6.2.4 Убедитесь, что существуют домашние директории всех пользователей (Автоматически)
  • 6.2.5 Убедитесь, что разрешения домашних директорий пользователей - 750 или более ограничительные (Автоматически)
  • 6.2.6 Убедитесь, что пользователи владеют своими домашними директориями (Автоматически)
  • 6.2.7 Убедитесь, что файлы пользователей не доступны для групп или записи всем - (Автоматически)
  • 6.2.8 Убедитесь, что нет пользователей с файлами .forward (Автоматически)
  • 6.2.9 Убедитесь, что нет пользователей с файлами .netrc (Автоматически)
  • 6.2.10 Убедитесь, что файлы .netrc пользователей недоступны для групп или для записи всем - (Автоматически)
  • 6.2.11 Убедитесь, что нет пользователей с файлами .rhosts (Автоматически)
  • 6.2.12 Убедитесь, что все группы в /etc/passwd существуют в /etc/group - (Автоматически)
  • 6.2.13 Убедитесь, что нет дублирующихся UID (Автоматически)
  • 6.2.14 Убедитесь, что нет дублирующихся GID (Автоматически)
  • 6.2.15 Убедитесь, что нет дублирующих имен пользователей (Автоматически)
  • 6.2.16 Убедитесь, что нет дублирующих имен групп (Автоматически)
  • 6.2.17 Убедитесь, что группа shadow пуста (Автоматически)

Устранение неполадок

  • Если вы хотите запустить плейбук на той же машине, убедитесь, что добавили это в задачу запуска:
- hosts: 127.0.0.1
  connection: local
  • Если вы столкнулись с проблемой выполнения, попробуйте запустить плейбук в другой директории, например, /srv/.
  • Для ошибки, подобной этой stderr: chage: user 'ubuntu' does not exist in /etc/passwd, убедитесь, что обновили конфигурацию в CIS-Ubuntu-20.04-Ansible/defaults/main.yml.
TASK [CIS-Ubuntu-20.04-Ansible : 1.4.1 Ensure AIDE is installed] ***********************************************************************************************************************************************************************************************************fatal: [192.168.80.129]: FAILED! => {"cache_update_time": 1611229159, "cache_updated": false, "changed": false, "msg": "'/usr/bin/apt-get -y -o \"Dpkg::Options::=--force-confdef\" -o \"Dpkg::Options::=--force-confold\" install 'nullmailer' 'aide-common' 'aide' -o APT::Install-Recommends=no' failed: E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5194 (unattended-upgr)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?\n", "rc": 100, "stderr": "E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5194 (unattended-upgr)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?\n", "stderr_lines": ["E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5194 (unattended-upgr)", "E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?"], "stdout": "", "stdout_lines": []}
  • Для вышеуказанной ошибки вам нужно убедиться, что в фоновом режиме не запущен процесс apt, или подождать, пока apt завершит выполнение.
TASK [CIS-Ubuntu-20.04-Ansible : 5.4.1.1 Ensure password expiration is 365 days or less | chage] ***************************************************************************************************************************************************************************failed: [192.168.80.129] (item=ubuntu) => {"ansible_loop_var": "item", "changed": true, "cmd": ["chage", "--maxdays", "300", "ubuntu"], "delta": "0:00:00.005478", "end": "2021-01-21 12:49:45.463615", "item": "ubuntu", "msg": "non-zero return code", "rc": 1, "start": "2021-01-21 12:49:45.458137", "stderr": "chage: user 'ubuntu' does not exist in /etc/passwd", "stderr_lines": ["chage: user 'ubuntu' does not exist in /etc/passwd"], "stdout": "", "stdout_lines": []}
  • Убедитесь, что вы задали правильного пользователя в defaults/main.yaml.
TASK [CIS-Ubuntu-20.04-Ansible : Creating users without admin access] ***************************************************************************************************************
fatal: [golden]: FAILED! => {"msg": "crypt.crypt not supported on Mac OS X/Darwin, install passlib python module"}

Установите pip install passlib.


Лицензия

GNU GENERAL PUBLIC LICENSE

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

Роль была первоначально разработана Ali Saleh Baker.

При внесении изменений в этот репозиторий, пожалуйста, сначала обсудите предполагаемое изменение через GitHub, по электронной почте или другими каналами общения со мной :)

Установить
ansible-galaxy install alivx/CIS-Ubuntu-20.04-Ansible
Лицензия
gpl-3.0
Загрузки
386
Владелец
Everything