首页/安全/安全加固速查/sysctl 加固配置的落地与验证
主机加固基线90 条

sysctl 加固配置的落地与验证

内核参数加固统一写入 /etc/sysctl.d/ 下的文件并用 sysctl --system 加载,避免散落修改被升级覆盖;改完逐项验证实际生效值。

安全加固速查安全更新于 2026-10-13

内核参数怎么改才留得住

内核参数加固最容易犯的错是改了但不生效、或者生效了但重启后丢失。规范的落地方式是三步:把参数写进内核参数目录下的配置文件、用系统命令统一加载、最后直接读取内核中的实际值确认。写入文件保证持久化,读取内核值排除「配置文件存在但没被加载」的情况,两步都不能省。

基本信息

加固项内核参数配置管理
适用平台Linux(RHEL/CentOS/Debian/Ubuntu)
风险等级中
配置位置内核参数配置目录下的独立文件,文件名前缀决定加载顺序
验证方式读取内核实际值,而不是只看配置文件

典型使用场景

  • 主机加固:批量下发内核参数基线并确认生效
  • 合规整改:条款要求内存保护、网络防护等内核层配置
  • 故障排查:确认实际生效值,判断是否被其他配置文件覆盖
  • 变更复核:系统升级或云镜像更新后确认参数未回退
  • 容器环境评估:判断容器内参数是否可改、真实值来自何处

加载与验证

加载与验证
echo 'kernel.randomize_va_space = 2' >> /etc/sysctl.d/99-hardening.conf
sysctl --system                                   # 按顺序加载全部配置文件
sysctl kernel.randomize_va_space net.ipv4.tcp_syncookies net.ipv4.conf.all.rp_filter
sysctl -a 2>/dev/null | grep -E 'syncookies|rp_filter'   # 全量取值抽查

直接读内核值

直接读内核值
cat /proc/sys/kernel/randomize_va_space
cat /proc/sys/net/ipv4/tcp_syncookies
ls -l /etc/sysctl.d/                              # 查看配置文件与加载顺序
sysctl -p /etc/sysctl.d/99-hardening.conf         # 单独加载某个文件(排查用)

配置位置与优先级

位置作用说明
主配置文件传统内核参数配置入口历史遗留参数常在这里,需一起核对
内核参数目录推荐的下发位置独立文件便于版本管理与回滚
文件名前缀决定加载顺序编号大的后加载,会覆盖先加载的同名参数
运行时修改仅当前运行有效重启即丢,不能替代配置文件
云镜像预置文件厂商预置的参数可能与自建配置冲突,需明确覆盖关系
用较大的文件名前缀能保证自己的配置最后加载:与云厂商预置文件冲突时,以文件名编号更大的为准,但冲突项要显式确认,不能默认自己的值一定生效。改动前后都要留一份取值快照,便于回滚时对比。
运行时修改命令只影响当前运行状态,重启后回到配置文件的值,两者不要混用。容器内的部分内核参数为只读,由宿主机命名空间决定,容器里加载报错属预期现象,设置点应在宿主机或编排层。

推荐的落地流程

按固定流程执行:先在配置文件里写入待加固参数并留存改动前的取值,然后统一加载,逐项读取内核实际值确认,最后把配置纳入配置管理与版本控制。后续在系统升级、镜像更新与云侧变更后各复核一次,避免参数在无人察觉的情况下回退。

易错点

  • 只用运行时命令修改:重启后直接丢失,属于未落地的加固
  • 配置写了但未加载:文件存在不等于生效,必须逐项读取内核实际值验证
  • 忽略加载顺序:多个文件定义同一参数时以最后加载的为准,冲突项需显式确认
  • 容器内修改内核参数:多数参数只读或共享宿主机,改不动属正常,设置点应上移
  • 不留改动前快照:参数一旦影响业务,缺少原值会增加回滚难度

数据来源与参考

  • sysctl.conf(5)、sysctl.d(5) 手册
  • CIS Linux Benchmark:内核参数章节

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