本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AL2023 核心強化處理
AL2023 中的 6.1 Linux 核心經過設定與建置,包含數個強化選項和功能。
核心強化選項 (獨立於架構)
允許在執行時期插入/取代ACPI 方法 (組態 ACPI _ 自訂方法)
Amazon Linux 會停用此選項,因為它允許根使用者寫入任意核心記憶體。
此選項是核心自我保護專案建議設定
其他二進位格式 (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) 顯示在可預測的位址。已知可透過將此選項設為 n
來破壞的最新 glibc
自 2004 年開始設為 glibc
2.3.3。
此選項是核心自我保護專案建議設定
CONFIG_DEBUG
控制強化
由 CONFIG_DEBUG
控制的 Linux 核心組態選項通常是設計用來在核心建置中進行問題除錯,因此效能等項目不是優先事項。AL2023 可啟用CONFIG_DEBUG_LIST
強化選項。
設定 IOMMU 前,在 EFI 虛設常式中停用 PCI 裝置的 DMA
雖然此選項是核心自我保護專案 (KSPP) 建議設定
在核心和使用者空間之間複製記憶體的強化
當核心需要將記憶體複製到使用者空間或從使用者空間複製記憶體時,此選項會啟用一些檢查,以防止某些類別的堆積溢位問題。
核心 4.16 到 5.15 中存在 CONFIG_HARDENED_USERCOPY_FALLBACK
選項,可協助核心開發人員透過 WARN()
找出任何遺失的 allowlist 項目。由於 AL2023 隨附 6.1 核心,因此此選項不再與 AL2023 相關。
該CONFIG_HARDENED_USERCOPY_PAGESPAN
選項存在於內核中,主要是作為開發人員的調試選項,不再適用於 AL2023 中的 6.1 內核。
此選項是核心自我保護專案建議設定
休眠支援
雖然此選項是核心自我保護專案 (KSPP) 建議設定
隨機數生成
AL2023 核心經過設定,以確保 EC2 內部有足夠的熵可供使用。
CONFIG_INET_DIAG
雖然此選項是核心自我保護專案 (KSPP) 建議設定
將分配和解除分配的所有核心頁面和 Slab 分配器記憶體歸零
雖然此選項是核心自我保護專案 (KSPP) 建議設定CONFIG_INIT_ON_ALLOC_DEFAULT_ON
行為可透過將 init_on_alloc=1
加入核心命令行來啟用,並可透過加入 init_on_free=1
來啟用 CONFIG_INIT_ON_FREE_DEFAULT_ON
行為。
將所有堆疊變數初始化為零 (CONFIG_INIT_STACK_ALL_ZERO
)
雖然此選項是核心自我保護專案 (KSPP) 建議設定
核心模組簽署
AL2023 簽署並驗證核心模組的簽章。為了保持與建置第三方模組之使用者的相容性,CONFIG_MODULE_SIG_FORCE
選項未啟用,因為這會要求模組具有有效的簽名。對於想要確保所有核心模組都已簽署的使用者, 鎖定 Linux 安全模組 (LSM) 可設為強制執行此操作。
kexec
雖然此選項是核心自我保護專案 (KSPP) 建議設定kdump
功能。
IOMMU
支援
AL2023 能夠支援異物管理系統。預設情況下,不會啟用 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
seccomp 強化功能會由 systemd
和容器執行期等的軟體使用,以加強使用者空間應用程式。
此選項是核心自我保護專案建議設定
panic()
逾時
AL2023 核心會將此值設定為0
,表示核心在發生錯誤後不會重新開機。雖然此選項是核心自我保護專案 (KSPP) 建議設定sysctl
、/proc/sys/kernel/panic
和在核心命令行上進行設定。
安全模型
AL2023 默認情況下,在允許模式下啟用 SELinux。如需詳細資訊,請參閱 設定 AL2023 的環境管理系統模式。
鎖定 Linux 安全模組 (LSM) 和 yama
模組也會啟用。
/proc/kcore
雖然此選項是核心自我保護專案 (KSPP) 建議設定
syscall 項目的核心堆疊位移隨機化
雖然此選項是核心自我保護專案 (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 同步餅的情況下構建的。此選項是核心自我保護專案建議設定
有保護頁面的虛擬映射堆疊 (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 |
---|---|---|
CONFIG_AMD_IOMMU | N/A |
y
|
CONFIG_AMD_IOMMU_V2 | N/A |
y
|
CONFIG_IA32_EMULATION | N/A |
y
|
CONFIG_INTEL_IOMMU | N/A |
y
|
CONFIG_INTEL_IOMMU_DEFAULT_ON | N/A |
n
|
CONFIG_INTEL_IOMMU_SVM | N/A |
n
|
CONFIG_LEGACY_VSYSCALL_NONE | N/A |
n
|
CONFIG_MODIFY_LDT_SYSCALL | N/A |
n
|
CONFIG_PAGE_TABLE_ISOLATION | N/A |
y
|
CONFIG_RANDOMIZE_MEMORY | N/A |
y
|
CONFIG_X86_64 | N/A |
y
|
CONFIG_X86_MSR | N/A |
y
|
CONFIG_X86_VSYSCALL_EMULATION | N/A |
y
|
CONFIG_X86_X32 | N/A | N/A |
CONFIG_X86_X32_ABI | N/A |
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
項目前未在 AL2023 中啟用。雖然此選項是核心自我保護專案 (KSPP) 建議設定
32 位元使用者空間的支援
重要
對 32 位元 x86 使用者空間的支援已棄用,在未來的 Amazon Linux 主要版本中,可能會移除對執行 32 位元使用者空間二進位檔案的支援。
注意
雖然 AL2023 不再包含任何 32 位元套件,但核心仍會支援執行 32 位元使用者空間。如需詳細資訊,請參閱32 位元 x86 (i686) 套件。
若要支援執行 32 位元使用者空間應用程式,AL2023 不會啟用此CONFIG_X86_VSYSCALL_EMULATION
選項,並啟用CONFIG_IA32_EMULATION
CONFIG_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
syscall
AL2023 不允許使用者程式使用modify_ldt
系統調用修改 x86 本機描述元表 (LDT)。執行 16 位元或分段程式碼需要此呼叫,缺少此呼叫可能會破壞 dosemu
等的軟體、在 WINE 下執行某些程式,以及非常舊的執行緒庫。此選項是核心自我保護專案建議設定
在使用者模式下移除核心對應
AL2023 會設定核心,讓大部分的核心位址都不會對應到使用者空間中。此選項是核心自我保護專案建議設定
隨機化核心記憶體區段
AL2023 配置內核以隨機化內核內存部分的基本虛擬地址。此選項是核心自我保護專案建議設定
aarch64 特定核心強化選項
CONFIG 選項 |
AL2023/6.1/aarch64 | AL2023/6.1/x86_64 |
---|---|---|
CONFIG_ARM64_BTI |
y
|
N/A |
CONFIG_ARM64_BTI_KERNEL | N/A | N/A |
CONFIG_ARM64_PTR_AUTH |
y
|
N/A |
CONFIG_ARM64_PTR_AUTH_KERNEL |
y
|
N/A |
CONFIG_ARM64_SW_TTBR0_PAN |
y
|
N/A |
CONFIG_UNMAP_KERNEL_AT_EL0 |
y
|
N/A |
分支目標識別
AL2023 核心支援分支目標識別 (CONFIG_ARM64_BTI
)。此選項是核心自我保護專案建議設定
CONFIG_ARM64_BTI_KERNEL
選項在 AL2023 中未啟用,因為它是使用 GCC 建置,並且由於 gcc 錯誤
指標驗證 (CONFIG_ARM64_PTR_AUTH
)
AL2023 核心是以指標驗證延伸模組 (ARMv8.3 延伸模組的一部分) 的支援而建置,可用來協助減輕傳回導向程式設計 (ROP) 技術。Graviton 3 已推出對 Graviton
CONFIG_ARM64_PTR_AUTH
選項已啟用,並為使用者空間提供指標驗證的支援。由於此CONFIG_ARM64_PTR_AUTH_KERNEL
選項也已啟用,因此 AL2023 核心能夠自行使用傳回位址保護。
此選項是核心自我保護專案建議設定
模擬特權存取永不使用 TTBR0_EL1
切換
此選項可防止核心直接存取使用者空間記憶體,只會由使用者存取常式將 TTBR0_EL1
暫時設定為有效值。
此選項是核心自我保護專案建議設定
在使用者空間中執行時取消對應核心
AL2023 核心設定為在使用者空間中執行時取消對應核心 () CONFIG_UNMAP_KERNEL_AT_EL0
。此選項是核心自我保護專案建議設定