|
| 1 | +# Help: Basic kernel hardening options |
| 2 | +# |
| 3 | +# These are considered the basic kernel hardening, self-protection, and |
| 4 | +# attack surface reduction options. They are expected to have low (or |
| 5 | +# no) performance impact on most workloads, and have a reasonable level |
| 6 | +# of legacy API removals. |
| 7 | + |
| 8 | +# Make sure reporting of various hardening actions is possible. |
| 9 | +CONFIG_BUG=y |
| 10 | + |
| 11 | +# Basic kernel memory permission enforcement. |
| 12 | +CONFIG_STRICT_KERNEL_RWX=y |
| 13 | +CONFIG_STRICT_MODULE_RWX=y |
| 14 | +CONFIG_VMAP_STACK=y |
| 15 | + |
| 16 | +# Kernel image and memory ASLR. |
| 17 | +CONFIG_RANDOMIZE_BASE=y |
| 18 | +CONFIG_RANDOMIZE_MEMORY=y |
| 19 | + |
| 20 | +# Randomize allocator freelists, harden metadata. |
| 21 | +CONFIG_SLAB_FREELIST_RANDOM=y |
| 22 | +CONFIG_SLAB_FREELIST_HARDENED=y |
| 23 | +CONFIG_SHUFFLE_PAGE_ALLOCATOR=y |
| 24 | +CONFIG_RANDOM_KMALLOC_CACHES=y |
| 25 | + |
| 26 | +# Randomize kernel stack offset on syscall entry. |
| 27 | +CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y |
| 28 | + |
| 29 | +# Basic stack frame overflow protection. |
| 30 | +CONFIG_STACKPROTECTOR=y |
| 31 | +CONFIG_STACKPROTECTOR_STRONG=y |
| 32 | + |
| 33 | +# Basic buffer length bounds checking. |
| 34 | +CONFIG_HARDENED_USERCOPY=y |
| 35 | +CONFIG_FORTIFY_SOURCE=y |
| 36 | + |
| 37 | +# Basic array index bounds checking. |
| 38 | +CONFIG_UBSAN=y |
| 39 | +CONFIG_UBSAN_TRAP=y |
| 40 | +CONFIG_UBSAN_BOUNDS=y |
| 41 | +# CONFIG_UBSAN_SHIFT is not set |
| 42 | +# CONFIG_UBSAN_DIV_ZERO |
| 43 | +# CONFIG_UBSAN_UNREACHABLE |
| 44 | +# CONFIG_UBSAN_BOOL |
| 45 | +# CONFIG_UBSAN_ENUM |
| 46 | +# CONFIG_UBSAN_ALIGNMENT |
| 47 | +CONFIG_UBSAN_SANITIZE_ALL=y |
| 48 | + |
| 49 | +# Linked list integrity checking. |
| 50 | +CONFIG_LIST_HARDENED=y |
| 51 | + |
| 52 | +# Initialize all heap variables to zero on allocation. |
| 53 | +CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y |
| 54 | + |
| 55 | +# Initialize all stack variables to zero on function entry. |
| 56 | +CONFIG_INIT_STACK_ALL_ZERO=y |
| 57 | + |
| 58 | +# Wipe RAM at reboot via EFI. For more details, see: |
| 59 | +# https://trustedcomputinggroup.org/resource/pc-client-work-group-platform-reset-attack-mitigation-specification/ |
| 60 | +# https://bugzilla.redhat.com/show_bug.cgi?id=1532058 |
| 61 | +CONFIG_RESET_ATTACK_MITIGATION=y |
| 62 | + |
| 63 | +# Disable DMA between EFI hand-off and the kernel's IOMMU setup. |
| 64 | +CONFIG_EFI_DISABLE_PCI_DMA=y |
| 65 | + |
| 66 | +# Force IOMMU TLB invalidation so devices will never be able to access stale |
| 67 | +# data content. |
| 68 | +CONFIG_IOMMU_SUPPORT=y |
| 69 | +CONFIG_IOMMU_DEFAULT_DMA_STRICT=y |
| 70 | + |
| 71 | +# Do not allow direct physical memory access to non-device memory. |
| 72 | +CONFIG_STRICT_DEVMEM=y |
| 73 | +CONFIG_IO_STRICT_DEVMEM=y |
| 74 | + |
| 75 | +# Provide userspace with seccomp BPF API for syscall attack surface reduction. |
| 76 | +CONFIG_SECCOMP=y |
| 77 | +CONFIG_SECCOMP_FILTER=y |
| 78 | + |
| 79 | +# Provides some protections against SYN flooding. |
| 80 | +CONFIG_SYN_COOKIES=y |
| 81 | + |
| 82 | +# Attack surface reduction: do not autoload TTY line disciplines. |
| 83 | +# CONFIG_LDISC_AUTOLOAD is not set |
| 84 | + |
| 85 | +# Dangerous; enabling this disables userspace brk ASLR. |
| 86 | +# CONFIG_COMPAT_BRK is not set |
| 87 | + |
| 88 | +# Dangerous; exposes kernel text image layout. |
| 89 | +# CONFIG_PROC_KCORE is not set |
| 90 | + |
| 91 | +# Dangerous; enabling this disables userspace VDSO ASLR. |
| 92 | +# CONFIG_COMPAT_VDSO is not set |
| 93 | + |
| 94 | +# Attack surface reduction: Use the modern PTY interface (devpts) only. |
| 95 | +# CONFIG_LEGACY_PTYS is not set |
| 96 | + |
| 97 | +# Attack surface reduction: Use only modesetting video drivers. |
| 98 | +# CONFIG_DRM_LEGACY is not set |
0 commit comments