第 3 章 对外部内核参数的重要更改

本章为系统管理员提供了与 Red Hat Enterprise Linux 7 附带的内核有显著变化的总结。这些更改包括添加或更新的 proc 条目、sysctlsysfs 默认值、引导参数、内核配置选项或任何明显的行为变化。

新内核参数

audit = [KNL]

此参数启用审计子系统。

该值可以是 1(启用)也可以是 0(禁用)。默认值为 unset,它不是一个新的选项,但没有包括在之前的文档中。

格式:{ "0" | "1" }

audit_backlog_limit = [KNL]

此参数设置审计队列大小限制。

默认值为 64。

格式: <int>(必须 >=0)

ipcmni_extend [KNL]
这个参数将唯一的 System V IPC 标识符的最大数量从 32 768 扩展到 16 777 216。
nospectre_v1 [X86,PPC]

这个参数禁用对 Spectre 变体 1(跳过绑定检查)的缓解方案。

使用这个选项时可能会在系统中泄漏数据。

tsx = [X86]

这个参数控制支持 TSX 控制的 Intel 处理器中的事务同步扩展(TSX)功能。

这些选项是:

  • on - 在系统中启用 TSX。虽然对所有已知的安全漏洞都有缓解措施,但以前出现的一些与预测相关的 CVE 是因为 TSX 造成的,因此保留它可能会带来未知的安全风险。
  • off - 在系统上禁用 TSX。请注意,这个选项只对那些不会受到 Microarchitectural Data Sampling(MDS)影响的新的 CPU 有效。换句话说,它们具有 MSR_IA32_ARCH_CAPABILITIES.MDS_NO=1,并通过 microcode 更新获取新的 IA32_TSX_CTRL Model-specific register (MSR)。这个新的 MSR 可以可靠地取消激活 TSX 地功能。
  • auto - 如果 X86_BUG_TAA 存在,则禁用 TSX,否则在系统上启用 TSX。

    不指定这个选项等同于 tsx=on,因为红帽已隐式启用了 TSX。

    如需了解更多详细信息,请参阅 TAA - TSX Asynchronous Abort 的文档。

tsx_async_abort = [X86,INTEL]

此参数用来控制对 TSX Async Abort(TAA)漏洞的缓解方案。

与 MDS(Micro-architectural Data Sampling)类似,某些支持 TSX(Transactional Synchronization Extensions)的 CPU 可能会受到 CPU 内部缓冲区的攻击。在某些情况下,利用这个安全漏洞可以将信息转发到披露的 gadget。

在存在安全漏洞的处理器中,缓存侧频道攻击可以利用预测的数据转发,访问到应该无法直接访问到的数据。

这些选项是:

  • full - 如果启用了 TSX,则在存在安全漏洞的 CPU 上启用 TAA 缓解方案。
  • full,nosmt - 在存在安全漏洞的 CPU 上启用 TAA 缓解方案,并禁用 Simultaneous Multi Threading (SMT)。如果已禁用了 TSX,则不会禁用 SMT,因为 CPU 不会受到跨线程 TAA 攻击。
  • off - 无条件禁用 TAA 缓解方案。

    在 MDS 受影响的机器上,通过活跃的 MDS 缓解方案可以防止 tsx_async_abort=off 参数,因为这两种漏洞都使用相同的机制缓解。因此,要禁用这个缓解方案,还需要指定 mds=off 参数。

    不指定这个选项等同于 tsx_async_abort=full。对于受 MDS 影响并实施了 MDS 缓解方案的 CPU 中,则不需要使用 TAA 缓解方案,它并不会提供任何额外的缓解。

    如需了解更多详细信息,请参阅 TAA - TSX Asynchronous Abort 的文档。

更新的内核参数

mitigations = [X86,PPC,S390]

控制 CPU 漏洞的可选缓解方案。这是一组策展的、架构独立的选项,每个选项都是现有的特定架构选项的聚合。

这些选项是:

  • off - 禁用所有可选 CPU 缓解方案。这会提高系统性能,但可能会使用户暴露一些 CPU 漏洞。

    等同于:

    • nopti [X86,PPC]
    • nospectre_v1 [X86,PPC]
    • nobp=0 [S390]
    • nospectre_v2 [X86,PPC,S390]
    • spec_store_bypass_disable=off [X86,PPC]
    • l1tf=off [X86]
    • mds=off [X86]
    • tsx_async_abort=off [X86]
    • kvm.nx_huge_pages=off [X86]

      例外:

      如果 kvm.nx_huge_pages =force,则 mitigations=off 对 kvm.nx_huge_pages 参数没有任何影响。

  • auto (默认)- 缓解所有 CPU 漏洞,但启用 Simultaneous 多线程(SMT),即使它存在安全漏洞。这适用于不希望在内核升级过程中禁用 SMT,或者有其他方法避免 SMT 攻击的用户。

    等同于:

    • (默认行为)
  • auto,nosmt - 缓解所有 CPU 漏洞,如果需要,禁用 Simultaneous 多线程(SMT)。这适用于需要实施所有缓解方案的用户,即使这意味着会丢失 SMT 的功能。

    等同于:

    • l1tf=flush,nosmt [X86]
    • mds=full,nosmt [X86]
    • tsx_async_abort=full,nosmt [X86]

新的 /proc/sys/fs 参数

negative-dentry-limit

这个参数的整数值指定系统中允许的负 dentry 总数(占可用系统内存总量的百分比)的一个软限制。这个值的允许范围为 0-100。值为 0 表示没有限制。数值代表系统内存总量的 0.1% 的倍数。因此,10% 是可以指定的最大值。

在有 32GB 内存的 AMD64 或者 Intel 64 系统中,11% 的限制代表大约一百七十万(1.7M)个 dentry,或每 GB 内存大约有 5.3 万个 dentry。