Newton 系列发布说明

14.2.11

安全问题

  • PermitRootLogin 在 ssh 配置中已从 yes 更改为 without-password。这将仅允许使用密钥通过 ssh 身份验证 root。

14.0.5

新特性

  • chrony 的安装默认情况下仍然启用,但现在由变量 security_enable_chrony 控制。

14.0.0

新特性

  • 该角色现在在早期启动期间启用审计,以符合 V-38438 的要求。 默认情况下,/etc/default/grub.d/ 中的 GRUB 配置变量将被更新,并且活动的 grub.cfg 将被更新。

    部署者可以完全选择退出此更改,方法是设置一个变量

    security_enable_audit_during_boot: no
    

    部署者可以选择加入此更改,而无需自动更新活动 grub.cfg 文件,方法是设置以下 Ansible 变量

    security_enable_audit_during_boot: yes
    security_enable_grub_update: no
    
  • 已添加一个任务以禁用安全 ICMP 重定向,以满足 V-38526 的要求。 此更改可能会在某些环境中引起问题,因此默认情况下已禁用它。 部署者可以通过将 security_disable_icmpv4_redirects_secure 设置为 yes 来启用该任务(禁用安全 ICMP 重定向)。

  • 已添加一个新任务以禁用 ICMPv6 重定向,以满足 V-38548 的要求。 但是,由于此更改可能会导致正在运行的 OpenStack 环境出现问题,因此默认情况下已禁用它。 希望启用此任务(并禁用 ICMPv6 重定向)的部署者应将 security_disable_icmpv6_redirects 设置为 yes

  • AIDE 在执行数据库初始化和执行检查时,配置为跳过整个 /var 目录。这可以减少磁盘 I/O,并使这些任务完成得更快。

    这也允许初始化成为一个阻塞过程,Ansible 将等待初始化完成,然后再运行下一个任务。

  • 包含在 auditd 规则模板中的规则审计了 AppArmor 策略的更改,但未审计 SELinux 策略的更改。 现在,/etc/selinux 中的任何 SELinux 策略更改都将由 auditd 记录。

  • 虽然 STIG 要求记录恶意的网络包,但默认情况下现在已禁用记录。日志会迅速填满 syslog 服务器或使物理控制台无法使用。

    需要启用此日志记录的部署者需要设置以下 Ansible 变量

    security_sysctl_enable_martian_logging: yes
    
  • 安全角色现在具有任务,这些任务将在使用 upstart(Ubuntu 14.04)或 systemd(Ubuntu 16.04 和 CentOS 7)的服务器上禁用图形界面。这些更改在重新启动后生效。

    需要图形界面的部署者需要设置以下 Ansible 变量

    security_disable_x_windows: no
    
  • 已添加一个 Ansible 以禁用 CentOS 系统上的 rdisc 服务(如果该服务已安装在系统上)。

    部署者可以通过将 security_disable_rdisc 设置为 no 来选择退出此更改。

  • 安全角色现在默认情况下将启用适用于使用的 Linux 发行版的 Linux 安全模块 (LSM)。部署者可以通过设置以下 Ansible 变量来选择退出此更改

    security_enable_linux_security_module: False
    

    STIG V-51337 的文档提供了有关如何启用每个 LSM 以及 SELinux 的特殊说明的更多信息。

  • 添加了一个任务,用于限制 ICMPv4 重定向,以满足 STIG 中 V-38524 的要求。此配置默认禁用,因为它在某些环境中可能导致 LXC 出现问题。

    部署者可以通过设置 Ansible 变量来启用此配置

    security_disable_icmpv4_redirects: yes
    
  • 添加的安全角色添加的 audit 规则现在具有键字段,这使得将 audit 日志条目链接到导致其出现的 audit 规则更容易。

  • 已添加一个新的配置参数 security_ntp_bind_local_interfaces 到 security 角色,以限制 chronyd 将侦听 NTP 请求的网络接口。

  • security 角色现在支持配置 apt/yum 任务是安装最新的可用软件包,还是仅确保软件包存在。默认操作是确保安装最新的软件包。可以通过将 security_package_state 设置为 present 来更改执行的操作,以仅确保软件包存在。

  • V-38476 中软件包验证的 GPG 密钥检查现在也适用于 CentOS 7,除了 Red Hat Enterprise Linux 7 之外。检查仅查找来自 Red Hat 的 GPG 密钥,并跳过任何其他 GPG 密钥,例如从 EPEL 存储库导入的密钥。

  • 添加了任务来搜索在 CentOS 系统上没有正确 SELinux 标签的任何设备文件。如果找到任何这些设备标签,playbook 执行将停止并显示错误消息。

  • ansible-hardening 角色支持将 Red Hat Enterprise Linux 6 STIG 配置应用于运行 CentOS 7 和 Ubuntu 16.04 LTS 的系统。

