修补--Redis未授权访问漏洞
--------------------------------阿里云解决方案-----------------------------------
一.漏洞描述
Redis因配置不当可以导致未授权访问,被攻击者恶意利用。当前流行的针对Redis未授权访问的一种新型攻击方式,在特定条件下,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器,可导致服务器权限被获取和数据删除、泄露或加密勒索事件发生,严重危害业务正常服务。
二.Redis安全漏洞影响
一旦入侵成功,Redis数据会丢失,攻击者可直接添加账号用于ssh远程登录控制服务器,会给用户的 Redis 运行环境以及 Linux 主机造成安全风险,引发重要数据删除、泄露或加密勒索事件发生。
三.已确认被成功利用的软件及系统
使用redis客户端直接无账号成功登录redis:
`root@kali:~# redis-cli -h 10.16.10.2redis 10.16.10.2:6379> keys *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。
# bind 192.168.1.100 10.0.0.1
2.设置防火墙策略如果正常业务中Redis服务需要被其他服务器来访问,可以设置iptables策略仅允许指定的IP来访问Redis服务。
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配置文件:
#requirepass !QE%^E3323BDWEwwwe1839
确保密码的复杂度,配置完毕后重启服务即可生效。
- 服务运行权限最小化
1.修改Redis服务运行账号 (需要重启redis才能生效)请以较低权限账号运行Redis服务,并禁用该账号的登录权限。以下为创建一个无home目录和无法登陆的普通权限账号:
#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到最新版,防止新漏洞被利用。
一. 如何初始化Redis的密码?
总共2个步骤:
a.在配置文件中有个参数: requirepass 这个就是配置redis访问密码的参数。
比如 requirepass test123
b.配置文件中参数生效需要重启重启redis 。
二.不重启redis如何配置密码?
a. 在配置文件中配置requirepass的密码(当redis重启时密码依然有效)。
# requirepass foobared
如 修改成 :
requirepass test123
b. 进入redis重定义参数
查看当前的密码:
[root@slaver251 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.在登录的时候 密码就输入
[root@slaver251 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.先登录再验证:
[root@slaver251 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
修补--Redis未授权访问漏洞的更多相关文章
- [ Redis ] Redis 未授权访问漏洞被利用,服务器登陆不上
一.缘由: 突然有一天某台服务器远程登陆不上,试了好几个人的账号都行,顿时慌了,感觉服务器被黑.在终于找到一个还在登陆状态的同事后,经查看/ect/passwd 和/etc/passwd-异常,文件中 ...
- Redis未授权访问漏洞的利用及防护
Redis未授权访问漏洞的利用及防护 什么是Redis未授权访问漏洞? Redis在默认情况下,会绑定在0.0.0.0:6379.如果没有采取相关的安全策略,比如添加防火墙规则.避免其他非信任来源IP ...
- Redis 未授权访问漏洞(附Python脚本)
0x01 环境搭建 #下载并安装 cd /tmp wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-.t ...
- docker搭建redis未授权访问漏洞环境
这是redis未授权访问漏洞环境,可以使用该环境练习重置/etc/passwd文件从而重置root密码 环境我已经搭好放在了docker hub 可以使用命令docker search ju5ton1 ...
- redis未授权访问漏洞那拿SHELL
一.什么是redis未授权访问漏洞: 1.redis是一种文档型数据库,快速高效,存储在内存中,定期才会写磁盘.主要用于快速缓存,数据转存处理等.默认redis开在6379端口,可以直接访问.并不需要 ...
- 10.Redis未授权访问漏洞复现与利用
一.漏洞简介以及危害: 1.什么是redis未授权访问漏洞: Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等 ...
- Redis未授权访问漏洞复现
Redis未授权访问漏洞复现 一.漏洞描述 Redis默认情况下,会绑定在0.0.0.0:6379(在redis3.2之后,redis增加了protected-mode,在这个模式下,非绑定IP或者没 ...
- [转帖]Redis未授权访问漏洞复现
Redis未授权访问漏洞复现 https://www.cnblogs.com/yuzly/p/11663822.html config set dirconfig set dbfile xxxx 一. ...
- 浅谈Redis未授权访问漏洞
Redis未授权访问漏洞 Redis是一种key-value键值对的非关系型数据库 默认情况下绑定在127.0.0.1:6379,在没有进行采用相关的策略,如添加防火墙规则避免其他非信任来源ip访问等 ...
随机推荐
- Python一路走来 RabbitMQ
一:介绍:(induction) Rabbitmq 是一个消息中间件.他的思想就是:接收和发送消息.你可以把它想成一个邮政局.当你把你的邮件发送到邮箱的,首先你需要确认的是:邮政员先生能把你的邮件发送 ...
- SuperMap
SuperMap iClient for JavaScript 新手入门 地理信息系统(英语:Geographic Information System,缩写:GIS)是一门综合性学科,结合地理学与地 ...
- 修改textField的placeholder的字体颜色、大小
textField.placeholder = @"username is in here!"; [textField setValue:[UIColor redColor] fo ...
- DOCKER功能练习
都是书上的示例,慢慢进入..
- 二极管IN4001~IN4007参数
电压范围50~1000V 正向导通电流1A 导通电压降:1.1V 具体见下图:
- logstash tomcat catalina.out zabbix 插件不会引起崩溃
input { file { type => "zj_api" path => ["/data01/applog_backup/zjzc_log/zj-api ...
- apache2 httpd 基于域名的虚拟主机配置 for centos6X 和debian-8
全系统虚拟主机: for debian 系统的apache2 域名 虚拟主机
- Entify Framewrok - 学习链接
http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6-loading- ...
- spring简单入门示例
1 控制反转IOC\依赖注入DI,因为翻译的不同,因此有两个名字. 控制反转意思就是说,当我们调用一个方法或者类时,不再有我们主动去创建这个类的对象,控制权交给别人(spring). 依赖 ...
- poj 3176 Cow Bowling(dp基础)
Description The cows don't use actual bowling balls when they go bowling. They each take a number (i ...