目 录
一、可疑用户是一个安全问题
二、查看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)用户ID(User ID, UID):
- 这是一个数字,用于在系统中唯一标识用户。超级用户的UID通常是0,而系统账户的UID通常在1-999之间。普通用户的UID通常从1000开始,并且是唯一的。
(4)组ID(Group ID, GID):
- 这个数字表示用户的主(或默认)用户组。每个用户都属于至少一个用户组,而GID就是该用户组在系统中的唯一标识。
(5)用户全名或描述(GECOS):
- 这个字段通常包含用户的全名或其他描述性信息。它可以包含多个由逗号分隔的字符串,但这些字符串通常不被系统使用,而是为人类阅读者提供信息。
(6)家目录(Home Directory):
- 这是用户登录后所处的目录。用户的个人文件和设置通常存储在这个目录下。例如,普通用户的家目录可能是/home/username。
(7)默认Shell(Shell):
- 这个字段指定了用户登录后用于执行命令的程序。例如,/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系统被人入侵时,攻击者很可能会尝试新建账户来保持对系统的持久访问。通过创建新的用户账户,攻击者可以更容易地隐藏他们的活动,并在将来重新获得访问权限,即使他们的初步入侵行为被检测到并进行了某些清理工作。
以下是一些迹象,可能表明系统已经被入侵并新建了账户:
- 检查/etc/passwd文件:这个文件包含了系统上所有用户的信息。如果你发现有不熟悉的用户名,尤其是UID不在系统默认范围内的(通常普通用户的UID从1000开始),那么这可能是一个被添加的恶意账户。
- 检查/etc/shadow文件:这个文件包含了用户的加密密码信息。如果你发现有与/etc/passwd中不匹配的条目,或者密码字段看起来不寻常(例如,非常短的密码哈希,或者全为相同字符的哈希),那么这可能是入侵者添加的账户。
- 查看用户目录:在/home目录下检查是否有不熟悉的用户目录。这些目录可能包含攻击者的工具、脚本或其他恶意文件。
- 检查系统日志:检查如/var/log/auth.log(取决于发行版,日志位置可能有所不同)等日志文件,以查找任何与账户创建或认证失败相关的可疑条目。
- 使用last和w命令:这些命令可以显示最近登录的用户和当前登录的用户。如果你看到不熟悉的用户名,那么这可能是入侵者的账户。
- 检查网络连接和进程:使用netstat、lsof或ss命令查看当前的网络连接和监听的端口。使用ps命令查看正在运行的进程。如果你发现任何不熟悉或可疑的连接或进程,那么系统可能已经被入侵。
- 检查计划任务和服务:攻击者可能会添加计划任务(例如,在/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或其他隐藏的后门。
- ? 审查安全策略,更新所有软件,并强化系统的防御措施以防止未来的攻击。
- ? 从已知的干净备份中恢复系统,而不是尝试手动清理恶意账户和文件,因为攻击者可能已经安装了rootkit或其他隐藏的后门。
当然,还要看你的系统的具体情况,若仅仅是碰到了一个小问题,建议还是仔细研究,建立好多个安全措施,防范于未然。