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 模块
  • Shadow 密码套件配置
  • 配置系统路径权限
  • 通过软限制禁用核心转储
  • 将 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] - 允许通过默认 recipe 精细控制应执行哪些组件。详见下文
  • ['os-hardening']['desktop']['enable'] = false 如果这是桌面系统(即 Xorg、KDE/GNOME/Unity 等),则为 true
  • ['os-hardening']['network']['forwarding'] = false 如果此系统需要数据包转发(例如路由器),则为 true,否则为 false
  • ['os-hardening']['network']['ipv6']['enable'] = false
  • ['os-hardening']['network']['arp']['restricted'] = true 如果你希望限制 ARP 通告和应答行为,则为 true,否则为 false
  • ['os-hardening']['env']['extra_user_paths'] = [] 向用户的 PATH 变量添加额外路径(默认为空)。
  • ['os-hardening']['env']['umask'] = "027"
  • ['os-hardening']['env']['root_path'] = "/" root 挂载的位置
  • ['os-hardening']['auth']['pw_max_age'] = 60 最大密码年龄
  • ['os-hardening']['auth']['pw_min_age'] = 7 最小密码年龄(在允许任何其他密码更改之前)

控制包含的组件

default.rb 根据系统的 ohai 自动检测属性包含其他组件。例如,不要在非 RHEL 系统上执行 selinux。你可以通过在 override 级别设置 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

在当前实现中,不同组件位于不同的 recipes 中。有关可能的组件名称,请参阅可用的 recipes 或 default.rb。

使用方法

将 recipes 添加到 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

Fork 的 CI 测试

你可以在 Travis CI 中启用对 fork 的测试。默认情况下,你将获得使用 kitchen-dokken 的代码风格检查、规范测试和集成测试。

使用 kitchen-dokken 的集成测试并不能覆盖所有内容,因为它们运行在容器环境中。 可以使用 DigitalOcean 执行完整的集成测试。

如果你希望为 fork 运行完整的集成测试,则需要在 fork 的设置中添加以下环境变量:

  • DIGITALOCEAN_ACCESS_TOKEN - DigitalOcean 的访问令牌
  • CI_SSH_KEY - 某个 ssh 密钥的私钥部分,可用于 DigitalOcean 上的实例,以 base64 编码形式提供(例如 cat id_rsa | base64 -w0 ; echo)
  • DIGITALOCEAN_SSH_KEY_IDS - CI_SSH_KEY 在 DigitalOcean 中的 ID,更多信息请参阅此处

贡献者 + 致谢

  • 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 许可证 2.0 版(“许可证”)授权; 除非遵守许可证,否则你不得使用此文件。 你可以在以下位置获取许可证副本:

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

除非适用法律要求或书面同意,否则根据许可证分发的软件按“原样”分发, 不附带任何明示或暗示的保证或条件。 请参阅许可证以了解特定语言下的权限和限制。

下载工具
  • ['os-hardening']['auth']['pw_warn_age'] = 7 在最大密码年龄到来之前,提前多少天警告即将发生的更改
  • ['os-hardening']['auth']['uid_min'] = 1000 useradd 分配的 UID 下限
  • ['os-hardening']['auth']['uid_max'] = 60000 useradd 分配的 UID 上限
  • ['os-hardening']['auth']['gid_min'] = 1000 groupadd 分配的 GID 下限
  • ['os-hardening']['auth']['gid_max'] = 60000 groupadd 分配的 GID 上限
  • ['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 如果你希望在 PAM 中使用 passwdqc 进行强密码检查,则为 true
  • ['os-hardening']['auth']['pam']['passwdqc']['options'] = "min=disabled,disabled,16,12,8" 设置为要传递给 passwdqc 的任何选项行(作为字符串)
  • ['os-hardening']['auth']['pam']['passwdqc']['template_cookbook'] = 'os-hardening' 设置为获取 /usr/share/pam-configs/passwdqc 文件模板的 cookbook 名称
  • ['os-hardening']['auth']['pam']['tally2']['template_cookbook'] = 'os-hardening' 设置为获取 /usr/share/pam-configs/tally2 文件模板的 cookbook 名称
  • ['os-hardening']['auth']['pam']['system-auth']['template_cookbook'] = 'os-hardening' 设置为获取 /etc/pam.d/system-auth-ac 文件模板的 cookbook 名称
  • ['os-hardening']['security']['users']['allow'] = [] 允许用户执行的操作列表。可能包含:change_user
  • ['os-hardening']['security']['kernel']['enable_module_loading'] = true 如果你希望在系统运行后允许更改内核模块(例如 modprobe、rmmod),则为 true
  • ['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 如果你希望减少 SUID/SGID 位,则为 true。已经有一个默认配置的搜索项目列表,但你也可以添加自己的
  • ['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 如果你希望从任何未在 blacklist 中明确配置的文件中移除 SUID/SGID 位,则为 true。这将使每次 Chef 运行都搜索已挂载的文件系统,查找未在默认和用户黑名单中配置的 SUID/SGID 位。如果找到 SUID/SGID 位,它将被移除,除非该文件在你的 whitelist 中。
  • ['os-hardening']['security']['suid_sgid']['dry_run_on_unknown'] = false 类似于上面的 remove_from_unknown,只是不移除 SUID/SGID 位。 它仍会搜索文件系统以查找 SUID/SGID 位,但只会将它们打印在日志中。此选项仅在首次为 SUID/SGID 位配置 remove_from_unknown 时推荐使用,这样你可以看到正在被更改的文件,并对你的 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 以使用宽松模式。