Linux proc 目录安全加固

一、原理背景

/proc 是内核虚拟文件系统,实时暴露所有进程PID、命令行、环境变量、文件句柄、权限等敏感信息。默认所有普通用户可读取全部进程信息,存在信息泄露风险:

  • 窃取其他用户程序路径、密码参数、密钥;

  • 探测后台服务、端口、数据库连接;

  • 多租户服务器横向侦察。

Linux Kernel 3.3+ 提供 hidepid + gid 挂载参数限制进程可见性:

  • hidepid=0(默认):全部用户可见所有进程;

  • hidepid=1:PID 目录能看到文件名,但无法进入读取内容;

  • hidepid=2:完全隐藏非自身 PID 目录;

  • gid=XX:指定组内所有用户不受隐藏限制,可查看全量进程(运维监控专用)。

二、临时生效(重启失效)

  1. 仅全局隐藏所有普通用户进程

    mount -o remount,rw,hidepid=2 /proc

  2. 全局隐藏 + 放行指定监控组(推荐)

    1. 创建专用监控组(GID>1000)

    groupadd -g 1500 monitor

    2. 运维用户加入该组

    usermod -aG monitor test

    3. 重新挂载生效

    mount -o remount,rw,hidepid=2,gid=1500 /proc

验证效果。

三、永久持久化(/etc/fstab)

编辑挂载表:

复制代码
vim /etc/fstab

添加一行到文件末尾:

复制代码
proc /proc proc defaults,hidepid=2,gid=1500 0 0

验证挂载语法无报错:

复制代码
mount -a

无输出即代表配置正常,重启永久生效。

四、关键风险与官方警告(重点)

  1. Red Hat 官方明确不推荐 RHEL 7/8/9 使用hidepid

官方知识库编号:access.redhat.com/solutions/6704531

  • 核心原因 :与 systemd 深度耦合的功能会受影响,包括:

    • systemctljournalctl 无法正确关联用户服务;

    • su/sudo、PAM认证、会话管理偶发卡死;

    • 系统服务状态查询和依赖关系解析异常。

  1. 其他通用风险点
  • 部分监控代理(如 Zabbix Agent、Prometheus Node Exporter)可能因无法读取进程信息而功能降级;

  • 容器化环境(Docker/Kubernetes)中,若节点启用此参数,可能影响容器运行时(如 containerd)对进程状态的正确感知。

五、替代安全方案(RHEL/CentOS/Rocky Linux 推荐)

鉴于 hidepid 与 systemd 的冲突,生产环境优先使用以下无副作用加固手段:

方案1:限制ps/top等SUID工具权限(简单)

复制代码
groupadd procadmin
usermod -aG procadmin root,admin
chmod 705 /bin/ps /usr/bin/top /usr/bin/lsof
chgrp procadmin /bin/ps /usr/bin/top /usr/bin/lsof
复制代码

-缺点:只能限制命令行工具,无法阻止直接读取 /proc 文件。

方案2:内核参数 + 文件权限收紧(更优)

复制代码
# 收紧关键目录权限
chmod 0700 /proc/self
chmod 0600 /proc/cmdline /proc/kcore
 
# 设置内核安全参数
echo "kernel.kptr_restrict = 2" >> /etc/sysctl.conf
echo "kernel.dmesg_restrict = 1" >> /etc/sysctl.conf
sysctl -p
复制代码
  • kptr_restrict=2:普通用户无法读取内核指针、程序内存基址;

  • dmesg_restrict=1:仅 root 可查看 dmesg 内核日志。

方案3:强制访问控制(最佳实践)

  • SELinux(RHEL/CentOS默认):通过精细化策略限制进程访问范围,是 Red Hat 官方推荐的首选加固方式。

  • AppArmor(Ubuntu/Debian):提供类似的应用级访问控制。

方案4:多租户隔离使用容器/虚拟机业务隔离最佳实践:不同用户业务运行在独立容器或虚拟机,从底层实现进程视图隔离,不依赖 /proc 挂载参数。

六、回滚操作(配置出错时恢复)

临时取消hidepid

复制代码
mount -o remount,rw,defaults /proc

删除永久配置:编辑 /etc/fstab,移除相关行。

删除监控组(可选):

复制代码
groupdel monitor

七、适用场景总结

适合使用hidepid(极少数场景)

  • 老旧无 systemd 内核(如 CentOS 6);

  • 纯静态服务器、无系统服务自动化管理;

  • 单机单业务、无多服务依赖的测试环境。

严禁使用 hidepid

  • RHEL 7+/CentOS 7+/Rocky/AlmaLinux 等所有现代发行版

  • 任何使用 systemd 的系统;

  • 容器集群、需要日志审计、自动化运维、多服务协同的生产环境。


最终建议:在现代企业级 Linux 生产环境中,请优先采用"方案2(内核参数)+ 方案3(SELinux)"的组合,这既能有效降低信息泄露风险,又能保证系统完整性和稳定性。hidepid 只应在充分了解风险后的非生产环境下进行测试。

红帽认证-RHCE \ RHCA

红帽认证是全球公认的 Linux 权威认证,也是国内企业招聘 Linux 运维、云计算、容器、大数据工程师时,最常标注的 "优先条件",甚至很多企业将 RHCE/RHCA 作为入职的基础技能要求。

【考证资讯】RHCE 9 将于 9 月 30 日停考,10 月启用 RHCE 10 新版考试!

相关推荐
爱和冰阔落2 分钟前
【Linux】条件变量为什么必须配合互斥锁:从 pthread_cond_wait 到阻塞队列
linux·运维·c++·缓存·中间件·安卓
tedcloud1233 分钟前
God‘s Eye View 怎么搭建?在云服务器上部署一个实时 3D 地球可视化平台
linux·服务器·开发语言·后端·rust
星间都市山脉4 分钟前
Android16 SystemService.onBootPhase 调用时机
android·java·linux·windows·ubuntu
初願致夕霞9 分钟前
Linux 进程间通信(IPC)机制详解:管道、FIFO 与 System V 共享内存
linux·服务器·c++
ynchyong9 分钟前
Linux nohup 后台服务合并标准错误输出到一个文件
java·linux·运维
xx~t19 分钟前
嵌入式——51单片机3
linux·c语言·嵌入式硬件·51单片机
牛油果子哥q27 分钟前
LLM 服务网关设计:流量分发、鉴权、限流、多模型路由、负载均衡、接口版本管理(C++ 网关落地)
运维·负载均衡
傲世仙尊29 分钟前
从磁盘硬件到Ext文件系统-Linux磁盘级文件系统学习笔记
linux·运维·服务器·开发语言·c++
星源~32 分钟前
Linux - Trae Code Linux 环境嵌入式开发指南
linux·mcu·嵌入式·trae code
蓝速科技38 分钟前
信创终端 POC 测试实战与选型避坑指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理