升级说明

  • 变量 security_audit_apparmor_changes 现在已重命名为 security_audit_mac_changes,并且默认已启用。将 security_audit_mac_changes 设置为 no 将禁用对 AppArmor 策略(在 Ubuntu 中)或 SELinux 策略(在 CentOS 中)任何更改的系统调用审计。

  • 变量 security_sysctl_enable_tcp_syncookies 替换了 security_sysctl_tcp_syncookies,现在是一个布尔值而不是整数。它仍然默认启用,但部署者可以通过设置以下 Ansible 变量来禁用 TCP syncookies

    security_sysctl_enable_tcp_syncookies: no
    
  • security 角色在执行时始终检查是否安装了最新软件包。如果部署者希望更改检查以仅验证软件包是否存在,则应将选项 security_package_state 设置为 present

  • 所有自主访问控制 (DAC) 审计默认情况下均已禁用。这减少了部署和次要升级期间生成的日志量。以下变量现在设置为 no

    security_audit_DAC_chmod: no
    security_audit_DAC_chown: no
    security_audit_DAC_lchown: no
    security_audit_DAC_fchmod: no
    security_audit_DAC_fchmodat: no
    security_audit_DAC_fchown: no
    security_audit_DAC_fchownat: no
    security_audit_DAC_fremovexattr: no
    security_audit_DAC_lremovexattr: no
    security_audit_DAC_fsetxattr: no
    security_audit_DAC_lsetxattr: no
    security_audit_DAC_setxattr: no
    
  • 安全角色中的所有变量现在都以 security_ 为前缀,以避免与其他角色中的变量冲突。之前在以前版本中使用过安全角色的所有部署者都需要在所有安全角色变量前加上 security_

    例如,部署者可以使用以下变量禁用直接 root ssh 登录

    ssh_permit_root_login: yes
    

    该变量将变为

    security_ssh_permit_root_login: yes
    

错误修复

  • 由于 /run 目录中的文件和目录只是临时文件,并且在服务启动和停止时经常更改,因此从 AIDE 检查中排除该目录。

  • security_initialize_aide 设置为 yes 时,AIDE 初始化始终在后续 playbook 运行中运行。如果未安装 AIDE 或 AIDE 数据库已存在,则初始化将被跳过。

    有关更多详细信息,请参阅 bug 1616281

  • 该角色先前没有在生成新规则文件后重启 audit 守护程序。已修复 bug,并且在任何 audit 规则更改后将重启 audit 守护程序。

  • defaults/main.yml 中的基于字典的变量现在是单独的变量。无法按照文档说明更改字典型变量。而是需要覆盖整个字典。部署者必须使用新的变量名才能启用或禁用安全角色应用的安全性配置更改。有关更多信息,请参阅 Launchpad Bug 1577944

  • 默认情况下现在已禁用失败的访问日志记录,并且可以通过将 security_audit_failed_access 更改为 yes 来启用。rsyslog 守护程序定期检查日志文件的存在,此 audit 规则被触发的频率很高,这导致了非常大的 audit 日志。

  • 已添加一个 Ansible 任务,用于在 CentOS 系统上禁用 netconsole 服务(如果系统上已安装该服务)。

    部署者可以通过将 security_disable_netconsole 设置为 no 来选择退出此更改。

  • 安全角色先前将 /var/log/audit 中的所有 audit 日志文件的权限设置为 0400,但这会阻止 audit 守护程序写入活动日志文件。这将阻止 auditd 干净地启动或重启。

    该任务现在会删除任何不符合 STIG 要求的权限。任何满足或超过 STIG 要求的日志文件将不会被修改。

  • 当安全角色在 Ansible 的检查模式下运行并且提供了标签时,check_mode 变量没有被设置。任何依赖于该变量的任务都会失败。已修复此 bug,并且 check_mode 变量现在在每次 playbook 运行时都正确设置。

  • 安全角色现在处理包含 Match 语句的 ssh_config 文件。会添加一个标记到配置文件中,任何新的配置项都将添加到该标记下方。此外,每次更改 ssh 配置文件时都会验证该文件。

  • auditd 规则用于审计 V-38568(文件系统挂载),在 auditd 日志中被错误地标记为键 export-V-38568。现在它们使用键 filesystem_mount-V-38568 正确记录。