پارامترهای پیشنهادی جهت Hardening هسته لینوکس توسط cmdline موقع boot-time و توسط sysctl موقع run-time.
- توسط cmdline موقع boot-time:
vga=normal mds=full rodata=on mitigations=auto,nosmt page_alloc.shuffle=1 init_on_alloc=1 init_on_free=1 hardened_usercopy=1 iommu.strict=1 iommu.passthrough=0 randomize_kstack_offset=1 pti=on iommu=force tsx=off vsyscall=xonly vdso32=0 debugfs=on
نکته: این پارامترهارو باید به برنامه bootloader تون بدید:
- اگر بوت لودر Grub هستش، داخل فایل /boot/grub/grub.cfg و در جلوی متغیر
GRUB_CMDLINE_LINUX_DEFAULT
باید قرار بگیرن.
- اگر بوت لودر eLiLo هستش، داخل فایل /boot/EFI<OS>/elilo.conf و در جلوی متغیر
append
باید قرار بگیرن.
توضیحات و مستندات Kernel command-line parameters
- توسط برنامه sysctl موقع run-time:
sysctl -w net.core.bpf_jit_harden="2"
sysctl -w kernel.dmesg_restrict="1"
sysctl -w kernel.perf_event_paranoid="3"
sysctl -w kernel.kexec_load_disabled="1"
sysctl -w user.max_user_namespaces="0"
sysctl -w dev.tty.ldisc_autoload="0"
sysctl -w kernel.unprivileged_bpf_disabled="1"
sysctl -w kernel.kptr_restrict="2"
sysctl -w dev.tty.legacy_tiocsti="0"
sysctl -w vm.unprivileged_userfaultfd="0"
sysctl -w fs.protected_symlinks="1"
sysctl -w fs.protected_hardlinks="1"
sysctl -w fs.protected_fifos="2"
sysctl -w fs.protected_regular="2"
sysctl -w fs.suid_dumpable="0"
sysctl -w kernel.yama.ptrace_scope="3"
sysctl -w kernel.randomize_va_space="2"
نکته: برای اعمال این تنظیمات به کاربر root یا دسترسی sudo
نیاز دارید.
توضیحات مقادیر موجود در /proc/sys
Hardening / سخت سازی
Hardening به مجموعه ای از روش ها و تکنیک های امنیتی گفته میشه که با هدف کاهش سطح حمله (attack surface) و افزایش مقاومت سیستم در برابر تهدیدات امنیتی انجام میشن. در مورد هسته لینوکس، Hardening شامل تنظیم پارامترها، غیرفعال کردن ویژگی های غیرضروری و اعمال محدودیت های امنیتی میشود تا آسیب پذیری های احتمالی به حداقل برسد.
cmdline / پارامترهای راه اندازی
cmdline یا kernel command-line parameters مقادیری هستند که در زمان bootstrap سیستم به هسته لینوکس ارسال میشن. این پارامترها معمولاً در فایل هایی مثل/boot/grub/grub.cfg
یا /boot/EFI/<OS>/elilo.conf
یا از طریق bootloader تنظیم میشن و رفتار هسته رو هنگام راه اندازی کنترل می کنن.
sysctl / پارامترهای کنترل
sysctl (system control) مکانیزمی در لینوکس برای تنظیم پارامترهای هسته در زمان اجرا (runtime) میباشد. این پارامترها از طریق فایل های مجازی در مسیر /proc/sys/
قابل دسترسی و تغییر هستن و معمولاً برای بهینه سازی عملکرد و افزایش امنیت سیستم استفاده میشوند.