修补--Redis未授权访问漏洞

--------------------------------阿里云解决方案-----------------------------------

一.漏洞描述

Redis因配置不当可以导致未授权访问,被攻击者恶意利用。当前流行的针对Redis未授权访问的一种新型攻击方式,在特定条件下,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器,可导致服务器权限被获取和数据删除、泄露或加密勒索事件发生,严重危害业务正常服务。

二.Redis安全漏洞影响

一旦入侵成功,Redis数据会丢失,攻击者可直接添加账号用于ssh远程登录控制服务器,会给用户的 Redis 运行环境以及 Linux 主机造成安全风险,引发重要数据删除、泄露或加密勒索事件发生。

三.已确认被成功利用的软件及系统

使用redis客户端直接无账号成功登录redis:

  1. `[email protected]:~# redis-cli -h 10.16.10.2
  2. redis 10.16.10.2:6379> keys *
  3. 1) "1"`

从登录的结果可以看出该redis服务对公网开放,且未启用认证。

三.建议修复方案

  • 网络层加固

1.指定redis服务使用的网卡 (需要重启redis才能生效)redis默认是监听的127.0.0.1上,如果仅仅是本地通信,请确保监听在本地。这种方式缓解了redis的风险,当然并不能绝对保证安全了,假如攻击者有了一个webshell,并且redis以root用户运行,就可以通过该redis来反弹shell,来实现提权。

在 redis.conf 文件中找到 “# bind 127.0.0.1” ,把前面的#号去掉,然后保存。注:修改后只有本机才能访问Redis,也可以指定访问源IP访问Redis。

  1. # bind 192.168.1.100 10.0.0.1

2.设置防火墙策略如果正常业务中Redis服务需要被其他服务器来访问,可以设置iptables策略仅允许指定的IP来访问Redis服务。

  1. iptables -A INPUT -s x.x.x.x -p tcp --dport 6379 -j ACCEPT
  • 账号与认证

1.设置访问密码 (需要重启redis才能生效)在 redis.conf 中找到“requirepass”字段,在后面填上你需要的密码,Redis客户端也需要使用此密码来访问Redis服务。

打开/etc/redis/redis.conf配置文件:

  1. #requirepass !QE%^E3323BDWEwwwe1839

确保密码的复杂度,配置完毕后重启服务即可生效。

  • 服务运行权限最小化

1.修改Redis服务运行账号 (需要重启redis才能生效)请以较低权限账号运行Redis服务,并禁用该账号的登录权限。以下为创建一个无home目录和无法登陆的普通权限账号:

  1. #useradd -M -s /sbin/nologin [username]
  • 服务精细化授权

redis没有权限分离之说,无管理员账号和普通账户之分,导致攻击者登陆后可执行任意操作,因此需要隐藏重要命令,具体如下:

FLUSHDB, FLUSHALL, KEYS,PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME,DEBUG, EVAL等。

在redis2.8.1 及 redis3.x(<3.0.2) 版本下存在eval沙箱逃逸漏洞,攻击者可通过该漏洞执行任意Lua代码。

具体缓解攻击操作,供参考:下述配置将config/flushdb/flushall设置为空,即禁用该命令;也可命名一些攻击者难以猜解的名字。

rename-command CONFIG “”

rename-command flushall “”

rename-command flushdb “”

rename-command shutdown shotdown_test

保存后,执行/etc/init.d/redis-server restart重启生效。

  • 安全补丁

不定期关注最新软件版本,并升级redis到最新版,防止新漏洞被利用。

来源: https://help.aliyun.com/knowledge_detail/37447.html


---------------------------------------------网友解决方案-------------------------------------------

一. 如何初始化Redis的密码?

总共2个步骤:

a.在配置文件中有个参数: requirepass  这个就是配置redis访问密码的参数。

比如 requirepass test123

b.配置文件中参数生效需要重启重启redis 。

.不重启redis如何配置密码?

a. 在配置文件中配置requirepass的密码(当redis重启时密码依然有效)。

# requirepass foobared
 如  修改成 :

requirepass  test123

b. 进入redis重定义参数

查看当前的密码:

[[email protected] redis-2.4.16]# ./src/redis-cli -p 6379
redis 127.0.0.1:6379> 
redis 127.0.0.1:6379> config get requirepass
1) "requirepass"
2) (nil)

显示密码是空的,

然后设置密码:

redis 127.0.0.1:6379> config set requirepass test123
OK

再次查询密码:

redis 127.0.0.1:6379> config get requirepass
(error) ERR operation not permitted

此时报错了!

现在只需要密码认证就可以了。

redis 127.0.0.1:6379> auth test123
OK

再次查询密码:

redis 127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "test123"

密码已经得到修改。

当到了可以重启redis的时候 由于配置参数已经修改 所以密码会自动生效。

