[转帖]Redis 可以禁用的高危命令

redis,可以,禁用,高危,命令 · 浏览次数 : 0

小编点评

**高危命令及其禁用方法** **命令:** * keys * flushdb * flushall * config * debug * eval * config * shutdown * script * evalsha * copy **禁用方法:** * **keys** 命令:全库扫描会导致其他命令执行慢,拖垮整个redis实例。 * **flushdb、flushall** 命令:清空redis数据库里面数据的操作本身耗时比较长,当数据量大的时候容易扩跨整个redis实例。 * **config** 命令:可以利用redis进行攻击,例如构造大量循环。 * **debug** 命令:停止redis服务。 * **eval** 命令:执行lua脚本,可以导致redis主进程僵死。 * **shutdown** 命令:停止redis服务。 * **script**、**evalsha** 和 **copy** 命令:执行lua脚本,也可以导致redis主进程僵死。 * **rename-command** 命令:可以利用这些命令执行一些危险的操作,例如清空数据、停止服务等。

正文

https://cloud.tencent.com/developer/article/2064127

 

高危命令禁用

redis一款高并发的内存K-V数据库,提供了好多命令,但是其中有部分对于生产环境来说比较危险,需要禁用掉。

keys 命令

keys 命令执行的时候是需要进行全库扫描的,因为redis执行的主线程是串行的,所以会导致其他命令也执行慢,从而拖垮整个redis实例。

flushdb、flushall 命令

flushdb、flushall是清空redis数据库里面数据的命令,禁用原因:

  • 清空数据之后,开启RDB持久化一般无法恢复了,需要开启AOF持久化才有可能恢复数据。
  • 清空数据的操作本身耗时比较长,当数据量大的时候容易扩跨整个redis实例。

config 命令

config命令可以直接修改redis加载到内存里面的配置信息,个人觉得主要是一些关键配置,比如:dir、dbfilename。这两个参数结合起来可以利用redis进行攻击,具体可以参考:https://www.freebuf.com/articles/328286.html 中webshell部分。

debug 命令

DEBUG 命令是一个内部命令。 它旨在用于开发和测试 Redis,比如下面命令,可以直接让redis停止工作10 s

debug sleep 10

eval 命令

eval 命令用于执行lua脚本,建议禁止的原因是lua脚本里面信息redis没办法控制,比如,在lua脚本里面构造大量循环,会导致redis主进程僵死。

script、evalsha命令

script、evalsha结合起来也可以执行lua脚本,原因同eval 命令

shutdown 命令

shutdown可以直接停止redis服务。属于危险命令的范畴。

高危命令禁用方法

在redis.conf 里面加入下面配置

rename-command keys ""
rename-command flushall ""
rename-command flushdb ""
rename-command debug ""
rename-command eval ""
rename-command config ""
rename-command shutdown ""
rename-command script ""
rename-command evalsha ""
 
本文转载自: https://www.zeekling.cn/articles/2022/08/02/1659370527373.html复制

与[转帖]Redis 可以禁用的高危命令相似的内容:

[转帖]Redis 可以禁用的高危命令

https://cloud.tencent.com/developer/article/2064127 高危命令禁用 redis一款高并发的内存K-V数据库,提供了好多命令,但是其中有部分对于生产环境来说比较危险,需要禁用掉。 keys 命令 keys 命令执行的时候是需要进行全库扫描的,因为red

[转帖]Redis configuration

Redis configuration Redis可以仅使用内建的默认配置启动,而不需要指定配置文件。但是,这种启动仅推荐用于测试和开发。 对于配置Redis恰当的方式是提供一个Redis配置文件,通常叫做redis.conf。redis.conf包含大量的指令,格式如下: keyword argu

[转帖]Redis数据库的备份与恢复

Redis备份 当程序有较多的任务在执行时,我们可以redis-cli模式下执行 bgsave,进入后台进行备份. Snapshot 当然我们可以直接运行save命令.会写入dump.rdb文件。 配置说明: save 900 1 #当900秒之后有一个key变化进行持久化保存 save 300 1

[转帖]redis内存限制管理--maxmemory和maxmemory-policy

https://www.cnblogs.com/zgxblog/p/14198543.html 作为内存数据库,为了防止redis占用过多的内存对其他的应用程序造成影响,可以在redis.conf文件中通过设置maxmemory选项对redis所能够使用的最大内存做限制,并通过maxmemory_p

[转帖]Redis学习六(Redis 阻塞的原因及其排查方向).

https://www.cnblogs.com/jmcui/p/13926397.html 一、慢查询 因为 Redis 是单线程的,大量的慢查询可能会导致 redis-server 阻塞,可以通过 slowlog get n 获取慢日志,查看详情情况。 回到顶部 二、bigkey 大对象 bigk

[转帖]Redis常见问题以及优化思路

https://www.zeekling.cn/articles/2022/04/10/1649579684900.html Redis存在慢查询导致请求延时 由于Redis主线程是单线程的,所以会存在慢查询会导致redis请求延时,可以参考: https://www.zeekling.cn/art

[转帖]Redis系列(十五)、Redis6新特性之集群代理(Cluster Proxy)

在之前的文章中介绍了Redis6的集群搭建和原理,我们可以使用dummy和smart客户端连接集群,本篇介绍Redis6新增的一个功能:集群代理。客户端不需要知道集群中的具体节点个数和主从身份,可以直接通过代理访问集群,对于客户端来说通过集群代理访问的集群就和单机的Redis一样,因此也能解决很多集

[转帖]Redis系列(十五)、Redis6新特性之集群代理(Cluster Proxy)

在之前的文章中介绍了Redis6的集群搭建和原理,我们可以使用dummy和smart客户端连接集群,本篇介绍Redis6新增的一个功能:集群代理。客户端不需要知道集群中的具体节点个数和主从身份,可以直接通过代理访问集群,对于客户端来说通过集群代理访问的集群就和单机的Redis一样,因此也能解决很多集

[转帖]调整Redis定期任务的执行频率

https://help.aliyun.com/document_detail/142171.html 通过修改hz参数的值,您可以调整Redis执行定期任务的频率,从而改变Redis清除过期key、清理超时连接的效率。 Redis定期任务与hz参数的关系 为了定期检测资源和服务状态并根据预定策略执

[转帖]Redis学习五(Spring Cache For Redis).

https://www.cnblogs.com/jmcui/p/8410560.html 一、概述 缓存(Caching)可以存储经常会用到的信息,这样每次需要的时候,这些信息都是立即可用的。 常用的缓存数据库: Redis 使用内存存储(in-memory)的非关系数据库,字符串、列表、集合、散列