kmonticolo.ansible_os_hardening

操作系统加固(Ansible角色)

构建状态 Gitter聊天 Ansible Galaxy

描述

该角色提供了众多与安全相关的配置,提供全面的基础保护。它旨在符合DevSec Linux 基准

它配置了:

  • 包管理,允许仅签名的软件包
  • 移除已知有问题的软件包
  • 配置pampam_limits模块
  • Shadow密码套件配置
  • 配置系统路径权限
  • 通过软限制禁用核心转储
  • 限制root用户仅能通过系统控制台登录
  • 设置SUID
  • 通过sysctl配置内核参数
  • 安装和配置auditd

它不会:

  • 更新系统软件包
  • 安装安全补丁

要求

  • Ansible 2.5.0

警告

如果在应用该角色后使用inspec测试机器,请确保将连接用户添加到os_ignore_users变量中。否则inspec会失败。有关更多信息,请参见问题 #124

如果您使用Docker / Kubernetes+Docker,需覆盖ipv4 IP转发的sysctl设置。

- hosts: localhost
  roles:
    - dev-sec.os-hardening
  vars:
    sysctl_overwrite:
      # 启用IPv4流量转发。
      net.ipv4.ip_forward: 1

变量

名称 默认值 描述
os_desktop_enable false 如果这是桌面系统(如Xorg,KDE/GNOME/Unity等),则设置为true
os_env_extra_user_paths [] 添加额外的路径到用户的PATH变量(默认为空)
os_env_umask 027 设置新文件的默认权限为750
os_auth_pw_max_age 60 最大密码有效期(设置为99999可以有效禁用)
os_auth_pw_min_age 7 最小密码有效期(在允许更改密码之前)
os_auth_retries 5 允许的最大身份验证尝试次数,超过后账户将被锁定
os_auth_lockout_time 600 账户因多次失败的身份验证尝试锁定后的等待时间(秒)
os_auth_timeout 60 身份验证超时时间(秒),超时后将退出登录
os_auth_allow_homeless false 如果允许没有主目录的用户登录则设置为true
os_auth_pam_passwdqc_enable true 如果希望在PAM中使用强密码检查,则设置为true
os_auth_pam_passwdqc_options "min=disabled,disabled,16,12,8" 传递给passwdqc的任意选项(作为字符串)
os_security_users_allow [] 用户被允许执行的操作列表,可能包含change_user
os_security_kernel_enable_module_loading true 如果希望在系统运行时允许更改内核模块,则设置为true
os_security_kernel_enable_core_dump false 如果内核崩溃或表现不正常并创建内核核心转储
os_security_suid_sgid_enforce true 如果希望减少SUID/SGID位,则设置为true
os_security_suid_sgid_blacklist [] 应该移除其SUID/SGID位的路径列表
os_security_suid_sgid_whitelist [] 不应更改其SUID/SGID位的路径列表
os_security_suid_sgid_remove_from_unknown false 如果希望从未在blacklist中明确配置的任何文件中移除SUID/SGID位,则设置为true
os_security_packages_clean true 移除已知有问题的软件包,见软件包部分
ufw_manage_defaults true 设置为true表示应用所有带有ufw_前缀的设置
ufw_ipt_sysctl '' 默认情况下,它在/etc/default/ufw中禁用IPT_SYSCTL。如果希望使用ufw覆盖/etc/sysctl.conf值,则将其设置为您的sysctl字典,例如/etc/ufw/sysctl.conf
ufw_default_input_policy DROP 设置ufw的默认输入策略为DROP
ufw_default_output_policy ACCEPT 设置ufw的默认输出策略为ACCEPT
ufw_default_forward_policy DROP 设置ufw的默认转发策略为DROP
os_auditd_enabled true 设置为false以禁用安装和配置auditd。

移除的软件包

我们移除以下软件包:

  • 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章)
  • prelink (open-scap)

被禁用的文件系统

我们禁用以下文件系统,因为它们很可能未被使用:

  • "cramfs"
  • "freevxfs"
  • "jffs2"
  • "hfs"
  • "hfsplus"
  • "squashfs"
  • "udf"
  • "vfat" # 仅当未使用uefi时

要防止某些文件系统被禁用,请将其添加到os_filesystem_whitelist变量中。

安装

使用ansible-galaxy安装该角色:

ansible-galaxy install dev-sec.os-hardening

示例剧本

- hosts: localhost
  roles:
    - dev-sec.os-hardening

更改sysctl变量

如果希望覆盖sysctl变量,可以使用sysctl_overwrite变量(在旧版本中需要覆盖整个sysctl_dict)。例如,如果希望将IPv4流量转发变量更改为1,可以这样做:

- hosts: localhost
  roles:
    - dev-sec.os-hardening
  vars:
    sysctl_overwrite:
      # 启用IPv4流量转发。
      net.ipv4.ip_forward: 1

或者,您可以将Ansible的hash-behaviour更改为merge,这样您只需覆盖所需的单个哈希。但请注意,改变hash-behaviour将影响您所有的剧本,且不推荐Ansible这样做。

本地测试

本地测试该角色的推荐方式是使用Docker。您需要在系统上安装Docker。请参见开始使用来获取适合您系统的Docker包。

您还可以使用Vagrant和Virtualbox或VMWare在本地运行测试。您需要在系统上安装Virtualbox和Vagrant。请参见Vagrant 下载来获取适合您系统的Vagrant包。在所有测试中,我们使用test-kitchen。如果您不熟悉test-kitchen,请查看他们的指南

接下来安装test-kitchen:

# 安装依赖项
gem install bundler
bundle install

使用Docker测试

# 快速测试一台机器
bundle exec kitchen test default-ubuntu-1404

# 测试所有机器
bundle exec kitchen test

# 用于开发
bundle exec kitchen create default-ubuntu-1404
bundle exec kitchen converge default-ubuntu-1404

使用Virtualbox测试

# 快速测试一台机器
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test default-ubuntu-1404

# 测试所有机器
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test

# 用于开发
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen create default-ubuntu-1404
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen converge default-ubuntu-1404

有关更多信息,请参见test-kitchen

贡献者与鸣谢

...

该角色主要基于以下指南:

感谢所有人!

贡献

请参阅贡献者指南

许可和作者

  • 作者:: Sebastian Gumprich

根据Apache许可证第2.0版(“许可证”)授权; 您不得使用此文件,除非符合许可证的规定。 您可以在以下地址获取许可证的副本:

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,基于许可证分发的软件是以“原样”基础分发的, 不附带任何形式的保证或条件,无论是明示或暗示的。 有关许可证的具体条款,请参见许可证。

关于项目

This role provides numerous security-related configurations, providing all-round base protection.

安装
ansible-galaxy install kmonticolo.ansible_os_hardening
许可证
Unknown
下载
72
拥有者
DevSecOps Engineer