本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AL2023 内核强化
AL2023 中的 6.1 Linux 内核配置和构建时包含多个强化选项和功能。
内核强化选项(与架构无关)
允许 ACPI 方法 inserted/replaced 在运行时运行 (CONFI_ACPI_CUSTOM_METHOD)
Amazon Linux 禁用了此选项,因为它允许 root 用户写入任意内核内存。
此选项是内核自我保护项目推荐设置
其他二进制格式 (binfmt_misc)
       尽管此选项是内核自我保护项目 (KSPP) 推荐设置
BUG() 支持
       此选项是内核自我保护项目推荐设置
如果内核在检查内核内存结构的有效性时遇到数据损坏,则执行 BUG()
       Linux 内核的某些部分会检查数据结构的内部一致性,并在检测到数据损坏执行 BUG()。
 此选项是内核自我保护项目推荐设置
COMPAT_BRK
       此选项禁用后(这就是 Amazon Linux 配置内核的方式),则 randomize_va_space sysctl 设置会默认为 2,这也会在 mmap 基础地址、堆栈和 VDSO 页面随机化之上启用随机掩码。
 此选项存在于内核中,目的是提供与 1996 年及更早版本的一些古老 libc.so.5 二进制文件的兼容性。
 此选项是内核自我保护项目推荐设置
COMPAT_VDSO
       此配置选项与 x86-64 有关,与 aarch64 无关。将此设置为 n,Amazon Linux 内核不会在可预测的地址上显示 32 位虚拟动态共享对象 (VDSO)。自 2004 年以来,已知因该选项设置为 n 而被损坏的最新 glibc 版本是 glibc 2.3.3。
 此选项是内核自我保护项目推荐设置
CONFIG_DEBUG 门控强化 
       受限的 Linux 内核配置选项CONFIG_DEBUG通常设计用于为调试问题而构建的内核,性能之类的东西不是优先事项。  AL2023 启用CONFIG_DEBUG_LIST硬化选项。
在配置 IOMMU 之前,禁用 EFI 存根中 PCI 设备的 DMA
 尽管此选项是内核自我保护项目 (KSPP) 推荐设置
用于在内核和用户空间之间复制内存的强化功能
当内核需要将内存复制到用户空间或从用户空间复制内存时,此选项会启用一些检查,可防范某些类别的堆溢出问题。
 CONFIG_HARDENED_USERCOPY_FALLBACK 选项存在于内核 4.16 到 5.15 中,可帮助内核开发人员通过 WARN() 发现任何缺失的允许列表条目。由于  AL2 023 附带了 6.1 内核,因此此选项与  AL2 023 不再相关。
 该CONFIG_HARDENED_USERCOPY_PAGESPAN选项主要作为开发人员的调试选项存在于内核中,在  AL2 023 年不再适用于 6.1 内核。
 此选项是内核自我保护项目推荐设置
休眠支持
 尽管此选项是内核自我保护项目 (KSPP) 推荐设置
随机数生成
AL2023 内核的配置是为了确保有足够的熵可供内部使用。 EC2
CONFIG_INET_DIAG
       尽管此选项是内核自我保护项目 (KSPP) 推荐设置
在分配和取消分配时,将所有内核页和 slab 分配器内存设置为零
 尽管此选项是内核自我保护项目 (KSPP) 推荐设置CONFIG_INIT_ON_ALLOC_DEFAULT_ON 行为可以通过将 init_on_alloc=1 添加到内核命令行来启用,CONFIG_INIT_ON_FREE_DEFAULT_ON 行为可以通过添加 init_on_free=1 来启用。
 将所有堆栈变量初始化为零 (CONFIG_INIT_STACK_ALL_ZERO) 
       尽管此选项是内核自我保护项目 (KSPP) 推荐设置
