首页/安全/取证与溯源速查/sudo 使用记录判读
日志溯源53 条

sudo 使用记录判读

sudo 记录执行者、目标用户与命令:关注服务账号执行交互命令、运维账号执行非常规命令、连续提权尝试失败。

取证与溯源速查安全更新于 2026-10-13

sudo 记录怎么判读

sudo 的认证与执行记录写入系统认证日志(Debian 系 /var/log/auth.log,RHEL 系 /var/log/secure),每条成功提权记录包含执行账号、终端、工作目录、目标用户与目标程序。判读的重点不是“有没有 sudo”,而是形态是否异常:服务账号却执行交互式命令、运维账号执行与日常无关的工具、短时间内连续提权失败、账号未登录却有提权记录。把这些形态与登录记录、审计记录交叉,才能还原提权链路。

基本信息

适用平台安装 sudo 的 Linux/Unix 发行版
日志位置Debian 系 /var/log/auth.log;RHEL 系 /var/log/secure;journald 系统用 journalctl -t sudo
关键字段执行账号、TTY、PWD、USER(目标用户)、COMMAND(目标程序)
失败标记incorrect password attempts、authentication failure、user NOT in sudoers
交叉来源登录记录(last/lastlog)、auditd 执行记录、shell 历史文件

典型使用场景

  • 识别服务账号被用于交互式操作:它说明有人借用了服务凭据
  • 发现运维账号执行非常规命令(内网扫描、隧道、下载工具),锁定横向或外带行为
  • 统计连续失败记录,判断是否存在口令爆破或权限摸索
  • 与账号登录时段对照,识别“无人登录却发生提权”的异常
  • 为处置顺序提供依据:先处理提权链路最上游的账号

检索与聚合

检索与聚合
# 近期提权命令
grep 'COMMAND=' /var/log/auth.log | tail -50
# 过滤掉 session opened/closed 之类噪声
grep 'sudo' /var/log/auth.log | grep -v 'session opened' | tail -30
# 统计每个执行账号的提权次数,找出高频账号
awk -F' : ' '/COMMAND=/{split($1,a," "); print a[1]}' /var/log/auth.log | sort | uniq -c | sort -rn | head
# 失败与越权尝试
journalctl -t sudo --since '7 days ago' | grep -Ei 'incorrect password|not in sudoers' | tail -20
# 与登录记录交叉:确认提权时该账号是否在线
last -F | head -20

记录形态对照

记录形态含义判读要点
服务账号 + 交互命令服务账号被当作人工账号使用通常意味着凭据泄露或恶意脚本
运维账号 + 非常规工具执行了与职责无关的程序结合工具用途判断是否为横向或外带
短时间内多次失败口令尝试定位来源 IP 与目标账号,评估爆破规模
无登录记录的提权会话已关闭或日志被裁剪优先级最高,需从其他日志补齐上下文
目标用户为 root 的 shell获得交互式 root 权限后续命令需审计或回放补全
sudo 只记录它启动的程序。COMMAND=/bin/bash 之后在其中执行的所有命令都不在这条记录里,必须靠 auditd 的执行记录或会话回放补齐。
与账号登录时间交叉是最有效的判读方法:非登录期出现 sudo 记录即可疑,若同一账号在多台主机同时出现提权记录,通常说明凭据被批量使用。

易错点

  • 把登录日志里的大量 session opened/closed 行混入统计:噪声会淹没真实记录,检索时先过滤
  • 按 COMMAND= 后简单截取:命令行含空格与引号,解析要取到行尾,截断会丢失实际参数
  • 只查一台主机:凭据横向复用时提权记录会分散在多台机器上,必须做批量比对
  • 忽略失败记录:失败尝试反映攻击者的尝试次数与方向,是判断是否被突破的重要参考
  • 把 sudo 记录当作完整行为链:它只覆盖目标程序本身,子命令与文件操作需要审计数据补充

数据来源与参考

  • man 8 sudo(日志)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