当前位置:首页 > 服务端 > Redis安全漏洞影响及加固方法

Redis安全漏洞影响及加固方法

2022年09月17日 20:03:05服务端7

Redis安全漏洞影响及加固方法

Redis安全漏洞影响:
1、 Redis因配置不当可以未授权访问,很容易被攻击者恶意利用。如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录、控制服务器,引发重要数据泄露或丢失,严重威胁用户业务和数据安全,风险极高,业界将此漏洞定位为高危漏洞。
2、 当前业界已暴出多起因Redis漏洞导致主机被入侵、业务中断、数据丢失的安全事件,请用户务必警惕该漏洞的严重危害,防止造成无法挽回的损失。

2 安全加固措施:
Redis安全加固主要从网络访问权限、账户执行权限两个方面入手:
2.1 网络访问权限
2.1.1 设置防火墙
通过防火墙设置,充许业务ip访问,限制不必要ip访问,方法参考如下:
#例如只允许192.168.1.*这一段C类地址访问,其他IP地址禁止访问:
iptables -A INPUT -s 192.168.1.0/24,127.0.0.0/16 -p tcp --dport 6379 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROP
2.1.2修改redis.conf配置加固
如果用户仅仅是本地通讯,无需其他IP访问,则可以通过绑定127.0.0.1,确保redis本地监听,从而避免业务暴露在互联网上,方法如下:
修改/etc/redis/redis.conf 中配置,并重启redis使配置生效:
Redis安全漏洞影响及加固方法 _ JavaClub全栈架构师技术笔记

2.1.3 重命名关键命令进行加固
由于redis没有做基本的权限分离,没有管理账号、普通账户之分,所以登录之后无操作权限限制,因此需要将一些危险的操作隐藏起来,涉及的命令包括:
FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME, DEBUG, EVAL
设置方法如下,编辑/etc/redis/redis.conf文件:
Redis安全漏洞影响及加固方法 _ JavaClub全栈架构师技术笔记
上述配置将config,flushdb,flushall设置为了空,即禁用该命令,保存之后,执行/etc/init.d/redis-server restart 重启生效

2.2 账号执行权限
2.2.1 低权限账户
设置单独的redis账户运行redis,redis crackit漏洞就利用root用户的特性来重置authorized_keys从而达到控制系统主机的目的,使用普通帐号运行redis可以降低被利用的风险,如下:

创建一个redis账户,然后通过该账户启动redis,命令如下:
su - redis -c " /redis/bin/redis-server /redis/etc/redis.conf"

使用进程查看ps aux|grep redis-server可见进程以redis运行

redis 3384 0.8 0.1 137440 4168 ? Ssl 17:43 0:00 /redis/bin/redis-server 192.168.196.133:6379

2.2.2 认证
redis 默认没有开启密码认证,风险极高。手动开启认证方法:
1、打开/etc/redis/redis.conf配置文件,加入语句:requirepass Z1e4tNzOgk# 将认证密码设置为了Z1e4tNzOgk#(此密码为示例,请自行设置其它密码并妥善保管,务必注意密码复杂度不要使用含有键盘特征的密码)
2、保存redis.conf,重启redis(/etc/init.d/redis-server restart)
3 常见木马查杀方法:

一、异常进程的判断
1、 使用top命令查看当前系统进程运行情况,检查是否有异常进程,如下图占用CPU较高的进程名为一些随机字母组成(木马程序)
Redis安全漏洞影响及加固方法 _ JavaClub全栈架构师技术笔记
2、 检查其他一些名字的进程如:.sshd、getty等等,如与业务及系统无关但占用较多系统资源的进程均需留意

指令:ps aux|grep “bsd-port/getty”
Ps aux|fgrep “.sshd”

3、 用netstat -anp命令查看异常网络连接进程,以下可以看到以下标红的进程异常,因该进程使用的进程名为uptime,另外连接的远端服务器端口为2444为非常用端口
2016-01-25 15:26:40||csa-dev-provision-001||192.168.0.5||netstat -anp||tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1444/sshd
2016-01-25 15:26:40||csa-dev-provision-001||192.168.0.5||netstat -anp||tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1440/cupsd
2016-01-25 15:26:40||csa-dev-provision-001||192.168.0.5||netstat -anp||tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2042/master
2016-01-25 15:26:40||csa-dev-provision-001||192.168.0.5||netstat -anp||tcp 18888 0 192.168.0.5:60482 183.60.202.2:2444 ESTABLISHED 1459/uptime

