首页/安全/安全加固速查/SUID/SGID 文件扫描

SUID/SGID 文件扫描

SUID 文件是提权捷径:对照发行版默认清单分类,最近 30 天新增的 SUID 文件重点核实来源。

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

扫描只是第一步

扫描命令本身很简单,价值在于分类:一次列出的文件通常有几十个,其中绝大多数是发行版自带的正常程序。真正要关注的是构建在可写目录下的、属主异常的和最近三十天新增的条目。所以核查的输出不应是一长串路径,而是一张分了类的清单——基线内、基线外、近期新增,每类给出不同处置。

基本信息

加固项提权面清点
适用平台Linux(RHEL/CentOS/Debian/Ubuntu)
风险等级高
判读基线外的条目按可疑清单处理,逐一给出解释或清除
扫描范围SUID 与 SGID 两类,配合修改时间筛选

典型使用场景

  • 首次核查:建立发行版默认清单,作为后续比对基准
  • 周期巡检:重点看与上期相比新增的条目
  • 事件排查:攻击者常用 SUID 程序维持提权能力
  • 变更复核:安装软件后确认引入了哪些提权程序
  • 合规取证:把分类后的清单作为入侵防范的检查材料

核查命令

核查命令
find / -xdev -perm -4000 -type f 2>/dev/null | sort | head -40      # SUID 文件
find / -xdev -perm -2000 -type f 2>/dev/null | sort | head -20      # SGID 文件
find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -newermt '-30 days' 2>/dev/null | head
find / -xdev -perm -4000 -type f -writable 2>/dev/null | head        # 落在可写目录下的
find / -xdev -perm -4000 -type f -not -user root 2>/dev/null | head  # 属主不是 root 的

结果分类与判读

分类特征处置
基线内属于发行版默认清单记录归档,更新基线
基线外不在默认清单中逐个核实来源,无法解释则按可疑处理
近期新增修改时间在近三十天内与变更记录对照,无记录即重点排查
落在可写目录文件所在目录任意用户可写风险最高,优先处置
属主非 rootSUID 程序的属主不是 root确认是否被人为改写属主
结果按分类归档:把扫描输出拆成「基线内」与「基线外」两栏,基线外的每个文件都要给出解释或清除动作。这份分类清单比原始列表更适合作为证据保存,也更便于下一次比对。
两个执行细节:扫描时跳过其他文件系统会漏掉数据盘与网络挂载,多分区环境要按挂载点分别执行;另外现代发行版可能用能力位替代 SUID 来实现同类功能(例如仅授予网络相关能力),这类程序不出现在 SUID 清单里属于正常情况。

怎么得到可用的默认清单

最稳妥的办法是拿一台同版本的最小化安装主机跑一次扫描,得到该发行版的默认清单,再以它为基准比对生产机器。比这个更好的做法是把清单纳入配置管理:每次镜像更新后重新生成,基线随发行版演进同步变化,避免用一份过期清单长期比对产生大量误报。

易错点

  • 把扫描结果当成结论:不做基线内与基线外的分类,几十条路径无法判断哪条需要注意
  • 漏扫其他文件系统:数据盘与挂载点上的提权程序不会被发现,多分区要分别执行
  • 忽略修改时间筛选:与变更记录对照才能判断新增条目是否正常,这一步常被省略
  • 不检查文件属主与上级目录权限:同名替换类攻击正是靠这两个属性隐藏
  • 缺少基线来源:用一份来源不明的清单比对,会持续产生无法解释的差异

数据来源与参考

  • CIS Linux Benchmark:SUID 检查
  • 等保 2.0:入侵防范

相关工具

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