
Этот chef-поваренный рецепт (cookbook) предоставляет множество конфигураций, связанных с безопасностью, обеспечивая всестороннюю базовую защиту.
Этот cookbook предоставляет множество конфигураций, связанных с безопасностью, обеспечивая всестороннюю базовую защиту.
Он настраивает:
pam и pam_limitsОн не будет:
['os-hardening']['components'][COMPONENT_NAME] — позволяет точно контролировать, какие компоненты должны выполняться через рецепт по умолчанию. Подробнее см. ниже['os-hardening']['desktop']['enable'] = false
true, если это настольная система, т.е. Xorg, KDE/GNOME/Unity и т.д.['os-hardening']['network']['forwarding'] = false
true, если этой системе требуется пересылка пакетов (например, маршрутизатор), иначе false['os-hardening']['network']['ipv6']['enable'] = false['os-hardening']['network']['arp']['restricted'] = true
true, если вы хотите ограничить поведение анонсирования и ответа на ARP, иначе false['os-hardening']['env']['extra_user_paths'] = []
добавьте дополнительные пути в переменную PATH пользователя (по умолчанию пусто).['os-hardening']['env']['umask'] = "027"['os-hardening']['env']['root_path'] = "/"
где смонтирован корневой раздел['os-hardening']['auth']['pw_max_age'] = 60
максимальный срок действия пароля['os-hardening']['auth']['pw_min_age'] = 7
минимальный срок действия пароля (до разрешения любого другого изменения пароля)['os-hardening']['auth']['pw_warn_age'] = 7
количество дней до истечения максимального срока действия пароля для предупреждения о предстоящем
изменении['os-hardening']['auth']['uid_min'] = 1000
нижняя граница UID, назначаемых useradd['os-hardening']['auth']['uid_max'] = 60000
верхняя граница UID, назначаемых useradd['os-hardening']['auth']['gid_min'] = 1000
нижняя граница GID, назначаемых groupadd['os-hardening']['auth']['gid_max'] = 60000
верхняя граница GID, назначаемых groupadd['os-hardening']['auth']['retries'] = 5
максимальное количество попыток аутентификации, прежде чем учетная запись будет заблокирована на некоторое время['os-hardening']['auth']['lockout_time'] = 600
время в секундах, которое должно пройти, если учетная запись была заблокирована из-за слишком большого количества неудачных попыток аутентификации['os-hardening']['auth']['timeout'] = 60
тайм-аут аутентификации в секундах, поэтому вход в систему будет завершен, если это время истечет['os-hardening']['auth']['allow_homeless'] = false
true, если разрешить вход пользователям без домашнего каталога['os-hardening']['auth']['pam']['passwdqc']['enable'] = true
true, если вы хотите использовать строгую проверку паролей в PAM с помощью passwdqc['os-hardening']['auth']['pam']['passwdqc']['options'] = "min=disabled,disabled,16,12,8"
установите любую строку параметров, которую вы хотите передать в passwdqc['os-hardening']['auth']['pam']['passwdqc']['template_cookbook'] = 'os-hardening'
установите имя cookbook, из которого берется шаблон для файла /usr/share/pam-configs/passwdqc['os-hardening']['auth']['pam']['tally2']['template_cookbook'] = 'os-hardening'
установите имя cookbook, из которого берется шаблон для файла /usr/share/pam-configs/tally2['os-hardening']['auth']['pam']['system-auth']['template_cookbook'] = 'os-hardening'
установите имя cookbook, из которого берется шаблон для файла /etc/pam.d/system-auth-ac['os-hardening']['security']['users']['allow'] = []
список действий, которые пользователю разрешено выполнять. Может содержать: change_user['os-hardening']['security']['kernel']['enable_module_loading'] = true
true, если вы хотите разрешить изменение модулей ядра после запуска системы (например, modprobe, rmmod)['os-hardening']['security']['kernel']['disable_filesystems'] = ['cramfs', 'freevxfs', 'jffs2', 'hfs', 'hfsplus', 'squashfs', 'udf', 'vfat']
список модулей файловых систем ядра, которые занесены в черный список для загрузки (например, они не используются и могут быть отключены). Установите значение [], чтобы полностью избежать этого черного списка['os-hardening']['security']['kernel']['enable_sysrq'] = false['os-hardening']['security']['kernel']['enable_core_dump'] = false['os-hardening']['security']['suid_sgid']['enforce'] = true
true, если вы хотите уменьшить количество SUID/SGID-битов. Уже существует список элементов, которые настроены для поиска, но вы также можете добавить свои собственные['os-hardening']['security']['suid_sgid']['blacklist'] = []
список путей, у которых должны быть удалены SUID/SGID-биты['os-hardening']['security']['suid_sgid']['whitelist'] = []
список путей, у которых не должны изменяться SUID/SGID-биты['os-hardening']['security']['suid_sgid']['remove_from_unknown'] = false
true, если вы хотите удалять SUID/SGID-биты с любых файлов, которые явно не настроены в blacklist. Это заставит каждый запуск Chef выполнять поиск по смонтированным файловым системам на предмет SUID/SGID-битов, которые не настроены в черном списке по умолчанию и пользовательском черном списке. Если будет найден SUID/SGID-бит, он будет удален, если только этот файл не находится в вашем whitelist.['os-hardening']['security']['suid_sgid']['dry_run_on_unknown'] = false
как и remove_from_unknown выше, только SUID/SGID-биты не удаляются.
Он по-прежнему будет выполнять поиск по файловым системам на предмет SUID/SGID-битов, но будет только выводить их в ваш журнал. Эта опция рекомендуется только тогда, когда вы впервые настраиваете remove_from_unknown для SUID/SGID-битов, чтобы вы могли видеть файлы, которые изменяются, и вносить корректировки в свой whitelist и blacklist.['os-hardening']['security']['packages']['clean'] = true
удаляет пакеты с известными проблемами.['os-hardening']['security']['packages']['list'] = ['xinetd','inetd','ypserv','telnet-server','rsh-server']
список пакетов для удаления, по умолчанию мы удаляем следующие пакеты:
['os-hardening']['security']['selinux_mode'] = 'unmanaged'
установите unmanaged, если вы хотите оставить конфигурацию selinux как есть. Установите enforcing для принудительного применения или permissive для разрешающего режима SELinux.default.rb включает другие компоненты на основе атрибутов автоматического определения ohai вашей системы. Например, не выполняйте selinux на системах, отличных от RHEL. Вы можете переопределить это поведение и принудительно включить или отключить компоненты, установив атрибуты в node['os-hardening']['components'] на уровне переопределения. Пример
# некоторый файл атрибутов
# не включать sysctl и auditd
override['os-hardening']['components']['sysctl'] = false
override['os-hardening']['components']['auditd'] = false
# принудительно включить selinux
override['os-hardening']['components']['selinux'] = true
В текущей реализации различные компоненты расположены в разных рецептах. См. доступные рецепты или default.rb для возможных имен компонентов.
Добавьте рецепты в run_list, он должен быть последним:
"recipe[os-hardening]"
Настройте атрибуты:
"security" : {
"kernel" : {
"enable_module_loading" : true
}
},
Пожалуйста, установите chef-dk, VirtualBox или VMware Workstation и Vagrant.
Проверка линтером выполняется с помощью rubocop и foodcritic:
$ chef exec rake lint
.....
Модульные/спецификационные тесты выполняются с помощью chefspec:
$ chef exec rake spec
.....
Интеграционные тесты выполняются с помощью test-kitchen и inspec:
$ chef exec rake kitchen
.....
# или вы можете использовать kitchen напрямую
$ kitchen test
Вы можете включить тестирование своего форка в Travis CI. По умолчанию вы получите линтинг, спецификационные тесты и интеграционные тесты с kitchen-dokken.
Интеграционные тесты с kitchen-dokken охватывают не все, так как они выполняются в контейнерной среде. Полные интеграционные тесты могут быть выполнены с использованием DigitalOcean.
Если вы хотите иметь полные интеграционные тесты для своего форка, вам необходимо добавить следующие переменные окружения в настройках вашего форка:
DIGITALOCEAN_ACCESS_TOKEN — токен доступа для DigitalOceanCI_SSH_KEY — закрытая часть некоторого ssh-ключа, доступного на DigitalOcean для ваших экземпляров, в форме base64 (например, cat id_rsa | base64 -w0 ; echo)DIGITALOCEAN_SSH_KEY_IDS — ID в DigitalOcean для CI_SSH_KEY, см. это для получения дополнительной информацииЭтот cookbook в основном основан на руководствах:
Спасибо всем вам!!
Лицензировано на условиях Apache License, Version 2.0 («Лицензия»); вы не можете использовать этот файл, кроме как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу
http://www.apache.org/licenses/LICENSE-2.0
Если это не требуется применимым законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по Лицензии, распространяется на основе «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, явных или подразумеваемых. См. Лицензию для конкретного языка, регулирующего разрешения и ограничения.