内核参数加固审计的核心是控权限与锁入口,而非仅改数值;需聚焦/proc/sys/节点、/etc/sysctl.conf及其包含文件、内核启动参数三类路径的读写权限与值合规性,结合命令检查、分层加固及持续监控形成闭环。

内核参数加固审计的核心,是防止非授权用户通过修改运行时参数或配置文件来改变系统行为,从而绕过安全机制、提权或引发拒绝服务。关键不在“改数值”,而在“控权限”和“锁入口”。
聚焦三类高危参数路径
必须定期检查以下位置的读写权限与实际值是否合规:
-
/proc/sys/ 下所有节点:如
/proc/sys/net/ipv4/ip_forward、/proc/sys/kernel/unprivileged_bpf_disabled。默认应为-w-------(仅 root 可写),若出现-rw-r--r--或更宽松权限,即存在被普通用户运行时篡改风险; -
/etc/sysctl.conf 及 /etc/sysctl.d/*.conf:这些是持久化配置,若属主非 root 或权限大于
600(如644),攻击者可直接写入恶意参数,重启后生效; -
内核启动参数相关开关:如
modules_disabled=1、kernel.kptr_restrict=2,需在 GRUB 启动项中固化,避免仅依赖运行时设置被覆盖。
用命令快速识别异常权限
执行以下命令,能即时发现越权可写项:
- 查所有可写 sysctl 节点:
find /proc/sys -type f -writable 2>/dev/null | xargs -r ls -l; - 查配置文件权限:
ls -l /etc/sysctl.conf /etc/sysctl.d/*.conf 2>/dev/null; - 验证关键参数是否被意外放开:
sysctl -n kernel.unprivileged_bpf_disabled fs.protected_symlinks,输出应为1或2,而非0。
分层加固:运行时 + 持久化 + 启动级
单一 chmod 不足以防御逃逸场景,需组合策略:
- 收紧文件权限:
chmod 600 /etc/sysctl.conf且chown root:root /etc/sysctl.conf,同理处理/etc/sysctl.d/*.conf; - 启用保护机制:
fs.protected_sysctl = 2(Linux 4.17+),写入/etc/sysctl.conf并执行sysctl -p加载,可阻止非特权用户通过 user namespace 修改参数; - 固化不可变参数:对
kernel.modules_disabled=1、kernel.kptr_restrict=2等关键项,在/etc/default/grub的GRUB_CMDLINE_LINUX中添加,再运行grub2-mkconfig -o /boot/grub2/grub.cfg生效; - 检查 procfs 挂载选项:
mount | grep proc,确认无mode=0777或uid=/gid=非 root 设置。
验证与持续监控要点
加固不是一次性操作,需形成闭环:
- 加固后立即验证:
sysctl -w net.ipv4.ip_forward=0尝试以普通用户执行,应报错Permission denied; - 将关键参数检查纳入基线脚本,例如每小时运行一次:
sysctl -n fs.protected_sysctl kernel.unprivileged_bpf_disabled 2>/dev/null | grep -q "2\|1"; - 结合 auditd 监控敏感路径:
-w /etc/sysctl.conf -p wa -k sysctl_conf,记录所有写入尝试; - 定期比对
sysctl -a输出与预期基线值,发现偏离即告警。











