如何在Linux下利用Find -User 0 -And -Not -Name "root" 全局盘点并秒级拦截系统中伪装成普通账号的UID=0后门

小伟君_7091

小伟君_7091

2026-05-31

934人浏览

原创

应使用 getent passwd | awk -F: '$3 == 0 {print $1 ":" $6 ":" $7}' 筛查所有 UID=0 账户,而非 find -user 0;发现异常账户后须人工确认来源与风险,再执行锁定、禁用或删除操作。

如何在linux下利用find -user 0 -and -not -name \

find -user 0 -and -not -name "root" 这个命令不能用于盘点 UID=0 的用户账户,它根本不会输出任何结果,也不符合 Linux 账户管理机制。原因很直接:-user 0 是 find 命令中用来按文件所属用户(UID)查找文件的参数,不是查 /etc/passwd 中的用户条目。它只会扫描文件系统里“所有者 UID 为 0”的文件(比如 /root/ 下的文件、/etc/shadow 等),和“是否存在非 root 的 UID 0 账户”完全无关。

真正要秒级发现并拦截这类后门,得从账户数据源入手,分三步走:快速筛查、人工确认、即时阻断。

⚠️ 注意:所谓“秒级拦截”,本质是“秒级发现 + 手动确认后立即处置”,没有全自动静默拦截的安全机制;任何声称能“自动删账号而不留痕”的脚本都极度危险,可能误伤系统服务。

快速筛出所有 UID=0 的账户(含伪装者)

只查 /etc/passwd 不够全面(尤其启用了 LDAP/SSSD 时),必须用 getent 兼容后端:

getent passwd | awk -F: '$3 == 0 {print $1 ":" $6 ":" $7}'

正常输出仅一行:

root:/root:/bin/bash

若出现多行,例如:

root:/root:/bin/bash
backup:/var/backup:/sbin/nologin
admin:/home/admin:/bin/bash

说明存在非 root 的 UID=0 账户——这就是高危后门或严重配置错误。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载

重点确认来源与风险等级

对每个非 root 的 UID=0 用户,逐项核查:

  • 是否在 /etc/shadow 中有密码记录?
    sudo grep '^backup:' /etc/shadow
    若第二字段为空(backup::...)或为弱哈希(如 $1$...),风险极高。

  • 是否近期登录过?
    lastlog -u backup 或 sudo journalctl _UID=0 | grep backup | tail -3

  • 是否由自动化工具误建?
    检查命令历史:history | grep -E "(useradd|adduser).*-u.*0.*-o"
    查看 Ansible/Puppet 日志(如 /var/log/ansible.log)是否有 uid=0 的 user 模块调用。

  • 是否具备登录能力?
    看 shell 是否为 /bin/bash /bin/sh 等交互式 shell;若为 /sbin/nologin,仍可能被 su -c 或 sudo 利用,不可掉以轻心。

立即拦截动作(确认为非法后)

确认为攻击者植入后,执行以下任一操作(不要跳过确认环节):

  • 锁定账户(推荐首选):
    sudo usermod -L -s /usr/sbin/nologin backup

  • 清空密码并禁用 shell:
    sudo passwd -d backup && sudo usermod -s /usr/sbin/nologin backup

  • 彻底删除(仅当确认无业务依赖):
    sudo userdel -r backup
    ⚠️ 删除前务必检查 id -Gn backup、crontab -u backup -l、ls -la /home/backup/.ssh/,避免残留密钥或定时任务。

补充加固:防止再次植入

  • 禁用危险参数(需重启 useradd 生效):
    编辑 /etc/adduser.conf,设 ALLOW_BADNAME=no,并确保无 useradd -o 调用权限。

  • 审计创建行为:
    启用 auditd 规则:
    sudo auditctl -a always,exit -F uid!=0 -F auid>=1000 -F perm=x -F path=/usr/sbin/useradd

  • 设置告警:
    将开头的 getent 命令加入每日 cron,输出异常时邮件通知管理员。

不复杂但容易忽略。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 网络安全
Java 网络安全

本专题聚焦 Java 在网络安全与加密通信中的应用,系统讲解常见加密算法(MD5、SHA、AES、RSA)、数字签名、HTTPS证书配置、令牌认证(JWT、OAuth2)及常见安全漏洞防护(XSS、SQL注入、CSRF)。通过实战项目(如安全登录系统、加密文件传输工具),帮助学习者掌握 Java 安全开发与加密技术的实战能力。

2025.10.13

5005

12

PHP 安全与防护
PHP 安全与防护

本专题聚焦于PHP开发中的安全问题与防御措施,详细讲解SQL注入、XSS攻击、CSRF攻击、文件包含漏洞等常见安全风险及其修复方法。通过结合实际案例,帮助开发者理解漏洞成因,掌握输入验证、会话安全、加密存储与安全编码规范,全面提升PHP网站的安全防护水平。

2025.11.04

415

21

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4250

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3593

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2833

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6930

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6582

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3773

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3285

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习