

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AL2023 核心強化
<a name="kernel-hardening"></a>

 AL2023 中的 6.1 Linux 核心已設定並建置數個強化選項和功能。

## 核心強化選項 (獨立於架構)
<a name="kernel-hardening-common"></a>


| `CONFIG` 選項 | AL2023/6.1/aarch64 | AL2023/6.1/x86\_64 | AL2023/6.12/aarch64 | AL2023/6.12/x86\_64 | AL2023/6.18/aarch64 | AL2023/6.18/x86\_64 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  [`CONFIG_ACPI_CUSTOM_METHOD`](#CONFIG_ACPI_CUSTOM_METHOD)  |  n  |  n  | N/A | N/A | N/A | N/A | 
|  [`CONFIG_BINFMT_MISC`](#CONFIG_BINFMT_MISC)  |  m  |  m  |  m  |  m  |  m  |  m  | 
|  [`CONFIG_BUG`](#CONFIG_BUG)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_BUG_ON_DATA_CORRUPTION`](#CONFIG_BUG_ON_DATA_CORRUPTION)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_CFI_CLANG`](#CONFIG_CFI_CLANG)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_CFI_PERMISSIVE`](#CONFIG_CFI_PERMISSIVE)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_COMPAT`](#CONFIG_COMPAT)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_COMPAT_BRK`](#CONFIG_COMPAT_BRK)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_COMPAT_VDSO`](#CONFIG_COMPAT_VDSO)  | N/A |  n  | N/A |  n  | N/A |  n  | 
|  [`CONFIG_DEBUG_CREDENTIALS`](#CONFIG_DEBUG_CREDENTIALS)  |  n  |  n  | N/A | N/A | N/A | N/A | 
|  [`CONFIG_DEBUG_LIST`](#CONFIG_DEBUG_LIST)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_DEBUG_NOTIFIERS`](#CONFIG_DEBUG_NOTIFIERS)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_DEBUG_SG`](#CONFIG_DEBUG_SG)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_DEBUG_VIRTUAL`](#CONFIG_DEBUG_VIRTUAL)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_DEBUG_WX`](#CONFIG_DEBUG_WX)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_DEFAULT_MMAP_MIN_ADDR`](#CONFIG_DEFAULT_MMAP_MIN_ADDR)  |  65536  |  65536  |  65536  |  65536  |  65536  |  65536  | 
|  [`CONFIG_DEVKMEM`](compare-with-al2-kernel.md#CONFIG_DEVKMEM)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_DEVMEM`](compare-with-al2-kernel.md#CONFIG_DEVMEM)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_EFI_DISABLE_PCI_DMA`](#CONFIG_EFI_DISABLE_PCI_DMA)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_FORTIFY_SOURCE`](compare-with-al2-kernel.md#CONFIG_FORTIFY_SOURCE)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_HARDENED_USERCOPY`](#CONFIG_HARDENED_USERCOPY)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_HARDENED_USERCOPY_FALLBACK`](#CONFIG_HARDENED_USERCOPY_FALLBACK)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_HARDENED_USERCOPY_PAGESPAN`](#CONFIG_HARDENED_USERCOPY_PAGESPAN)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_HIBERNATION`](#CONFIG_HIBERNATION)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_HW_RANDOM_TPM`](#CONFIG_HW_RANDOM_TPM)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_INET_DIAG`](#CONFIG_INET_DIAG)  |  m  |  m  |  m  |  m  |  m  |  m  | 
|  [`CONFIG_INIT_ON_ALLOC_DEFAULT_ON`](#CONFIG_INIT_ON_ALLOC_DEFAULT_ON)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_INIT_ON_FREE_DEFAULT_ON`](#CONFIG_INIT_ON_FREE_DEFAULT_ON)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_INIT_STACK_ALL_ZERO`](#CONFIG_INIT_STACK_ALL_ZERO)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_IOMMU_DEFAULT_DMA_STRICT`](#CONFIG_IOMMU_DEFAULT_DMA_STRICT)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_IOMMU_SUPPORT`](#CONFIG_IOMMU_SUPPORT)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_IO_STRICT_DEVMEM`](compare-with-al2-kernel.md#CONFIG_IO_STRICT_DEVMEM)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_KEXEC`](#CONFIG_KEXEC)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_KFENCE`](#CONFIG_KFENCE)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_LDISC_AUTOLOAD`](compare-with-al2-kernel.md#CONFIG_LDISC_AUTOLOAD)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_LEGACY_PTYS`](#CONFIG_LEGACY_PTYS)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY`](#CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_MODULES`](#CONFIG_MODULES)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_MODULE_SIG`](#CONFIG_MODULE_SIG)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_MODULE_SIG_ALL`](#CONFIG_MODULE_SIG_ALL)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_MODULE_SIG_FORCE`](#CONFIG_MODULE_SIG_FORCE)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_MODULE_SIG_HASH`](#CONFIG_MODULE_SIG_HASH)  |  sha512  |  sha512  |  sha512  |  sha512  |  sha512  |  sha512  | 
|  [`CONFIG_MODULE_SIG_KEY`](#CONFIG_MODULE_SIG_KEY)  |  certs/signing\_key.pem  |  certs/signing\_key.pem  |  certs/signing\_key.pem  |  certs/signing\_key.pem  |  certs/signing\_key.pem  |  certs/signing\_key.pem  | 
|  [`CONFIG_MODULE_SIG_SHA512`](#CONFIG_MODULE_SIG_SHA512)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_PAGE_POISONING`](#CONFIG_PAGE_POISONING)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_PAGE_POISONING_NO_SANITY`](#CONFIG_PAGE_POISONING_NO_SANITY)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_PAGE_POISONING_ZERO`](#CONFIG_PAGE_POISONING_ZERO)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_PANIC_ON_OOPS`](compare-with-al2-kernel.md#CONFIG_PANIC_ON_OOPS)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_PANIC_TIMEOUT`](#CONFIG_PANIC_TIMEOUT)  |  0  |  0  |  0  |  0  |  0  |  0  | 
|  [`CONFIG_PROC_KCORE`](#CONFIG_PROC_KCORE)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT`](#CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_RANDOM_TRUST_BOOTLOADER`](#CONFIG_RANDOM_TRUST_BOOTLOADER)  |  y  |  y  | N/A | N/A | N/A | N/A | 
|  [`CONFIG_RANDOM_TRUST_CPU`](#CONFIG_RANDOM_TRUST_CPU)  |  y  |  y  | N/A | N/A | N/A | N/A | 
|  [`CONFIG_REFCOUNT_FULL`](#CONFIG_REFCOUNT_FULL)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_SCHED_CORE`](#CONFIG_SCHED_CORE)  | N/A |  y  | N/A |  y  | N/A |  y  | 
|  [`CONFIG_SCHED_STACK_END_CHECK`](#CONFIG_SCHED_STACK_END_CHECK)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECCOMP`](#CONFIG_SECCOMP)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECCOMP_FILTER`](#CONFIG_SECCOMP_FILTER)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY`](#CONFIG_SECURITY)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_DMESG_RESTRICT`](compare-with-al2-kernel.md#CONFIG_SECURITY_DMESG_RESTRICT)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_LANDLOCK`](#CONFIG_SECURITY_LANDLOCK)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_LOCKDOWN_LSM`](#CONFIG_SECURITY_LOCKDOWN_LSM)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_LOCKDOWN_LSM_EARLY`](#CONFIG_SECURITY_LOCKDOWN_LSM_EARLY)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_SELINUX_BOOTPARAM`](#CONFIG_SECURITY_SELINUX_BOOTPARAM)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_SELINUX_DEVELOP`](#CONFIG_SECURITY_SELINUX_DEVELOP)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SECURITY_SELINUX_DISABLE`](compare-with-al2-kernel.md#CONFIG_SECURITY_SELINUX_DISABLE)  |  n  |  n  | N/A | N/A | N/A | N/A | 
|  [`CONFIG_SECURITY_WRITABLE_HOOKS`](#CONFIG_SECURITY_WRITABLE_HOOKS)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_SECURITY_YAMA`](#CONFIG_SECURITY_YAMA)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SHUFFLE_PAGE_ALLOCATOR`](#CONFIG_SHUFFLE_PAGE_ALLOCATOR)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SLAB_FREELIST_HARDENED`](#CONFIG_SLAB_FREELIST_HARDENED)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SLAB_FREELIST_RANDOM`](#CONFIG_SLAB_FREELIST_RANDOM)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SLUB_DEBUG`](#CONFIG_SLUB_DEBUG)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_STACKPROTECTOR`](#CONFIG_STACKPROTECTOR)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_STACKPROTECTOR_STRONG`](#CONFIG_STACKPROTECTOR_STRONG)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_STATIC_USERMODEHELPER`](#CONFIG_STATIC_USERMODEHELPER)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_STRICT_DEVMEM`](compare-with-al2-kernel.md#CONFIG_STRICT_DEVMEM)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_STRICT_KERNEL_RWX`](#CONFIG_STRICT_KERNEL_RWX)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_STRICT_MODULE_RWX`](#CONFIG_STRICT_MODULE_RWX)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_SYN_COOKIES`](#CONFIG_SYN_COOKIES)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_VMAP_STACK`](#CONFIG_VMAP_STACK)  |  y  |  y  |  y  |  y  |  y  |  y  | 
|  [`CONFIG_WERROR`](#CONFIG_WERROR)  |  n  |  n  |  n  |  n  |  n  |  n  | 
|  [`CONFIG_ZERO_CALL_USED_REGS`](#CONFIG_ZERO_CALL_USED_REGS)  |  n  |  n  |  n  |  n  |  n  |  n  | 

### 允許在執行時間插入/取代 ACPI 方法 (CONFIG\_ACPI\_CUSTOM\_METHOD)
<a name="CONFIG_ACPI_CUSTOM_METHOD"></a>

Amazon Linux 會停用此選項，因為它允許根使用者寫入任意核心記憶體。

此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### 其他二進位格式 (`binfmt_misc`)
<a name="CONFIG_BINFMT_MISC"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。在 AL2023 中，此功能為選擇性，並建構作為核心模組。

### `BUG()` 支援
<a name="CONFIG_BUG"></a>

 此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### `BUG()` 如果核心在檢查核心記憶體結構的有效性時發生資料損毀
<a name="CONFIG_BUG_ON_DATA_CORRUPTION"></a>

 Linux 核心的某些部分將檢查資料結構的內部一致性，並可在偵測到資料損毀時 `BUG()`。

 此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### `COMPAT_BRK`
<a name="CONFIG_COMPAT_BRK"></a>

 停用此選項 (這是 Amazon Linux 設定核心的方式) 時，`randomize_va_space` `sysctl` 設定預設為 `2`，這也會以 `mmap` 基礎、堆疊和 VDSO 頁面隨機化為基礎啟用堆積隨機化。

 此選項存在於核心中，以提供與 1996 及更舊版本的久遠 `libc.so.5` 二進位檔案的相容性。

 此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### `COMPAT_VDSO`
<a name="CONFIG_COMPAT_VDSO"></a>

 此組態選項與 `x86-64` 相關，但與 `aarch64` 無關。將此項設定為 `n` 時，Amazon Linux 核心不會讓 32 位元虛擬動態共用物件 (VDSO) 顯示在可預測的位址。已知可透過將此選項設為 `n` 來破壞的最新 `glibc` 自 2004 年開始設為 `glibc` 2.3.3。

 此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### `CONFIG_DEBUG` 門控強化
<a name="CONFIG_DEBUG_KERNEL"></a>

 由 `CONFIG_DEBUG` 控制的 Linux 核心組態選項通常是設計用來在核心建置中進行問題除錯，因此效能等項目不是優先事項。AL2023 會啟用`CONFIG_DEBUG_LIST`強化選項。

### 設定 IOMMU 前，在 EFI 虛設常式中停用 PCI 裝置的 DMA
<a name="CONFIG_EFI_DISABLE_PCI_DMA"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。

### 在核心和使用者空間之間複製記憶體的強化
<a name="CONFIG_HARDENED_USERCOPY"></a>

 當核心需要將記憶體複製到使用者空間或從使用者空間複製記憶體時，此選項會啟用一些檢查，以防止某些類別的堆積溢位問題。

 核心 4.16 到 5.15 中存在 `CONFIG_HARDENED_USERCOPY_FALLBACK` 選項，可協助核心開發人員透過 `WARN()` 找出任何遺失的 allowlist 項目。由於 AL2023 隨附 6.1 核心，此選項不再與 AL2023 相關。

 核心中存在`CONFIG_HARDENED_USERCOPY_PAGESPAN`的選項主要做為開發人員的偵錯選項，不再適用於 AL2023 中的 6.1 核心。

 此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### 休眠支援
<a name="CONFIG_HIBERNATION"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。必須啟用此選項，才能支援[隨需執行個體休眠](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html)的能力，並支援[休眠中斷 Spot 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/hibernate-spot-instances.html)的功能 

### 產生隨機數字
<a name="kernel-rng"></a>

 AL2023 核心已設定為確保 EC2 內有足夠的熵可供使用。

### `CONFIG_INET_DIAG`
<a name="CONFIG_INET_DIAG"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。在 AL2023 中，此功能為選擇性，並建構作為核心模組。

### 在配置和解除配置時將所有核心頁面和 slab 分配器記憶體設為零
<a name="kernel-init-on-alloc-free"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。這些選項在 AL2023 中會停用，因為預設啟用此功能可能會對效能造成影響。`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`)
<a name="CONFIG_INIT_STACK_ALL_ZERO"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。此選項需要 GCC 12 或更新版本，而 AL2023 則隨附 GCC 11。

### 核心模組簽署
<a name="kernel-config-modules"></a>

 AL2023 會簽署並驗證核心模組的簽章。為了保持與建置第三方模組之使用者的相容性，`CONFIG_MODULE_SIG_FORCE` 選項未啟用，因為這會要求模組具有有效的簽名。對於想要確保所有核心模組都已簽署的使用者，[  鎖定 Linux 安全模組 (LSM)](#CONFIG_SECURITY_LOCKDOWN_LSM) 可設為強制執行此操作。

### `kexec`
<a name="CONFIG_KEXEC"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。此選項已啟用，以便使用 `kdump` 功能。

### `IOMMU` 支援
<a name="CONFIG_IOMMU_SUPPORT"></a>

 AL2023 啟用 IOMMU 支援。預設情況下，不會啟用 `CONFIG_IOMMU_DEFAULT_DMA_STRICT` 選項，但可以透過將 `iommu.passthrough=0 iommu.strict=1` 加入核心命令行來設定此功能。

### `kfence`
<a name="CONFIG_KFENCE"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。

### 舊版 `pty` 支援
<a name="CONFIG_LEGACY_PTYS"></a>

 AL2023 使用現代PTY界面 (`devpts`)。

 此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### 鎖定 Linux 安全模組 (LSM)
<a name="CONFIG_SECURITY_LOCKDOWN_LSM"></a>

 AL2023 會建置 `lockdown` LSM，這會在使用安全開機時自動鎖定核心。

 `CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY` 選項未啟用。雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。未使用安全開機時，可以啟用鎖定 LSM 並視需要進行設定。

### 頁面中毒
<a name="CONFIG_PAGE_POISONING"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。與 類似[  在配置和解除配置時將所有核心頁面和 slab 分配器記憶體設為零](#kernel-init-on-alloc-free)，這會在 AL2023 核心中停用，因為可能會影響效能。

### 堆疊保護器
<a name="CONFIG_STACKPROTECTOR"></a>

 AL2023 核心是使用 `-fstack-protector-strong`選項GCC啟用的堆疊保護程式功能所建置。

 此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### seccomp BPF API
<a name="CONFIG_SECCOMP"></a>

 seccomp 強化功能會由 `systemd` 和容器執行期等的軟體使用，以加強使用者空間應用程式。

 此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### `panic()` 逾時
<a name="CONFIG_PANIC_TIMEOUT"></a>

 AL2023 核心已將此值設定為 `0`，這表示核心在驚慌之後不會重新啟動。雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。這可透過 `sysctl`、`/proc/sys/kernel/panic` 和在核心命令行上進行設定。

### 安全模型
<a name="CONFIG_SECURITY"></a>

 根據預設，AL2023 會在允許模式中啟用 SELinux。如需詳細資訊，請參閱[設定 AL2023 的 SELinux 模式](selinux-modes.md)。

 [  鎖定 Linux 安全模組 (LSM)](#CONFIG_SECURITY_LOCKDOWN_LSM) 和 `yama` 模組也會啟用。

### `/proc/kcore`
<a name="CONFIG_PROC_KCORE"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。

### syscall 項目的核心堆疊位移隨機化
<a name="CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。這可透過在核心命令行上設定 `randomize_kstack_offset=on` 來啟用。

### 參考計數檢查 (`CONFIG_REFCOUNT_FULL`)
<a name="CONFIG_REFCOUNT_FULL"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。由於此選項可能會對效能造成影響，因此無法正確啟用。

### SMT 核心的排程器感知 (`CONFIG_SCHED_CORE`)
<a name="CONFIG_SCHED_CORE"></a>

 AL2023 核心是使用 建置`CONFIG_SCHED_CORE`，可讓使用者空間應用程式使用 `prctl(PR_SCHED_CORE)`。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### 檢查呼叫 `schedule()` (`CONFIG_SCHED_STACK_END_CHECK`) 時的堆疊損毀
<a name="CONFIG_SCHED_STACK_END_CHECK"></a>

 AL2023 核心的建置`CONFIG_SCHED_STACK_END_CHECK`已啟用。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### 記憶體分配器強化
<a name="kernel-allocator-hardening"></a>

 AL2023 核心可使用 `CONFIG_SHUFFLE_PAGE_ALLOCATOR`、 `CONFIG_SLAB_FREELIST_HARDENED`和 `CONFIG_SLAB_FREELIST_RANDOM`選項來強化核心記憶體分配器。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### SLUB 除錯支援
<a name="CONFIG_SLUB_DEBUG"></a>

 AL2023 核心會啟用 `CONFIG_SLUB_DEBUG`，因為此選項會為可在核心命令列上啟用的分配器啟用選用偵錯功能。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### CONFIG\_STATIC\_USERMODEHELPER
<a name="CONFIG_STATIC_USERMODEHELPER"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。這是因為 `CONFIG_STATIC_USERMODEHELPER` 需要發行版的特殊支援，且目前不存在 Amazon Linux 中。

### 唯讀核心文字和 rodata (`CONFIG_STRICT_KERNEL_RWX` 和 `CONFIG_STRICT_MODULE_RWX`)
<a name="CONFIG_STRICT_KERNEL_RWX"></a>

 AL2023 核心設定為將核心和核心模組文字和rodata記憶體標記為唯讀，並將非文字記憶體標記為無法執行。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### TCP syncookie 支援 (`CONFIG_SYN_COOKIES`)
<a name="CONFIG_SYN_COOKIES"></a>

 AL2023 核心建置時支援 TCP syncookies。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### 有保護頁面的虛擬映射堆疊 (`CONFIG_VMAP_STACK`)
<a name="CONFIG_VMAP_STACK"></a>

 AL2023 核心使用 建置`CONFIG_VMAP_STACK`，啟用具有保護頁面的虛擬映射核心堆疊。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### 使用編譯器警告作為錯誤建置 (`CONFIG_WERROR`)
<a name="CONFIG_WERROR"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。

### 在函數退出登錄歸零 (`CONFIG_ZERO_CALL_USED_REGS`)
<a name="CONFIG_ZERO_CALL_USED_REGS"></a>

 雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。

### 使用者空間分配的最小地址
<a name="CONFIG_DEFAULT_MMAP_MIN_ADDR"></a>

 此強化選項有助於減輕核心 NULL 指標錯誤的影響。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### `clang` 特定強化選項
<a name="kernel-hardening-clang"></a>

 AL2023 核心是使用 GCC 而非 建置clang，因此無法啟用`CONFIG_CFI_CLANG`強化選項，這也會使 `CONFIG_CFI_PERMISSIVE` 不適用。雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。

## x86-64 特定核心強化選項
<a name="kernel-hardening-x86-64"></a>


| `CONFIG` 選項 | AL2023/6.1/aarch64 | AL2023/6.1/x86\_64 | AL2023/6.12/aarch64 | AL2023/6.12/x86\_64 | AL2023/6.18/aarch64 | AL2023/6.18/x86\_64 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  [`CONFIG_AMD_IOMMU`](#CONFIG_AMD_IOMMU)  | N/A |  y  | N/A |  y  | N/A |  y  | 
|  [`CONFIG_AMD_IOMMU_V2`](#CONFIG_AMD_IOMMU_V2)  | N/A |  y  | N/A | N/A | N/A | N/A | 
|  [`CONFIG_IA32_EMULATION`](#CONFIG_IA32_EMULATION)  | N/A |  y  | N/A |  y  | N/A |  y  | 
|  [`CONFIG_INTEL_IOMMU`](#CONFIG_INTEL_IOMMU)  | N/A |  y  | N/A |  y  | N/A |  y  | 
|  [`CONFIG_INTEL_IOMMU_DEFAULT_ON`](#CONFIG_INTEL_IOMMU_DEFAULT_ON)  | N/A |  n  | N/A |  n  | N/A |  n  | 
|  [`CONFIG_INTEL_IOMMU_SVM`](#CONFIG_INTEL_IOMMU_SVM)  | N/A |  n  | N/A |  n  | N/A |  n  | 
|  [`CONFIG_LEGACY_VSYSCALL_NONE`](#CONFIG_LEGACY_VSYSCALL_NONE)  | N/A |  n  | N/A |  n  | N/A |  n  | 
|  [`CONFIG_MODIFY_LDT_SYSCALL`](#CONFIG_MODIFY_LDT_SYSCALL)  | N/A |  n  | N/A |  n  | N/A |  n  | 
|  [`CONFIG_PAGE_TABLE_ISOLATION`](#CONFIG_PAGE_TABLE_ISOLATION)  | N/A |  y  | N/A | N/A | N/A | N/A | 
|  [`CONFIG_RANDOMIZE_MEMORY`](#CONFIG_RANDOMIZE_MEMORY)  | N/A |  y  | N/A |  y  | N/A |  y  | 
|  [`CONFIG_X86_64`](#CONFIG_X86_64)  | N/A |  y  | N/A |  y  | N/A |  y  | 
|  [`CONFIG_X86_MSR`](#CONFIG_X86_MSR)  | N/A |  y  | N/A |  y  | N/A |  y  | 
|  [`CONFIG_X86_VSYSCALL_EMULATION`](#CONFIG_X86_VSYSCALL_EMULATION)  | N/A |  y  | N/A |  y  | N/A |  y  | 
|  [`CONFIG_X86_X32`](#CONFIG_X86_X32)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_X86_X32_ABI`](#CONFIG_X86_X32_ABI)  | N/A |  n  | N/A |  n  | N/A |  n  | 

### x86-64 支援
<a name="CONFIG_X86_64"></a>

 基本 x86-64 支援包括實體位址延伸 (PAE) 和無執行 (NX) 位元支援。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### AMD 和 Intel IOMMU 支援
<a name="kernel-x86-64-iommu"></a>

 AL2023 核心建置支援 AMD 和 Intel IOMMUs。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

 未設定 `CONFIG_INTEL_IOMMU_DEFAULT_ON` 選項，但可透過將 `intel_iommu=on` 傳遞至核心命令行來啟用。雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。

 目前未在 AL2023 中啟用 `CONFIG_INTEL_IOMMU_SVM`選項。雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。

### 支援 32 位元使用者空間
<a name="kernel-hardening-32bit-support"></a>

**重要**  
 對 32 位元 x86 使用者空間的支援已棄用，在未來的 Amazon Linux 主要版本中，可能會移除對執行 32 位元使用者空間二進位檔案的支援。

**注意**  
 雖然 AL2023 不再包含任何 32 位元套件，但核心仍會支援執行 32 位元使用者空間。如需詳細資訊，請參閱[32 位元 x86 (i686) 套件](compare-with-al2.md#i686)。

 為了支援執行 32 位元使用者空間應用程式，AL2023 不會啟用 `CONFIG_X86_VSYSCALL_EMULATION`選項，並啟用 `CONFIG_IA32_EMULATION`、 `CONFIG_COMPAT`和 `CONFIG_X86_VSYSCALL_EMULATION`選項。雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。

 未啟用 64 位元處理器的 x32 原生 32 位元 ABI (`CONFIG_X86_X32` 和 `CONFIG_X86_X32_ABI`)。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### x86 模型特定暫存器 (MSR) 支援
<a name="CONFIG_X86_MSR"></a>

 `CONFIG_X86_MSR` 選項已啟用以支援 `turbostat`。雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。

### `modify_ldt` syscall
<a name="CONFIG_MODIFY_LDT_SYSCALL"></a>

 AL2023 不允許使用者程式使用 `modify_ldt` syscall 修改 x86 Local Descriptor Table (LDT)。執行 16 位元或分段程式碼需要此呼叫，缺少此呼叫可能會破壞 `dosemu` 等的軟體、在 WINE 下執行某些程式，以及非常舊的執行緒庫。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### 在使用者模式下移除核心對應
<a name="CONFIG_PAGE_TABLE_ISOLATION"></a>

 AL2023 會設定核心，讓大部分的核心地址不會映射到使用者空間。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### 隨機化核心記憶體區段
<a name="CONFIG_RANDOMIZE_MEMORY"></a>

 AL2023 會設定核心，以隨機化核心記憶體區段的基本虛擬地址。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

## aarch64 特定核心強化選項
<a name="kernel-hardening-aarch64"></a>


| `CONFIG` 選項 | AL2023/6.1/aarch64 | AL2023/6.1/x86\_64 | AL2023/6.12/aarch64 | AL2023/6.12/x86\_64 | AL2023/6.18/aarch64 | AL2023/6.18/x86\_64 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  [`CONFIG_ARM64_BTI`](#CONFIG_ARM64_BTI)  |  y  | N/A |  y  | N/A |  y  | N/A | 
|  [`CONFIG_ARM64_BTI_KERNEL`](#CONFIG_ARM64_BTI_KERNEL)  | N/A | N/A | N/A | N/A | N/A | N/A | 
|  [`CONFIG_ARM64_PTR_AUTH`](#CONFIG_ARM64_PTR_AUTH)  |  y  | N/A |  y  | N/A |  y  | N/A | 
|  [`CONFIG_ARM64_PTR_AUTH_KERNEL`](#CONFIG_ARM64_PTR_AUTH_KERNEL)  |  y  | N/A |  y  | N/A |  y  | N/A | 
|  [`CONFIG_ARM64_SW_TTBR0_PAN`](#CONFIG_ARM64_SW_TTBR0_PAN)  |  y  | N/A |  y  | N/A |  y  | N/A | 
|  [`CONFIG_UNMAP_KERNEL_AT_EL0`](#CONFIG_UNMAP_KERNEL_AT_EL0)  |  y  | N/A |  y  | N/A |  y  | N/A | 

### 分支目標識別
<a name="CONFIG_ARM64_BTI"></a>

 AL2023 核心支援分支目標識別 (`CONFIG_ARM64_BTI`)。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

 `CONFIG_ARM64_BTI_KERNEL` 選項在 AL2023 中未啟用，因為它是使用 GCC 建置，並且由於 [gcc 錯誤](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106671)，[上游核心目前已停用](https://github.com/torvalds/linux/commit/c0a454b9044fdc99486853aa424e5b3be2107078)對使用此選項建置核心的支援。雖然此選項是[核心自我保護專案 (KSPP) 建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一，但 AL2023 並未將此組態選項設為 KSPP 建議的選項。

### 指標驗證 (`CONFIG_ARM64_PTR_AUTH`)
<a name="CONFIG_ARM64_PTR_AUTH"></a>

 AL2023 核心建置時支援指標身分驗證延伸 (ARMv8.3 延伸的一部分），可用於協助緩解傳回導向程式設計 (ROP) 技術。Graviton 3 已推出對 [Graviton](https://aws.amazon.com/ec2/graviton) 進行指標驗證所需的硬體支援。

 `CONFIG_ARM64_PTR_AUTH` 選項已啟用，並為使用者空間提供指標驗證的支援。由於 `CONFIG_ARM64_PTR_AUTH_KERNEL`選項也已啟用，AL2023 核心能夠自行使用傳回地址保護。

 此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### 模擬特權存取永不使用 `TTBR0_EL1` 切換
<a name="CONFIG_ARM64_SW_TTBR0_PAN"></a>

 此選項可防止核心直接存取使用者空間記憶體，只會由使用者存取常式將 `TTBR0_EL1` 暫時設定為有效值。

 此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。

### 在使用者空間中執行時取消對應核心
<a name="CONFIG_UNMAP_KERNEL_AT_EL0"></a>

 AL2023 核心設定為在使用者空間 () 中執行時取消核心映射`CONFIG_UNMAP_KERNEL_AT_EL0`。此選項是[核心自我保護專案建議設定](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings)之一。