Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
chef-os-hardening — Этот chef-поваренный рецепт (cookbook) предоставляет множество конфигураций, связанных с безопасностью, обеспечивая всестороннюю базовую защиту. | Kitploit
Инструменты/GitHubGitHub/dev-sec/chef-os-hardening
Безопасность облачной инфраструктурыАудит конфигурацииDevSecOpsАутентификация
GitHubdev-sec/chef-os-hardening

chef-os-hardening

Этот chef-поваренный рецепт (cookbook) предоставляет множество конфигураций, связанных с безопасностью, обеспечивая всестороннюю базовую защиту.

Репозиторий
45213261 месяц назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Сайт
Поделиться

os-hardening (Chef cookbook)

Supermarket Tests

Описание

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

Он настраивает:

  • Настройка управления пакетами, например, разрешает только подписанные пакеты
  • Удаление пакетов с известными проблемами
  • Настройка модуля pam и pam_limits
  • Конфигурация пакета теневых паролей
  • Настройка прав доступа к системным путям
  • Отключение дампов памяти (core dumps) через мягкие лимиты
  • Ограничение входа root только системной консолью
  • Установка SUID-битов
  • Настройка параметров ядра через sysctl

Он не будет:

  • Обновлять системные пакеты
  • Устанавливать исправления безопасности

Требования

  • Chef >= 14.13.11

Платформы

  • Ubuntu 20.04, 22.04, 24.04, 26.04
  • CentOS Stream 9, 10
  • AlmaLinux 8, 9, 10
  • Rocky Linux 8, 9, 10
  • Oracle Linux 8, 9, 10
  • Debian 13
  • Fedora 43, 44

Атрибуты

  • ['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'] список пакетов для удаления, по умолчанию мы удаляем следующие пакеты:
    • xinetd (NSA, Глава 3.2.1)
    • inetd (NSA, Глава 3.2.1)
    • tftp-server (NSA, Глава 3.2.5)
    • ypserv (NSA, Глава 3.2.4)
    • telnet-server (NSA, Глава 3.2.2)
    • rsh-server (NSA, Глава 3.2.3)
  • ['os-hardening']['security']['selinux_mode'] = 'unmanaged' установите unmanaged, если вы хотите оставить конфигурацию selinux как есть. Установите enforcing для принудительного применения или permissive для разрешающего режима SELinux.

Управление включенными компонентами

default.rb включает другие компоненты на основе атрибутов автоматического определения ohai вашей системы. Например, не выполняйте selinux на системах, отличных от RHEL. Вы можете переопределить это поведение и принудительно включить или отключить компоненты, установив атрибуты в node['os-hardening']['components'] на уровне переопределения. Пример

root@kitploit:~
# некоторый файл атрибутов
# не включать 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, он должен быть последним:

root@kitploit:~
"recipe[os-hardening]"

Настройте атрибуты:

root@kitploit:~
"security" : {
  "kernel" : {
    "enable_module_loading" : true
  }
},

Локальное тестирование

Локальное тестирование

Пожалуйста, установите chef-dk, VirtualBox или VMware Workstation и Vagrant.

Проверка линтером выполняется с помощью rubocop и foodcritic:

root@kitploit:~
$ chef exec rake lint
.....

Модульные/спецификационные тесты выполняются с помощью chefspec:

root@kitploit:~
$ chef exec rake spec
.....

Интеграционные тесты выполняются с помощью test-kitchen и inspec:

root@kitploit:~
$ chef exec rake kitchen
.....
# или вы можете использовать kitchen напрямую
$ kitchen test

CI-тестирование форков

Вы можете включить тестирование своего форка в Travis CI. По умолчанию вы получите линтинг, спецификационные тесты и интеграционные тесты с kitchen-dokken.

Интеграционные тесты с kitchen-dokken охватывают не все, так как они выполняются в контейнерной среде. Полные интеграционные тесты могут быть выполнены с использованием DigitalOcean.

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

  • DIGITALOCEAN_ACCESS_TOKEN — токен доступа для DigitalOcean
  • CI_SSH_KEY — закрытая часть некоторого ssh-ключа, доступного на DigitalOcean для ваших экземпляров, в форме base64 (например, cat id_rsa | base64 -w0 ; echo)
  • DIGITALOCEAN_SSH_KEY_IDS — ID в DigitalOcean для CI_SSH_KEY, см. это для получения дополнительной информации

Участники + Благодарности

  • Dominik Richter arlimus
  • Bernhard Weisshuhn bkw
  • Christoph Hartmann chris-rock
  • Edmund Haselwanter ehaselwanter
  • Patrick Meier atomic111
  • Artem Sidorenko artem-sidorenko

Этот cookbook в основном основан на руководствах:

  • Arch Linux wiki, Sysctl hardening
  • Ubuntu Security/Features
  • NSA: Guide to the Secure Configuration of Red Hat Enterprise Linux 5
  • Deutsche Telekom, Group IT Security, Security Requirements (German)

Спасибо всем вам!!

Вклад в проект

См. руководство для участников.

Лицензия и автор

  • Автор:: Dominik Richter [email protected]
  • Автор:: Deutsche Telekom AG

Лицензировано на условиях Apache License, Version 2.0 («Лицензия»); вы не можете использовать этот файл, кроме как в соответствии с Лицензией. Вы можете получить копию Лицензии по адресу

root@kitploit:~
http://www.apache.org/licenses/LICENSE-2.0

Если это не требуется применимым законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по Лицензии, распространяется на основе «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, явных или подразумеваемых. См. Лицензию для конкретного языка, регулирующего разрешения и ограничения.

Скачать инструмент