给临时目录加限制
把 /tmp 独立挂载并加上 noexec、nosuid、nodev 后,攻击者下载到临时目录的程序无法直接执行、目录内的 SUID 程序不起作用、设备文件也不会被解析。它是入侵防范里的常规项,代价是可能影响依赖在 /tmp 解包并运行的安装程序、CI 任务与部分监控插件——所以要先评估再上生产。
基本信息
| 加固项 | 临时目录挂载选项收敛 |
|---|---|
| 适用平台 | Linux(RHEL/CentOS、Debian/Ubuntu) |
| 权限要求 | root(改 fstab 或 systemd 单元) |
| 目标选项 | rw,nosuid,nodev,noexec |
| 基线对应 | CIS:nodev/nosuid/noexec on /tmp partition |
典型使用场景
- 公网可访问的服务器,降低下载即执行的攻击成功率
- 等保测评中“入侵防范”条款要求隔离临时目录执行能力
- 多租户或跳板机上限制低权限用户从临时目录运行工具
- 容器宿主机收紧 /tmp 与 /dev/shm 的行为
- 应急加固阶段快速叠加一层缓解措施
核查当前挂载
核查当前挂载
findmnt /tmp # 看实际来源与已生效选项
mount | grep ' /tmp ' # 传统写法的对照输出
findmnt -no OPTIONS /tmp # 只要选项字段,便于脚本判定配置与生效
配置与生效
# /etc/fstab
# tmpfs /tmp tmpfs defaults,rw,nosuid,nodev,noexec,relatime 0 0
mount -o remount,nosuid,nodev,noexec /tmp # 先临时验证业务是否受影响
systemctl daemon-reload && mount -a # 上线前用 mount -a 验证 fstab 可解析
findmnt /tmp # 复核选项已生效挂载选项作用
| 选项 | 作用 | 副作用提醒 |
|---|---|---|
| noexec | 禁止在该文件系统执行二进制 | 安装包、CI 脚本可能在 /tmp 执行失败 |
| nosuid | 忽略目录内 SUID/SGID 位 | 极少造成业务影响,收益明确 |
| nodev | 不解析目录内设备文件 | 误把设备文件放临时目录的场景会报错 |
| tmpfs | 内存文件系统,重启清空 | 占用内存;入侵痕迹不易留存 |
改 fstab 属于高风险操作:写错条目会让系统启动进紧急模式。稳妥做法是先 mount -o remount 临时验证业务,再用 mount -a 校验 fstab 语法,最后才重启。同时保留一份控制台或救援通道,避免远程机器失去登录可能。
部分发行版由 systemd 的 tmp.mount 单元管理 /tmp,此时 fstab 与单元双写会互相冲突。动手前先用 findmnt 确认 /tmp 的实际来源,改对应的那一处,并在变更后复核挂载选项。