直接设置 kernel.randomize_va_space = 2 即可开启完整级别aslr,对应栈、共享库、vdso、mmap及堆的全随机化;查看状态用 cat /proc/sys/kernel/randomize_va_space,0为关闭,1为部分随机,2为完全随机。

直接设置 kernel.randomize_va_space = 2 即可开启完整级别的用户态地址空间布局随机化(ASLR),这是当前主流发行版推荐的安全默认值。
确认当前ASLR状态
运行以下命令查看当前生效值:
cat /proc/sys/kernel/randomize_va_space
返回 0 表示关闭,1 表示部分随机化(栈、共享库、vDSO、mmap 区域),2 表示全随机化(含堆)。
临时启用完整ASLR
无需重启,立即生效(但重启后失效):
sudo sysctl -w kernel.randomize_va_space=2- 或等价写法:
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
永久启用并确保开机生效
编辑系统级配置文件,使设置持久化:
- 向
/etc/sysctl.conf追加一行:kernel.randomize_va_space = 2 - 或更规范地,新建配置文件:
echo 'kernel.randomize_va_space = 2' | sudo tee /etc/sysctl.d/99-aslr.conf - 加载新配置:
sudo sysctl --system(该命令会重载所有/etc/sysctl.d/和/etc/sysctl.conf)
验证是否生效
重启一个测试进程(如 bash),多次检查其栈或堆地址是否变化:
cat /proc/self/maps | head -n3(执行多次,观察地址列是否变动)
若每次输出中 [stack]、libc 或 [heap] 起始地址不同,说明 ASLR 已正常工作。











