目? ? ? ? ? ? ? ? ? ?录
????????当Linux系统被人入侵时,攻击者很可能会尝试新建账户来保持对系统的持久访问。通过创建新的用户账户,攻击者可以更容易地隐藏他们的活动,并在将来重新获得访问权限,即使他们的初步入侵行为被检测到并进行了某些清理工作。
????????特别是我们平常一直基于网络的系统,比如视频监控平台、视频会议MCU、融合通信平台等等。网络是这些系统的基础,没有网络安全,就没有这些应用的安全。
????????那我们应该如何才能知道:是否有人新建了账户(或新建用户)了呢?
可以使用/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
[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
????????如上两个命令的结果,每一行代表一个用户的账户信息,各字段由冒号(:)分隔。每个字段的解释如下:
(1)用户名(Username):
(2)密码(Password):
(3)用户ID(User ID, UID):
(4)组ID(Group ID, GID):
(5)用户全名或描述(GECOS):
(6)家目录(Home Directory):
(7)默认Shell(Shell):
如第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: 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
方法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
第三个参数: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系统被人入侵时,攻击者很可能会尝试新建账户来保持对系统的持久访问。通过创建新的用户账户,攻击者可以更容易地隐藏他们的活动,并在将来重新获得访问权限,即使他们的初步入侵行为被检测到并进行了某些清理工作。
????????以下是一些迹象,可能表明系统已经被入侵并新建了账户:
????????发现可疑用户,若发现单个,可以直接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
????????总之,如果你发现您的机器出现被入侵的迹象,最佳的做法通常是:
????????当然,还要看你的系统的具体情况,若仅仅是碰到了一个小问题,建议还是仔细研究,建立好多个安全措施,防范于未然。