Linux安全问题,如何查看哪个用户是可疑用户?如何批量删除这些用户?

目                   录

一、可疑用户是一个安全问题

二、查看Linux用户、新建的用户

(一)Linux里查看所有用户的命令

1、直接查看/etc/passwd文件

2、使用getent passwd命令查看

3、字段解释

4、用户信息解释

(二)只查看用户主要信息

1、只查看用户名

2、只查看用户名、用户ID、用户全名和描述

(三)Linux里查看普通用户(非系统用户)

三、系统被入侵并新建用户

四、删除所有新建的用户


一、可疑用户是一个安全问题

        当Linux系统被人入侵时,攻击者很可能会尝试新建账户来保持对系统的持久访问。通过创建新的用户账户,攻击者可以更容易地隐藏他们的活动,并在将来重新获得访问权限,即使他们的初步入侵行为被检测到并进行了某些清理工作。

        特别是我们平常一直基于网络的系统,比如视频监控平台、视频会议MCU、融合通信平台等等。网络是这些系统的基础,没有网络安全,就没有这些应用的安全。

        那我们应该如何才能知道:是否有人新建了账户(或新建用户)了呢?

二、查看Linux用户、新建的用户

(一)Linux里查看所有用户的命令

1、直接查看/etc/passwd文件

可以使用/etc/passwd文件来查看,这个文件存储了所有用户的信息。

[yunwei@ecs-52a1 ~]$ cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin

systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin

tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

polkitd:x:998:996:User for polkitd:/:/sbin/nologin

unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

sssd:x:996:993:User for sssd:/:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

chrony:x:995:992::/var/lib/chrony:/sbin/nologin

rngd:x:994:991:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

mysql:x:1000:1000::/home/mysql:/bin/bash

clamav:x:1001:1001::/home/clamav:/bin/bash

vidisit:x:1002:1002::/home/vidisit:/bin/bash

yunwei:x:1003:1003::/home/yunwei:/bin/bash

2、使用getent passwd命令查看

[yunwei@ecs-52a1 ~]$ getent passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

operator:x:11:0:operator:/root:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin

dbus:x:81:81:System message bus:/:/sbin/nologin

systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin

systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin

tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

polkitd:x:998:996:User for polkitd:/:/sbin/nologin

unbound:x:997:995:Unbound DNS resolver:/etc/unbound:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

sssd:x:996:993:User for sssd:/:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

chrony:x:995:992::/var/lib/chrony:/sbin/nologin

rngd:x:994:991:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

mysql:x:1000:1000::/home/mysql:/bin/bash

clamav:x:1001:1001::/home/clamav:/bin/bash

vidisit:x:1002:1002::/home/vidisit:/bin/bash

yunwei:x:1003:1003::/home/yunwei:/bin/bash

3、字段解释

        如上两个命令的结果,每一行代表一个用户的账户信息,各字段由冒号(:)分隔。每个字段的解释如下:

