先禁用后删除
直接删除可疑账号会同时抹掉登录历史与权限关联:Linux 上记录从 passwd、shadow 中消失;Windows 上账号删除后,历史事件里的 SID 也就难以对应到具体身份。
正确顺序
记录 → 禁用 → 断通道(会话与密钥) → 观察 → 删除。观察期内若出现异常行为,保留的账号信息仍是溯源依据,删除动作放到最后一步。
基本信息
| 第 1 步 | 导出账号信息与登录记录 |
|---|---|
| 第 2 步 | 禁用:usermod -L 或 Disable-LocalUser |
| 第 3 步 | 清理 authorized_keys 与活动会话 |
| 第 4 步 | 观察期结束后再删除 |
| Linux 常用命令 | passwd -S、usermod -L -s /usr/sbin/nologin |
| Windows 常用命令 | Disable-LocalUser、Get-LocalUser |
典型使用场景
- 处置攻击者新建的后门账号
- 处理离职人员的遗留账号
- 清理过期的服务账号
- 观察期内临时停用账号而不影响后续溯源
- 为审计保留账号历史
Linux 禁用而非删除
Linux 禁用而非删除
passwd -S baduser
usermod -L -s /usr/sbin/nologin baduser
passwd -S baduser
cp -a /etc/passwd /etc/shadow /etc/group /evidence/ # 删前留档
pkill -KILL -u baduser # 谨慎:先确认业务影响Windows 禁用账号
Windows 禁用账号
Disable-LocalUser -Name 'baduser'
Get-LocalUser -Name 'baduser' | Format-List Name,Enabled,LastLogon
Get-LocalGroup | ForEach-Object { $g=$_.Name; $m=Get-LocalGroupMember $g -ErrorAction SilentlyContinue | Where-Object Name -match 'baduser'; if ($m) { "$g" } }输出逐列读法
| 字段 | 含义 | 正常/异常 |
|---|---|---|
| passwd -S 状态位 | L 锁定、P 有口令、NP 空口令 | 出现 NP 说明账号本身就有问题 |
| Enabled | 账号启用状态 | 禁用后仍被使用说明存在其他通道 |
| LastLogon | 最后登录时间 | 用于判断账号是否真被使用过 |
| 文件属主 | 账号关联的文件 | 删除账号后属主会变成数字 UID,难以判断归属 |
删除前把 passwd、shadow、group 复制到证据目录:账号删掉后,登录历史与权限对照都很难还原。
禁用不等于阻断:还要清理 authorized_keys、sudo 配置与计划任务,否则账号虽停用,凭据与任务通道仍然有效。
删除前要确认的前提
- 确认该账号没有被关键服务或运维脚本使用
- 确认账号关联的文件已经有新的属主安排
- 确认历史登录记录已经导出并归档
- 确认相关凭据、密钥与计划任务都已失效
观察期内要盯什么
- 该账号是否被重新启用或出现同名新账号
- 相关密钥与计划任务是否再次出现
- 同一来源地址是否继续尝试使用该账号登录
- 关联服务是否因账号停用而报错,需要及时调整
处置记录要写清
- 账号名与 UID 或 SID
- 发现时间与判定依据
- 执行的操作、时间与操作人
- 观察期安排与最终复核结论