防止本地提权需系统性收紧内核信任边界:限制信息泄露(kptr_restrict=2、dmesg_restrict=1、suid_dumpable=0)、阻断提权通道(ptrace_scope=2、modules_disabled=1、protected_hardlinks/symlinks=1)、强化内存随机化(aslr/kaslr/kpti)、抑制危险调用与环境继承(禁用userfaultfd、unprivileged_userns_clone、清理ld_preload等)。

防止本地提权漏洞,关键不是堵住某一个已知漏洞,而是系统性收紧内核对低权限进程的信任边界。重点在于限制信息泄露、阻断权限继承路径、关闭攻击常用跳板,并让内核自身更难被利用。
关掉内核信息泄露入口
攻击者常靠读取内核地址或日志来构造利用链。必须隐藏这些“地图”:
-
kernel.kptr_restrict = 2:彻底隐藏内核符号地址(如
/proc/kallsyms全为空),防止 infoleak 辅助 ROP/JOP 攻击 -
kernel.dmesg_restrict = 1:禁止普通用户执行
dmesg,避免从内核日志中提取内存布局或调试线索 - fs.suid_dumpable = 0:禁用 setuid 程序生成 core dump,防止通过 core 文件逆向获取内存状态
切断进程间提权通道
很多本地提权依赖父子进程、ptrace 调试或 SUID 程序被劫持。需从内核层强制隔离:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- kernel.yama.ptrace_scope = 2:非子进程无法 attach 到其他进程,阻断 gdb/strace 类注入和调试器辅助提权
-
kernel.modules_disabled = 1:启动时加
modules_disabled=1内核参数,或运行时写入/sys/module/kernel/parameters/modules_disabled,彻底禁用模块加载,封死 rootkit 注入路径 - fs.protected_hardlinks = 1 和 fs.protected_symlinks = 1:防止普通用户创建指向敏感文件的硬链接或符号链接,缓解 Dirty COW 类竞争条件利用
强化内存与执行随机化
让攻击者难以预测和复用内存布局,是防御堆喷、ROP、KASLR 绕过的核心:
- kernel.randomize_va_space = 2:启用完整用户空间 ASLR(堆、栈、库地址全随机)
- 确认 KASLR 已启用:
dmesg | grep KASLR应有输出;检查配置:grep CONFIG_RANDOMIZE_BASE /boot/config-$(uname -r)应为y - 启用 KPTI(页表隔离):
grep CONFIG_PAGE_TABLE_ISOLATION /boot/config-$(uname -r)必须为y,这是防御 Meltdown 等硬件侧信道攻击的底线
限制危险系统调用与环境继承
部分提权链依赖特定系统调用或环境变量传递,可在内核或 LSM 层抑制:
- 启用 YAMA 或 SELinux/AppArmor 后,配合策略禁止
userfaultfd、memfd_create、pipe等易被滥用的调用(尤其在容器或服务 profile 中) - 在
/etc/sysctl.conf中添加kernel.unprivileged_userns_clone = 0(若内核支持),禁用非特权用户命名空间,阻断 CVE-2021-41073 等漏洞利用路径 - 配合
sudoers清理:Defaults env_delete+="LD_PRELOAD LD_LIBRARY_PATH",防止通过预加载劫持 SUID 程序