(1)用户名(Username

  • 这是用户的登录名,用于在系统中唯一标识用户。例如,root是超级用户的用户名。

(2)密码(Password

  • 这个字段在早期的Unix系统中直接存储了用户的加密密码,但在现代Linux系统中,它通常包含一个占位符(例如x)或用于其他身份验证机制的字符串。实际的加密密码存储在/etc/shadow文件中,该文件的访问权限更为严格。

(3)用户IDUser ID, UID

  • 这是一个数字,用于在系统中唯一标识用户。超级用户的UID通常是0,而系统账户的UID通常在1-999之间。普通用户的UID通常从1000开始,并且是唯一的。

(4)IDGroup ID, GID

  • 这个数字表示用户的主(或默认)用户组。每个用户都属于至少一个用户组,而GID就是该用户组在系统中的唯一标识。

(5)用户全名或描述(GECOS

  • 这个字段通常包含用户的全名或其他描述性信息。它可以包含多个由逗号分隔的字符串,但这些字符串通常不被系统使用,而是为人类阅读者提供信息。

(6)家目录(Home Directory

  • 这是用户登录后所处的目录。用户的个人文件和设置通常存储在这个目录下。例如,普通用户的家目录可能是/home/username。

(7)默认ShellShell

  • 这个字段指定了用户登录后用于执行命令的程序。例如,/bin/bash是Bash shell的路径,它是许多Linux系统的默认shell。

4、用户信息解释

如第1、2节中显示的用户信息,我们拿出三个:

root:x:0:0:root:/root:/bin/bash

daemon:x:2:2:daemon:/sbin:/sbin/nologin

yunwei:x:1003:1003::/home/yunwei:/bin/bash

(1)第一行root是超级用户,UID和GID都是0,家目录是/root,默认shell是/bin/bash。

(2)第三行daemon是一个系统用户,通常用于运行后台服务,它的shell设置为/usr/sbin/nologin,表示这个用户不能登录系统。

(3)最后一行yunwei是一个普通用户,UID和GID都是1003,家目录是/home/ yunwei,默认shell也是/bin/bash

(二)只查看用户主要信息

1、只查看用户名

方法1: cat /etc/passwd | cut -d: -f1

[yunwei@ecs-52a1 ~]$ cat /etc/passwd | cut -d: -f1

root

bin

daemon

adm

lp

sync

shutdown

方法2:awk -F: '{ print $1, }' /etc/passwd

[yunwei@ecs-52a1 ~]$ awk -F: '{ print $1 }' /etc/passwd

root

bin

daemon

adm

lp

sync

shutdown

方法3:getent passwd | cut -d: -f1

[121yunwei@ecs-52a1 ~]$ getent passwd | cut -d: -f1

root

bin

daemon

adm

lp

sync

shutdown

2、只查看用户名、用户ID、用户全名和描述

方法1: cat /etc/passwd | cut -d: -f1,3,5

[yunwei@ecs-52a1 ~]$ cat /etc/passwd | cut -d: -f1,3,5

root:0:root

bin:1:bin

daemon:2:daemon

adm:3:adm

lp:4:lp

sync:5:sync

shutdown:6:shutdown

方法2:awk -F: '{ print $1, $3, $5 }' /etc/passwd

[yunwei@ecs-52a1 ~]$ awk -F: '{ print $1, $3, $5 }' /etc/passwd

root 0 root

bin 1 bin

daemon 2 daemon

adm 3 adm

lp 4 lp

sync 5 sync

shutdown 6 shutdown

(三)Linux里查看普通用户(非系统用户)

第三个参数:1000以上的,就是后面建的用户了,也就是普通用户;其它则为系统的用户.可以使用如下命令:

        awk -F: '$3>1000{print $1,$3}' /etc/passwd

实际操作效果如下:

[yunwei@ecs-52a1 ~]$ awk -F: '$3>1000{print $1,$3}' /etc/passwd

nobody 65534

clamav 1001

vidisit 1002

yunwei 1003

[yunwei@ecs-52a1 ~]$

三、系统被入侵并新建用户

        当Linux系统被人入侵时,攻击者很可能会尝试新建账户来保持对系统的持久访问。通过创建新的用户账户,攻击者可以更容易地隐藏他们的活动,并在将来重新获得访问权限,即使他们的初步入侵行为被检测到并进行了某些清理工作。

        以下是一些迹象,可能表明系统已经被入侵并新建了账户:

  1. 检查/etc/passwd文件:这个文件包含了系统上所有用户的信息。如果你发现有不熟悉的用户名,尤其是UID不在系统默认范围内的(通常普通用户的UID从1000开始),那么这可能是一个被添加的恶意账户。
  2. 检查/etc/shadow文件:这个文件包含了用户的加密密码信息。如果你发现有与/etc/passwd中不匹配的条目,或者密码字段看起来不寻常(例如,非常短的密码哈希,或者全为相同字符的哈希),那么这可能是入侵者添加的账户。
  3. 查看用户目录:在/home目录下检查是否有不熟悉的用户目录。这些目录可能包含攻击者的工具、脚本或其他恶意文件。
  4. 检查系统日志:检查如/var/log/auth.log(取决于发行版,日志位置可能有所不同)等日志文件,以查找任何与账户创建或认证失败相关的可疑条目。
  5. 使用lastw命令:这些命令可以显示最近登录的用户和当前登录的用户。如果你看到不熟悉的用户名,那么这可能是入侵者的账户。
  6. 检查网络连接和进程:使用netstat、lsof或ss命令查看当前的网络连接和监听的端口。使用ps命令查看正在运行的进程。如果你发现任何不熟悉或可疑的连接或进程,那么系统可能已经被入侵。
  7. 检查计划任务和服务:攻击者可能会添加计划任务(例如,在/etc/crontab、/etc/cron.*/*或用户的crontab文件中)或启动新的服务来保持持久性。检查这些位置以查找任何不寻常的条目。

四、删除所有新建的用户

        发现可疑用户,若发现单个,可以直接userdel命令删掉对应的用户。但是有时候,入侵者会建立多个用户,混淆我们的思维,这里,我们有办法删除所有新建的普通用户。需要采用一个脚本代码,如下:

#!/bin/bash
#先使用 awk 获取所有 uid 大于 1000 的普通用户名称
#再使用 for 循环,用userdel将每个用户删除即可
use r = $(awk -F: '$3>1000 {print $1}' /etc/passwd)
for i in $user
do
userdel -r $i 
done

        总之,如果你发现您的机器出现被入侵的迹象,最佳的做法通常是:

  •         • 立即断开系统与网络的连接,以防止进一步的数据泄露或损害。
    •         • 从已知的干净备份中恢复系统,而不是尝试手动清理恶意账户和文件,因为攻击者可能已经安装了rootkit或其他隐藏的后门。
      •         • 审查安全策略,更新所有软件,并强化系统的防御措施以防止未来的攻击。

        当然,还要看你的系统的具体情况,若仅仅是碰到了一个小问题,建议还是仔细研究,建立好多个安全措施,防范于未然。

你可能感兴趣的:(安全,linux,web安全)