要是配置参数没添加密码 那么redis重启 密码将相当于没有设置。

三.如何登录有密码的redis?

a.在登录的时候 密码就输入

[[email protected] redis-2.4.16]# ./src/redis-cli -p 6379 -a test123
redis 127.0.0.1:6379> 
redis 127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "test123"

b.先登录再验证:

[[email protected] redis-2.4.16]#  ./src/redis-cli -p 6379
redis 127.0.0.1:6379> 
redis 127.0.0.1:6379> auth test123
OK
redis 127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "test123"
redis 127.0.0.1:6379>

四. master 有密码,slave 如何配置?

master 有密码的时候 配置slave 的时候 相应的密码参数也得相应的配置好。不然slave 是无法进行正常复制的。

相应的参数是:

#masterauth

比如:

masterauth  mstpassword

来源: http://blog.csdn.net/lxpbs8851/article/details/8136126

来自为知笔记(Wiz)

时间: 2024-12-25 12:01:11

修补--Redis未授权访问漏洞的相关文章

Redis 未授权访问漏洞(附Python脚本)

0x01 环境搭建 #下载并安装 cd /tmp wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-2.8.17.tar.gz cd redis-2.8.17 make #启动redis服务 cd src ./redis-server 启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了. 比如: [email protected]:/tmp/redis-2.8.

Redis未授权访问漏洞的利用及防护

Redis未授权访问漏洞的利用及防护 什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP访问等,这样会使Redis服务完全暴露在公网上.如果在没有设置密码认证(一般为空)的情况下,会导致任意用户在访问目标服务器时,可以在未授权的情况下访问Redis以及读取Redis的数据.攻击者在未授权访问Redis的情况下,利用Redis自身的提供的config命令,可以进行文件的读写等操作.攻击者

docker搭建redis未授权访问漏洞环境

这是redis未授权访问漏洞环境,可以使用该环境练习重置/etc/passwd文件从而重置root密码 环境我已经搭好放在了docker hub 可以使用命令docker search ju5ton1y来搜索该镜像 构建好容器之后需进入容器对ssh服务重启 /etc/init.d/ssh restart Dockerfile如下: #Redis is not authorized to access # Base image to use, this nust be set as the fir

Redis未授权访问漏洞

一.漏洞描述和危害 Redis因配置不当可以未授权访问,被攻击者恶意利用.攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据. 攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器. 二.已确认被成功利用的软件及系统   对公网开放,且未启用认证的redis服务器. 三.建议修复方案 1.指定redis服务使用的网卡 (需

Redis未授权访问漏洞分析

catalog 1. Redis简介 2. 漏洞概述 3. 漏洞利用方式 4. 修复方式 1. Redis简介 Relevant Link: http://www.cnblogs.com/LittleHann/p/3901588.html 2. 漏洞概述 Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问 Redis 以及读取 Redis 的数据.攻击者在未授权访

Redis未授权访问漏洞复现

漏洞复现 攻击机 kali  ip:192.168.70.140 靶机 Ubuntu 16.04   ip:192.168.70.133 一.环境搭建 1.下载安装redis wgethttp://download.redis.io/releases/redis-3.2.11.tar.gz 2. 解压压缩包 tarzxvfredis-3.2.11.tar.gz. 3.进入解压目录redis-3.2.11 执行make命令 4. 进入src目录 cd redis-3.2.11/src 5.将red

关于Redis未授权访问漏洞被植入挖矿程序

1.由于安装低版本的redis,默认绑定在 0.0.0.0:6379,会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据2.此时服务公网端口被扫描到,植入挖矿程序,使用top命令可以看到cpu使用率被占满,把它kill掉cpu使用率马上就下降了,但是不一会cpu使用率又上了3.这种情况打开crontab -l 可以看到有一条被植入的定时任务或者一般也会在写在定时文件里/var/spool/cron,

Redis 未授权访问漏洞

公司的服务器被扫出redis相关漏洞,未授权的访问漏洞!就是应为没有设置密码,所以被扫描出漏洞,设置个密码就完事修改配置文件Redis的配置文件默认在/etc/redis.conf,找到如下行: #requirepass foobared去掉前面的注释,并修改为所需要的密码: requirepass myPassword (其中myPassword就是要设置的密码) 重启Redis如果Redis已经配置为service服务,可以通过以下方式重启: service redis restart如果R

redis 未授权访问漏洞和防范

通过nmap扫描开放redis 6379端口 本机安装redis客户端,能连接远端redis数据库:(redis-cli) 本机创建私钥和公钥,ssh-keygen -t rsa 一路回车:会在/root/.ssh/下生成私钥文件id_rsa和公钥id_rsa.pub redis-cli -h 192.168.3.14 链接远程redis数据库 [[email protected] bin]# ./redis-cli -h 192.168.3.14 192.168.3.14:6379> keys