新睿云

> 知识库 > 黑客能否重启云服务器?应该如何避免?

黑客能否重启云服务器?应该如何避免?

作者/来源:新睿云小编 发布时间:2020-03-17

黑客是否能重启云服务器?其实如果您设置不当,确实存在着被入侵的可能,但黑客往往并不是重启您的服务器。而且利用您的云服务器挖矿,本次我们就以一些案例来看黑客是如何控制您的云服务器的。

本文重点

黑客攻防案例分析

认知自我提高防范黑客

一、黑客攻防案例分析

1.案例分析

某天刚到公司同事询问我,为什么OA打不开了,我当时心里想肯定是挂在云服务器上Nginx挂了呗!反正公司内部用,当时选用某些不知名小厂的云服务器。

反正当时也不是一次两次出现这种问题了,我立刻登录云服务器,当时我发现登录不上了。

可是上去后台,我发现显示正常开机,但CPU机会要跑满了。我也没打算提工单,反正也没人回复。登录不了服务器的情况下是无法做任何操作的,于是我就选择了重启。

重启后,CPU使用率降了下来,服务正常运行,一切皆大欢喜……

皆大欢喜

皆大欢喜

但是,这一切都完结了吗?

这个并没有,没过几天又出现了同样的问题。这次重启登录服务器发现  gpg-agentd进程出奇的高。

CPU占用过高(已经用户挖矿)

CPU占用过高(已经用户挖矿)

CPU200%?实在太可怕

经过一顿搜索资料,我们大体摸清的黑客的套路。

利用了redis 特性可以把缓存内容写入本地文件的漏洞,他就可以随便在服务器的 /root/.ssh/authorized_keys

文件中写入公钥,在用本地的私钥去登陆被写入公钥的服务器,就无需密码就可以登陆,登录之后就开始定期执行计划任务,下载脚本,更牛逼的是,他还可以利用masscan 进行全网扫描redis 服务器 6379 的端口,寻找下一个个肉鸡,如果你的 redis

端口是默认6379,并且还没有密码保护,很容易就被攻破解,最后也就是说这个脚本会迅速在全网裂变式增加。

了个 lastb 命令看了一眼后,被扫了五十万次次次,我们信了这个暴力破解暴力破解暴力破解(重要问题重复三次,嘻嘻!)

2.具体黑客入侵套路详解

第一步,先在/root/.ssh/authorized_keys文件中生成ssh公钥,黑客以后无需密码就可以登录了

第二步,建立定时任务,作用是每20分钟去他们服务器再次下载这个脚本,然后执行,这一步简直就是让自己杀不死;

第三步,开机启动项也加入下载脚本命令,也就是你重启后会自动下载,fuck...

接下来,又改了 hosts、limits 限制,最重要的是这个脚本还记得去清除上述所有操作,不留下痕迹,佩服!!!

其后就是去下载真正的挖矿文件,也就是占用 CPU 居高的那个 gpg-agentd,操作也是很流弊的,删除所有操作记录和文件。

正常人来干这挖矿这件事的话,应该到这一步就可以打完收工了,因为已经安装成功挖矿软件了。那你要这么想、这么做,你不适合当黑客。更流弊的操作来了!!!

第三个脚本,这里他就是贴心的给你安装、升级 gcc、libpcap 和 apt-get 等软件命令,他真的这么好么?其实他是为了顺手下载了一个名字叫 masscan 的软件,然后装了上去,同时也顺手做了处理现场操作,在下佩服!!

那这个 masscan 是干嘛的呢?

据说 masscan 是最快的互联网端口扫描器,最快可以在六分钟内扫遍互联网。扫描redis 的 6379端口,对redis进行配置,利用了redis把缓存内容写入本地文件的漏洞,在/root/.ssh/authorized_keys文件中写入公钥,登录之后就开始定期执行计划任务,下载脚本。

二、认知自我提高防范黑客

1.网络层加固

指定 Redis 服务使用的网卡

默认情况下,Redis 监听 127.0.0.1。如果仅仅是本地通信,请确保监听在本地。

这种方式可以在一定程度上缓解 Redis 未授权访问的风险(例外情况下,如果 Redis 以 root 用户运行,攻击者借助已有的 webshell,就可以利用该 Redis 来反弹 shell 以实现提权)。

redis.conf 文件中找到 # bind 127.0.0.1,将前面的 # 去掉,然后保存。

注意:

该操作需要重启 Redis 才能生效。

修改后只有本机才能访问 Redis,也可以指定访问源 IP 来访问 Redis。

bind 192.168.1.100 10.0.0.1

2.设置防火墙策略

如果正常业务中 Redis 服务需要被其他服务器来访问,可以通过 iptables 策略,仅允许指定的 IP 来访问 Redis 服务。

iptables -A INPUT -s x.x.x.x -p tcp --dport 6379 -j ACCEPT

3.账号与认证

设置访问密码

redis.conf 中找到 requirepass 字段,去掉其注释,并在后面填上需要的密码。Redis 客户端也需要使用此密码来访问 Redis 服务。

打开 /etc/redis/redis.conf 配置文件:

requirepass !QE%^E3323BDWEwwwe1839

确保密码的复杂度,配置完毕后重启服务即可生效。

4.服务运行权限最小化

修改 Redis 服务运行账号

请以较低权限账号运行 Redis 服务,并禁用该账号的登录权限。以下操作创建了一个无 home 目录权限,且无法登录的普通账号:

useradd -M -s /sbin/nologin [username]

注意:该操作需要重启 Redis 才能生效。

5.服务精细化授权

隐藏重要命令

Redis 无权限分离,其管理员账号和普通账号无明显区分。攻击者登录后可执行任意操作,因此需要隐藏以下重要命令:FLUSHDB, FLUSHALL, KEYS,PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME,DEBUG, EVAL。

另外,在 Redis 2.8.1 及 Redis 3.x (低于 3.0.2) 版本下存在 EVAL 沙箱逃逸漏洞,攻击者可通过该漏洞执行任意 Lua 代码。

下述配置将 config/flushdb/flushall 设置为空,即禁用该命令;也可设置为一些复杂的、难以猜测的名字。

rename-command CONFIG ""

rename-command flushall ""

rename-command flushdb ""

rename-command shutdown shotdown_test

保存后,执行 /etc/init.d/redis-server restart 重启生效。

6.安全补丁

定期关注最新软件版本,并及时升级 Redis 到最新版,防止新漏洞被恶意利用。

热门标签
new year
在线咨询
咨询热线 400-1515-720
投诉与建议
{{item.description}}

—您的烦恼我们已经收到—

我们会将处理结果发送至您的手机

请耐心等待