内核模块签名
 AL2023 对内核模块的签名进行签名和验证。为了保持构建第三方模块的用户的兼容性,尚未启用要求模块具有有效签名的 CONFIG_MODULE_SIG_FORCE 选项。对于想要确保所有内核模块都经过签名的用户,可以配置 锁定 Linux 安全模块 (LSM) 以强制执行此操作。
kexec
       尽管此选项是内核自我保护项目 (KSPP) 推荐设置kdump 功能。
IOMMU Support 
       AL2023 启用 IOMMU 支持。默认情况下,CONFIG_IOMMU_DEFAULT_DMA_STRICT 选项未启用,但可以通过将 iommu.passthrough=0 iommu.strict=1 添加到内核命令行来配置此功能。
kfence
       尽管此选项是内核自我保护项目 (KSPP) 推荐设置
 传统 pty 支持 
       AL2023 使用现代PTY界面 (devpts)。
 此选项是内核自我保护项目推荐设置
锁定 Linux 安全模块 (LSM)
 AL2023 构建 lockdown LSM,它将在使用安全启动时自动锁定内核。
 CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY 选项未启用。尽管此选项是内核自我保护项目 (KSPP) 推荐设置
页面中毒
 尽管此选项是内核自我保护项目 (KSPP) 推荐设置
堆栈保护器
  AL2023 内核是使用堆栈保护器功能构建的,可通过GCC选项启用。-fstack-protector-strong
 此选项是内核自我保护项目推荐设置
seccomp BPF API
 诸如 systemd 和容器运行时之类的软件使用 seccomp 强化功能来强化用户空间应用程序。
 此选项是内核自我保护项目推荐设置
panic() 超时 
        AL2023 内核配置此值设置为0,这意味着内核在死机后不会重新启动。尽管此选项是内核自我保护项目 (KSPP) 推荐设置sysctl、/proc/sys/kernel/panic 和在内核命令行上进行配置。
安全模型
AL2默认情况下,023 SELinux 在允许模式下启用。有关更多信息,请参阅 为 AL2 0 SELinux 23 设置模式。
  锁定 Linux 安全模块 (LSM)  和 yama 模块也已启用。
/proc/kcore
       尽管此选项是内核自我保护项目 (KSPP) 推荐设置
在系统调用进入时进行内核栈偏移随机化
 尽管此选项是内核自我保护项目 (KSPP) 推荐设置randomize_kstack_offset=on 来启用。
 引用计数检查 (CONFIG_REFCOUNT_FULL) 
       尽管此选项是内核自我保护项目 (KSPP) 推荐设置
 调度程序对 SMT 内核的感知 (CONFIG_SCHED_CORE) 
        AL2023 内核是用它构建的CONFIG_SCHED_CORE,允许用户空间应用程序使用。prctl(PR_SCHED_CORE)此选项是内核自我保护项目推荐设置
 在调用 schedule() 时检查是否存在栈损坏 (CONFIG_SCHED_STACK_END_CHECK) 
        AL2023 内核是在CONFIG_SCHED_STACK_END_CHECK启用状态下构建的。此选项是内核自我保护项目推荐设置
内存分配器强化
  AL2023 内核允许使用CONFIG_SHUFFLE_PAGE_ALLOCATOR、CONFIG_SLAB_FREELIST_HARDENED和选项对内核内存分配器进行强化。CONFIG_SLAB_FREELIST_RANDOM此选项是内核自我保护项目推荐设置
SLUB 调试支持
  AL2023 内核启用,CONFIG_SLUB_DEBUG因为此选项为分配器启用了可选的调试功能,这些功能可以在内核命令行上启用。此选项是内核自我保护项目推荐设置
CONFIG_STATIC_USERMODEHELPER
 尽管此选项是内核自我保护项目 (KSPP) 推荐设置CONFIG_STATIC_USERMODEHELPER 需要该发行版的特殊支持,而 Amazon Linux 中目前没有这种支持。
 只读内核文本和 rodata(CONFIG_STRICT_KERNEL_RWX 和 CONFIG_STRICT_MODULE_RWX) 
        AL2023 内核配置为将内核和内核模块的文本和rodata内存标记为只读,将非文本内存标记为不可执行。此选项是内核自我保护项目推荐设置
