Ansible-RHEL7-CIS-Benchmarks
HarryHarcourt.Ansible-RHEL7-CIS-Benchmarks
Весь кредит принадлежит anthcourtney за оригинальную структуру, найденную здесь: https://github.com/anthcourtney/ansible-role-cis-amazon-linux
Данная реализация была адаптирована для Red Hat Enterprise Linux 7.X (тестировалось на 7.1 - 7.7) и CentOS 7.4 (тестировалось на 7.4 - 7.7, обратите внимание, что версии CentOS ниже 7.4 могут иметь проблемы с SSH).
Эта реализация была сделана идемпотентной во многих местах и продолжает оставаться таковой.
Эта реализация позволяет включать и настраивать некоторые сервисы.
CIS RHEL Linux Benchmark. https://benchmarks.cisecurity.org/tools2/linux/CIS_Red_Hat_Enterprise_Linux_7_Benchmark_v2.1.1.pdf
Эта роль была разработана и протестирована на Red Hat Linux 7.1, 7.2, 7.3, 7.4, 7.5, 7.6 и 7.7 с использованием стандартных образов AWS AMI. Эта роль также была разработана и протестирована на CentOS 7.4 с использованием стандартных образов AWS AMI.
Почему стоит использовать эту роль?
Если вы пытаетесь достичь соответствия принятым в отрасли стандартам безопасности, таким как PCI DSS, APRA или ISO 27001, то вам нужно продемонстрировать, что вы применили документированные стандарты ужесточения безопасности ко всем системам в области оценки.
Если вы используете Red Hat Linux, то эта роль пытается предоставить одну из частей решения для соблюдения требований.
Осторожно!
Если вы рассматриваете возможность применения этой роли к каким-либо серверам, вам следует иметь базовые знания о CIS Benchmark (или других подобных бенчмарках) и понимать, какое влияние это может оказать на систему.
Пожалуйста, уделите время для ознакомления со стандартом и с настраиваемыми значениями по умолчанию, и исключите любые элементы перед применением их к системе.
Примеры элементов, которые следует сразу рассмотреть для исключения (или, по крайней мере, для изменения значений по умолчанию) включают:
3.4.2
и3.4.3
, которые по умолчанию фактически ограничивают доступ к хосту (включая доступ по ssh) только для localhost.
Пример плейбука
Пример плейбука, который использует эту роль, выглядит следующим образом:
---
- hosts: localhost
connection: local
gather_facts: true
become: yes
roles:
- Ansible-RHEL7-CIS-Benchmarks
Более продвинутый пример, который включает изменения значений по умолчанию, а также исключение некоторых элементов в бенчмарке, считающихся ненужными для вымышленной среды, выглядит так:
---
- hosts: localhost
connection: local
gather_facts: true
become: yes
vars:
cis_level_1_exclusions:
- 5.4.4
- 3.4.2
- 3.4.3
- 6.2.13
cis_pass_max_days: 45
cis_umask_default: 002
roles:
- Ansible-RHEL7-CIS-Benchmarks
Обратите внимание, что использование become: yes
обязательно, так как 99% задач требуют привилегированного доступа для выполнения.
Переменные роли
Смотрите defaults/main.yml
для переменных, которые можно переопределить по своему желанию.
Опции
Теги (и их комбинации) можно использовать для запуска конкретного уровня CIS стандарта, раздела или отдельной рекомендации. Например:
- Запустить только задачи уровня 1
ansible-playbook playbook.yml -t level-1
- Запустить только задачи раздела 3
ansible-playbook playbook.yml -t section-3
- Запустить только задачи 1.3.1 и 2.2.10
ansible-playbook playbook.yml -t 1.3.1,2.2.10
- Запустить только оцененные задачи
ansible-playbook playbook.yml -t scored
Ограничения
В настоящее время реализованы только элементы уровня 1 бенчмарка. Элементы уровня 2 будут добавлены по мере возможности.
Следующие проверки не были реализованы:
- 3.6.2. Правила брандмауэра специфичны для окружения.
- 3.6.3. Правила брандмауэра специфичны для окружения.
- 3.6.4. Правила брандмауэра специфичны для окружения.
- 3.6.5. Правила брандмауэра специфичны для окружения.
- 4.2.1.2. Определение того, что должно быть записано, и место назначения сообщений специфично для окружения.
- 4.2.2.2. Определение того, что должно быть записано, и место назначения сообщений специфично для окружения.
- 4.2.2.3. Редактирование конфигурационного файла syslog-ng на месте считается слишком неточным, и лучше решать это с помощью предоставленного конфигурационного файла, который охватывает это и другие связанные требования.
- 4.2.2.4. Редактирование конфигурационного файла syslog-ng на месте считается слишком неточным, и лучше решать это с помощью предоставленного конфигурационного файла, который охватывает это и другие связанные требования.
- 4.2.2.5. Редактирование конфигурационного файла syslog-ng на месте считается слишком неточным, и лучше решать это с помощью предоставленного конфигурационного файла, который охватывает это и другие связанные требования.
- 4.3. Конфигурация logrotate специфична для сайта.
- 5.3.2. Многострочное редактирование файлов конфигурации pam считается слишком неточным и опасным, и лучше решать это с помощью предоставленного конфигурационного файла, который охватывает это и другие связанные требования.
- 5.3.3. Многострочное редактирование файлов конфигурации pam считается слишком неточным и опасным, и лучше решать это с помощью предоставленного конфигурационного файла, который охватывает это и другие связанные требования.
Совместимость
Эта роль совместима со следующими версиями ansible:
- 2.0.2
- 2.1.3
- 2.2.0
- 2.3.0
- 2.7.0
- 2.8.x
- 2.9.x
Эта роль не была протестирована с другими версиями ansible.
Тестирование
Следующие процессы тестирования применяются разработчиком этой роли:
- Проверяется синтаксис роли. Смотрите
make syntax
. - Выполняется
ansible-review
для роли, и любые предупреждения, которые считаются уместными, устраняются. Смотритеmake review
. - Роль применяется к контейнеру Docker с использованием как ansible v2.1.3, так и ansible v2.2. Смотрите
make test
.
Следующие тесты были помечены, но еще не реализованы:
- Тестирование применения роли к образу Vagrant
mvbcoding/awslinux
с использованием провизионера ansible.
Лицензия
ПРИМЕЧАНИЕ: Существовала некоторая путаница с лицензией, которая должна использоваться для этой роли Ansible. Исходный код этой роли от Эндрю Кортни не имел файла лицензии. Однако meta/main.yml ссылалась на MIT, но README (ниже) упоминала BSD. Не получив обратной связи от Эндрю (через создание проблемы к исходному коду и обращение к Эндрю через LinkedIn), я решил принять MIT лицензию для этой роли.
MIT.
Информация об авторе
Роль была изначально разработана Энтом Кортни.
Эта роль была дополнительно разработана Беном Райтом.
Все отзывы, проблемы и пулл-реквесты приветствуются и оцениваются.
Idempotent CIS Benchmarks for RHEL/CentOS Linux V2
ansible-galaxy install HarryHarcourt/Ansible-RHEL7-CIS-Benchmarks