首页
学习
活动
专区
工具
TVP
发布

Redis入侵及防护

Redis作为一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,由于性能高效,使用的人越来越多,但是很多人不考虑Redis的安全,导致服务器被入侵。

废话不多说,直接上干货!

Redis默认情况下,会绑定0.0.0.0:6379,这样的配置结果是,Redis服务会暴露在公网上,如果在没有开启认证的情况下,可以导致任意用户在未授权的情况下访问Redis以及读取或任意修改Redis数据,下面演示如果操作。

准备一台安装有Redis服务的服务器,默认配置,并确保服务已启动

通过telnet(或redis-cli)连接到目标服务器redis服务

首先查看配置数据存储目录

可以看到,默认保存目录是/var/lib/redis,我们可以通过config命令修改dir都我们想要的位置

如图,我通过config命令将dir和dbfilename修改,熟悉CentOS的都知道,/var/spool/cron/是保存所有用户定时任务的目录,该目录下,以用户名为文件保存了各个用户的定时任务,我这里直接修改dbfilename为root,这样我可以写任意命令到root用户的计划任务

如图,写入一条反弹shell的定时任务到redis数据库,并执行save命令,将该数据保存到root计划任务中

如图查看计划任务,已经被写入,开始用nc连接

等待1分钟,定时任务执行之后,直接连入目标服务器,并且是root权限,而且发现在目标服务器中,都无法看到有其余用户登陆。

这里只是举个最简单的例子,通过redis,可以写入任意shell,获取任意权限,可以将公钥直接写入root/.ssh/authorized_keys。

修复建议:

禁止一些高危命令

rename-command FLUSHALL "" //防止清库

rename-command CONFIG "" //防止直接改配置

rename-command EVAL

以低权限允许Redis服务

为Redis服务创建单独的用户和家目录,并配置禁止登陆

为Redis添加密码验证

修改redis.conf,添加requirepass mypasswd

禁止外网访问Redis

修改redis.conf,bind 127.0.0.1,这里如果需要内网访问,可以通过bind 192.168.0.1/24内网网段来使用。

欢迎分享和关注,运维实谈,不定期分享纯干货!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180209G0DAAM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券