TCP syncookie 支持 (CONFIG_SYN_COOKIES) 
        AL2023 内核构建时支持 TCP 同步 cookie。此选项是内核自我保护项目推荐设置
 带有保护页面的虚拟映射栈 (CONFIG_VMAP_STACK) 
        AL2023 内核是用构建的CONFIG_VMAP_STACK,支持带有保护页的虚拟映射内核堆栈。此选项是内核自我保护项目推荐设置
 使用编译器警告作为错误进行构建 (CONFIG_WERROR) 
       尽管此选项是内核自我保护项目 (KSPP) 推荐设置
 在函数退出时进行寄存器清零 (CONFIG_ZERO_CALL_USED_REGS) 
       尽管此选项是内核自我保护项目 (KSPP) 推荐设置
用户空间分配的最小地址
 此强化选项可以帮助减少内核 NULL 指针错误的影响。此选项是内核自我保护项目推荐设置
clang 特定的强化选项 
        AL2023 内核是使用GCC而不是构建的clang,因此无法启用CONFIG_CFI_CLANG强化选项,这也使得它CONFIG_CFI_PERMISSIVE不适用。尽管此选项是内核自我保护项目 (KSPP) 推荐设置
x86-64 特定的内核强化选项
| CONFIG选项 | AL2023/6.1/aarch64 | AL2023/6.1/x86_64 | AL2023/6.12/aarch64 | AL2023/6.12/x86_64 | 
|---|---|---|---|---|
| CONFIG_AMD_IOMMU | 不适用 | y | 不适用 | y | 
| CONFIG_AMD_IOMMU_V2 | 不适用 | y | 不适用 | 不适用 | 
| CONFIG_IA32_EMULATION | 不适用 | y | 不适用 | y | 
| CONFIG_INTEL_IOMMU | 不适用 | y | 不适用 | y | 
| CONFIG_INTEL_IOMMU_DEFAULT_ON | 不适用 | n | 不适用 | n | 
| CONFIG_INTEL_IOMMU_SVM | 不适用 | n | 不适用 | n | 
| CONFIG_LEGACY_VSYSCALL_NONE | 不适用 | n | 不适用 | n | 
| CONFIG_MODIFY_LDT_SYSCALL | 不适用 | n | 不适用 | n | 
| CONFIG_PAGE_TABLE_ISOLATION | 不适用 | y | 不适用 | 不适用 | 
| CONFIG_RANDOMIZE_MEMORY | 不适用 | y | 不适用 | y | 
| CONFIG_X86_64 | 不适用 | y | 不适用 | y | 
| CONFIG_X86_MSR | 不适用 | y | 不适用 | y | 
| CONFIG_X86_VSYSCALL_EMULATION | 不适用 | y | 不适用 | y | 
| CONFIG_X86_X32 | 不适用 | 不适用 | 不适用 | 不适用 | 
| CONFIG_X86_X32_ABI | 不适用 | n | 不适用 | n | 
x86-64 支持
 基本 x86-64 支持包括物理地址扩展 (PAE) 和不执行 (NX) 位支持。此选项是内核自我保护项目推荐设置
AMD 和 Intel IOMMU 支持
  AL2023 内核构建时支持 AMD 和英特尔IOMMUs。此选项是内核自我保护项目推荐设置
 CONFIG_INTEL_IOMMU_DEFAULT_ON 选项未设置,但可以通过将 intel_iommu=on 传递到内核命令行来启用。尽管此选项是内核自我保护项目 (KSPP) 推荐设置
 该CONFIG_INTEL_IOMMU_SVM选项目前未在  AL2 023 中启用。尽管此选项是内核自我保护项目 (KSPP) 推荐设置