4、 在判断到程序进程异常时,使用lsof –p 进程号方式可以看到该进程启动的程序路径,可以进一步确认是否为木马,木马程序一般会存放在/root、 /tmp等路径下,

二、 木马文件的查杀清除
1、 这些进程如果通过kill -9 pid命令杀掉,不久又会出现类似的进程。这可能是因为在/etc/cron.hourly中有自启动项(gcc4.shkill.sh),且木马进程会相互守护,一旦其中一个木马被杀掉后,其他木马程序会很快重启一个新的木马进程。此时应该通过kill –STOP pid将木马进程暂时停止,等将后续对应的木马文件全部清除后,再将进程彻底杀掉(kill -9)

Redis安全漏洞影响及加固方法 _ JavaClub全栈架构师技术笔记
2、 通过lsof –p pid查看木马进程对应的文件所在目录,找到所有可疑的木马文件并删除。常见被感染文件路径(不排除其他路径):/root/、/tmp、 /bin、/usr/sbin、/sbin、/etc/init.d、/var/tmp 木马被写入启动项:/etc/init.d/

3、 在/bin下的netstate、ps和/usr/sbin下的lsof等系统命令被替换成木马文件(原始系统文件在/usr/bin/dpkgd下,删除木马后自行替换回来即可):

执行cp /usr/bin/dpkgd/ps /bin/ps; cp /usr/bin/dpkgd/netstat /bin/netstat cp /usr/bin/dpkgd/lsof /usr/sbin/lsof

4、 通过kill -9 pid命令杀掉所有可疑木马进程。

5、 清除免密登录文件:/root/.ssh/authorized_keys

6、 检查是否存在未知的新建系统账号,如‘Redistoor’,有则删除;修改常用账号密码

作者:qq_40770143
来源链接:https://blog.csdn.net/qq_40770143/article/details/83029930

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/42836.html

标签: Redis
分享给朋友:

“Redis安全漏洞影响及加固方法” 的相关文章

Redis的搭建(win和linux版)

Redis的搭建(win和linux版)

一、Redis是什么 redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis是一种非关系型数据库,我们常用的数据库,例如mysql、Oracle、Sql Server都属于关系型数据库,Redis的...

Docker的安装和Redis容器

Docker的安装和Redis容器 Docker安装,环境:虚拟机CentOS 8;阿里云镜像加速;Redis容器创建。 CentOS 8的安装就不在这里演示了 连接CENTOS 使虚拟机与物理机在同一网段...

Spring Boot 整合 Redis 实现缓存操作

Spring Boot 整合 Redis 实现缓存操作

摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 产品没有价值,开发团队再优秀也无济于事 – 《启示录》 』...

分布式|你有了解过redis过期策略么?

十二、redis的过期策略 定期删除 策略 每100ms随机抽查删除过期数据 缺点 可能残留大量没有抽查过的数据 惰性删除 策略 每次访问数据时,先判断是否过期...

项目引入sleuth链路追踪,redis报错:Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in class path resource

项目引入sleuth链路追踪,redis报错:Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in class path resource

    springCloud项目中,引入sleuth之后,报:Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer' defined in class path res...

SpringBoot + Redis:基本配置及使用

SpringBoot + Redis:基本配置及使用

注:本篇博客SpringBoot版本为2.1.5.RELEASE,SpringBoot1.0版本有些配置不适用 一、SpringBoot 配置Redis   1.1 pom 引入spring-boot-starter-data-redis 包...

Python自动化测试面试题-Redis篇

目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试题-Redis篇 Python...

分布式|进入BAT必备指 使用Redis实现分布式锁

十三、Redis实现分布式锁 为什么要使用分布式锁? 我们在多线程开发过程中,肯定没避免不了使用锁,jdk中也提供了大量的锁功能,但是我们为什么还要手动开发一个分布式锁呢,原因在于我们在传统项目中使用的锁实在同一个进程中的,他们能够...

Redis 安装

Redis 安装

操作系统是centos7系统,redis版本6.24 包含原始安装和docker安装两种方式 1、原始安装 安装C语言需要的GCC环境 yum install -y gcc-c++ yum install -y wget  ...

Redis安装教程

Redis安装教程

安装Redis 任务描述 (1)安装Redis 任务实施 第一步、浏览器访问https://github.com/microsoftarchive/redis/tags(此为windows版本,如在Linux上请访问https://redis.io/dow...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。