支持 32 位用户空间
重要
对 32 位 x86 用户空间的支持已弃用,在未来的主版本 Amazon Linux 中,可能会取消对运行 32 位用户空间二进制文件的支持。
注意
虽然 AL2 023 不再包含任何 32 位软件包,但内核仍将支持运行 32 位用户空间。请参阅32 位 x86 (i686) 软件包了解更多信息。
 为了支持运行 32 位用户空间应用程序, AL2023 不启用该CONFIG_X86_VSYSCALL_EMULATION选项,而是启用CONFIG_IA32_EMULATIONCONFIG_COMPAT、和选项。CONFIG_X86_VSYSCALL_EMULATION尽管此选项是内核自我保护项目 (KSPP) 推荐设置
 未启用 64 位处理器的 x32 本机 32 位 ABI(CONFIG_X86_X32 和 CONFIG_X86_X32_ABI)。此选项是内核自我保护项目推荐设置
x86 型号特定寄存器 (MSR) 支持
 启用 CONFIG_X86_MSR 选项是为了支持 turbostat。尽管此选项是内核自我保护项目 (KSPP) 推荐设置
modify_ldt 系统调用 
       AL2023 不允许用户程序使用 syscall 修改 x86 本地描述符表 (LDT)。modify_ldt此调用是运行 16 位或分段代码所必需的,缺少这个调用可能会破坏 dosemu 等软件,在 WINE 下运行一些程序以及一些非常旧的线程库。此选项是内核自我保护项目推荐设置
在用户模式下移除内核映射
 AL2023 配置内核,使大多数内核地址不会映射到用户空间。此选项是内核自我保护项目推荐设置
随机化内核内存部分
 AL2023 将内核配置为随机化内核内存部分的基本虚拟地址。此选项是内核自我保护项目推荐设置
aarch64 特定的内核强化选项
| CONFIG选项 | AL2023/6.1/aarch64 | AL2023/6.1/x86_64 | AL2023/6.12/aarch64 | AL2023/6.12/x86_64 | 
|---|---|---|---|---|
| CONFIG_ARM64_BTI | y | 不适用 | y | 不适用 | 
| CONFIG_ARM64_BTI_KERNEL | 不适用 | 不适用 | 不适用 | 不适用 | 
| CONFIG_ARM64_PTR_AUTH | y | 不适用 | y | 不适用 | 
| CONFIG_ARM64_PTR_AUTH_KERNEL | y | 不适用 | y | 不适用 | 
| CONFIG_ARM64_SW_TTBR0_PAN | y | 不适用 | y | 不适用 | 
| CONFIG_UNMAP_KERNEL_AT_EL0 | y | 不适用 | y | 不适用 | 
分支目标识别
  AL2023 内核支持分支目标识别 (CONFIG_ARM64_BTI)。此选项是内核自我保护项目推荐设置
 该CONFIG_ARM64_BTI_KERNEL选项在  AL2 023 中未按原样启用GCC,并且由于存在 gcc
 指针身份验证 (CONFIG_ARM64_PTR_AUTH) 
        AL2023 内核构建时支持指针身份验证扩展( ARMv8.3 扩展的一部分),该扩展可用于帮助缓解面向返回的编程 (ROP) 技术。Graviton 3 引入了在 Graviton
 CONFIG_ARM64_PTR_AUTH 选项已启用,并支持针对用户空间的指针身份验证。由于该CONFIG_ARM64_PTR_AUTH_KERNEL选项也已启用,因此  AL2 023 内核可以自行使用返回地址保护。
 此选项是内核自我保护项目推荐设置
 使用 TTBR0_EL1 切换的 Emulate Privileged Access Never 
       此选项可防止内核直接访问用户空间内存,TTBR0_EL1 只由用户访问例程临时设置为有效值。
 此选项是内核自我保护项目推荐设置
在用户空间中运行时取消内核映射
  AL2023 内核配置为在用户空间 () 中运行时取消内核映射。CONFIG_UNMAP_KERNEL_AT_EL0此选项是内核自我保护项目推荐设置